Highload++ 2017 завершён!

Профессиональная конференция разработчиков высоконагруженных систем

СКОЛКОВО, Москва 7 и 8 ноября

11-я ежегодная конференция для разработчиков highload-систем, которая соберет   2 700 участников из разных регионов России и мира. Мероприятие направлено на обмен знаниями о технологиях, позволяющих одновременно обслуживать многие тысячи и миллионы пользователей.

Программа охватывает такие аспекты веб-разработок, как архитектуры крупных проектов, базы данных и системы хранения, системное администрирование, нагрузочное тестирование, эксплуатация крупных проектов и другие направления, связанные с высоконагруженными системами.

Автоматическое создание статической версии сайта с помощью кэширования в статику
Основная секция

Доклад принят в Программу конференции
BI.ZONE — компания по управлению цифровыми рисками. Мы создаем IT-продукты для обеспечения кибербезопасности: от мобильных приложений до сложных платформ, в основе которых лежат методы машинного обучения.

Тезисы

Тезисы:

Одним из ключевых моментов архитектуры современного высоконагруженного веб-проекта является система кэширования. Если представить веб-приложение как трехслойный пирог, то он будет состоять из:

  • фронтенд-системы, для быстрой отдачи статического и кэшированного контента (nginx, lighttpd, etc.)
  • бэкэнд-системы, для генерации динамического контента (Apache, spawn-fcgi, на которых крутится интерпретатор того или иного языка, например: PHP, Perl или виртуальная машины Java).
  • СУБД, для операций с данными, (MySQL, Postgres).

В каждом из этих слоев есть свои подсистемы кеширования: встроенные механизмы кэширования результатов выборок для СУБД, Опкод кэшеры и кэшеры промежуточных данных для уровня бэкенда, различные mod_proxy и mod_cache для фронтенд серверов.

Давайте представим на минуту, что у нас нет всех этих замечательных "ускорителей интернета". Тогда любой запрос полученный сервером от пользователя пройдет все три ступени от фронтенда к БД: сначала фронтенд получит запрос на генерацию страницы, передаст его бэкенду, который загрузит с диска и (во многих случаях ) начнет интерпретировать код через соответствующий интерпретатор, в свою очередь, пойдет за данными в БД, которая будет выбирать из файлов на диске.

Я люблю, когда скорость реакции веб-сервиса на мое действие не превышает 100 мс, а при такой дорожке запроса и высокой нагрузке такая цифра просто недостижима. Возвращая на место кеширование, мы можем постепенно снижать нагрузку на слои приложения снизу вверх. Если кешировать данные в кешер бэкенда, то можно сократить количество запросов к БД. Если кешировать на фронтенде в память страницы, то можно разгрузить бэкенд.

Идея в том чтобы оставаться как можно выше в слоях приложения как это только возможно. Помимо скорости отдачи это дает возможность скейлить горизонтально только фронтенды, а под ними держать бэкенды под различные задачи. Ведь в большинстве случаев операции по изменению/добавлению информации происходят гораздо реже чем операции чтения.

И тут мы подходим к кульминации. Вспомнив то, что lighttpd и nginx лучше всего отдают статику, то можно с помощью них эту самую статику и отдавать. Около шести лет назад, обозревая интернет (когда UGC был еще не в моде) я задавался вопросом, зачем иметь столько динамических страниц, которые вполне себе могут быть статическими HTML файлами. Не найдя внутри себя никаких концептуальных противоречий этой идее, я начал искать в ней технические изъяны. Таких оказалось ровно четыре:

  • Часто 90% страницы может быть закешировано навека (статья в блоге), а комментарии, например, могут обновляться с определенной частотой.
  • На странице может быть блок персональной информации пользователя, которая для каждого посетителя уникальна.
  • При изменениях какой-либо информации необходимо знать какие еще статические страницы ее отображают чтобы их обновить.
  • Может появиться огромное количество файлов, которые будут давать существенную нагрузку на файловую систему.

Первая проблема долго не давала мне покоя, пока я не подумал об SSI, старой доброй технологии сборки страниц на сервере. Таким образом можно собрать страницу из кусочков, которые можно обновлять независимо друг от друга.

Вторая проблема решается персональным кешированием, идентификатором является куки сессии, получаемое от пользователя. Третья проблема на данный момент широко известна в системах кеширования на бэкенде, существуют варианты связывания элементов кеша через теги. Я думаю было бы правильно просто убивать все файлы, которые связаны с изменяемой сущностью, чтобы он потом сгенерились по требованию.

Четвертая проблема носит неявный характер, я проектировал систему в которой 6 миллионов статических файлов, которые расположены в директориях по части md5 от их имени: /05/fe/index.html. Под большой нагрузкой (60 тыс. посетителей в сутки) такая структура не вызывала никаких проблем.

Все вместе.

Итак, я хочу взять быстрый и легкий фронтенд сервер lighttpd, отправлять ему запросы, в случае удовлетворения которых, он помимо отдачи этих страниц генерил бы статические html файлы и раскладывал-бы их так, чтобы при следующем таком запросе отдавались бы они. Первый вариант был сделать это через ssi+errorhandler-404. Генератор вешается на 404 обработчик, и если URI запроса удовлетворяет условию, то генерится файл, если нет, то браузер получает 404. Сразу же выяснилось, что ssi в лайти не поддерживает саб-реквесты (то есть include-virtual не вызывает еще одну http-транзакцию, а просто пытается найти и отдать содержимое файла) и проблема персонального кеша тоже не решается, так как в ssi нет средств для получения кук пользователя.

В общем ничего не оставалось, как писать модуль для лайти. В результате месяца упорной работы появились mod_cache_indexfile и mod_ext_ssi. Первый перехватывает все ошибочные 404 запросы и вызывает генератор для создания и отдачи статических файлов. Второй расширяет возможности ssi для подключения внутренних и персональных блоков.

Список директив для модулей:

mod_cache_indexfile

  • gen-cache.bin-path = "/usr/bin/php-cgi" - fastcgi интерпретатор, который будет запускать скрипт генератора.
  • gen-cache.generator-path = "/mymedia/projects/test-cache/generator.php" - путь к скрипту генератора.
  • cache-index-file.name = "index.html" - имя файла, который будет создаваться как индекс директории. При запросе /myposts/brand_new_lighttpd_mod/ будет создана такая структура папок и файлов: project/www/myposts/brand_new_lighttpd_mod/index.html

mod_ext_ssi

  • ssi-ext.extension = ( ".html" ) - расширение, файлы с которым будет обрабатывать модуль.
  • cache-file.cookie-name = "personalCache" - имя куки, из которого будет вычитываться уникальный идентификатор пользователя, для создания персонального кеша.

Модуль mod_ext_ssi делает доступными следующие SSI инструкции:

  • - для подключения блоков с поддержкой генерации статики внутри страниц.
  • - для подключения блоков персональной информации с поддержкой генерации статики внутри страниц.

На данный момент модули полностью готовы и я планирую их внедрение в своем следующем проекте. (Частично концепция уже используется в моем предыдущем проекте.)

Вообще кешировать в статику при стремительно наступающих SSD (стирает границы между ОЗУ и ПЗУ) и Cloud Computing может стать очень перспективно. Это также дает отличные возможности для CMS систем, в которых можно использовать такой механизм для разделения статических и динамических страниц. И хостеры таких CMS смогут вместить на один условный сервер много больше проектов, в случае если большая часть страниц будут просто статическими файлами.

Другие доклады секции
Основная секция

Яндекс — технологическая компания, которая создает инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Лемана ПРО (Леруа Мерлен) — лидер рынка DIY в России. Переосмысливают DIY-ретейл так же, как другие технологические лидеры до этого меняли банкинг и IТ-сервисы. В компании можно с нуля создавать диджитал-решения, примерять разные роли, использовать современные технологии, запускать новые продукты.
Помощь в повышении квалификации для работающих разработчиков и open source-разработка.
AgentArea - безопасная платформа для управления ИИ-агентами. Молодая команда уже стала финалистом AI Championship в кибербезопасности.
Servicepipe Компания-разработчик продуктов для высокоточной защиты от кибератак, активно развивающая технологии анализа трафика и защиты от автоматизированных угроз на L3–L7. На базе собственных технологий Servicepipe реализует сервисы по защите от продвинутых ботов, DDoS- и целевых атак.
Компания Maxim Technology занимается разработкой ПО и баз данных. Наши приложения используют Сервисы такси, миллионы пользователей ежедневно заказывают автомобиль через наше ПО. Наши сервисы успешно обрабатывают сотни тысяч запросов в минуту, миллионы заказов в день, благодаря распределенной инфраструктуре, собственным дата-центрам, инновационным решениям и разработкам.
Инфраструктурная платформа Genesis Core максимально упрощает «пользовательский путь» разработчика, от первой строчки и до деплоя на прод через локальные стенды.
Яндекс — технологическая компания, которая создаёт инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Авто.ру — это проект Яндекса, который помогает людям купить или продать машину
Лемана ПРО (Леруа Мерлен) — лидер рынка DIY в России. Мы переосмысливаем DIY-ритейл так же, как другие технологические лидеры до этого меняли банкинг и ИТ-сервисы. В компании можно с нуля создавать диджитал-решения, примерять разные роли, использовать современные технологии, запускать новые продукты.
MAGNIT TECH — IT-компания, которая трансформирует один из крупнейших ритейлеров страны. Это более 5000 сотрудников, 800+ систем, 260+ проектов и одна цель: изменить ритейл в такт передовым технологиям. Мы не просто обслуживаем процессы, мы проектируем инновации с нуля, запускаем флагманские продукты и перестраиваем логику ритейла – от логистики и аналитики до клиентских платформ и AI-решений.
Группа компаний VK это крупнейшая ИТ компания, которая объединяет в себе социальные платформы, почту, облако, образовательные и технологические сервисы для пользователей и компаний.
X5 Tech — IT-компания и основной цифровой партнер X5 Group. Разрабатывает онлайн- и офлайн-решения, которые помогают более 392 тысячам сотрудников группы работать с максимальным технологическим комфортом, а миллионам покупателей — быстро и удобно покупать свежие продукты.
ROGII — международная компания, разрабатывающая продукты для геонавигации.
Servicepipe Компания-разработчик продуктов для высокоточной защиты от кибератак, активно развивающая технологии анализа трафика и защиты от автоматизированных угроз на L3–L7. На базе собственных технологий Servicepipe реализует сервисы по защите от продвинутых ботов, DDoS- и целевых атак.
АО ИНЛАЙН ГРУП - российская компания с 25 летней историей, классический ИТ системный интегратор. Продукт ИКСАР выведен на рынок в 2018 году и на данный момент занимает лидирующие позиции на рынке AR для Промышленности. Сайт продукта: https://iksar.pro/ ТГ канал продукта: https://t.me/iksarpro
Пишут системы автоматизации бизнеса, стартапы, ботов, системы аналитики, личные кабинеты торговых систем и др. Если вы хотите сделать IT-продукт от простого бота до бэкофиса торговых систем, но не знаете, как и с чего начать, то проконсультируют вас и, при необходимости, сделают продукт под заказ или вместе с вами.
Сбер — это современный стек технологий, драйвовые проекты и команда единомышленников. У них около 3 000 продуктовых команд и огромное профессиональное IT-сообщество. Работают над созданием удобных онлайн-сервисов в самых разных сферах.
На Авито каждый может найти что-то своё среди миллионов частных объявлений и предложений компаний. У них десятки тысяч RPS к бэкенду, терабайты картинок в хранилище и мощная система автоматизированной модерации на базе машинного обучения. Каждый месяц сервисом пользуется треть населения России.
МФТИ / Физтех — ведущий российский исследовательский университет. Насчитывает 10 Нобелевских лауреатов. В топ‑100 глобального рейтинга Times Higher Education. Десятки научных школ, международные лаборатории, одни из сильнейших программ.
ООО Группа Лоджик Старс является ведущим игроком на рынке IT и уже более 20 лет разрабатывает высококачественное программное обеспечение в сфере автобизнеса. Специализируются на создании инновационных решений, которые помогают ихклиентам оптимизировать бизнес-процессы, повышать эффективность и достигать высоких результатов.
На Авито каждый может найти что-то своё среди миллионов частных объявлений и предложений компаний. У нас десятки тысяч RPS к бэкенду, терабайты картинок в хранилище и мощная система автоматизированной модерации на базе машинного обучения. Каждый месяц сервисом пользуется треть населения России.
Билайн — один из ведущих поставщиков телекоммуникационных услуг в России.
Сбер — это современный стек технологий, драйвовые проекты и команда единомышленников. У них около 3 000 продуктовых команд и огромное профессиональное IT-сообщество. Работают над созданием удобных онлайн-сервисов в самых разных сферах.
Российская ИТ-компания Axenix предоставляет услуги в областях стратегии и бизнес-консалтинга, цифровых сервисов, облачных технологий и решений для цифровой трансформации бизнеса. Эксперты Axenix помогают реализовывать полномасштабные end-to-end проекты, от создания бизнес- и ИТ-стратегий до их полноценного внедрения, включая разработку технологических решений и программного обеспечения. Компания является одним из технологических лидеров и регулярно выводит на российский рынок инновационные импортозамещающие решения и продукты, многие из которых отмечены престижными отраслевыми премиями
Компания Maxim Technology занимается разработкой ПО и баз данных. Наши приложения используют Сервисы такси, миллионы пользователей ежедневно заказывают автомобиль через наше ПО. Наши сервисы успешно обрабатывают сотни тысяч запросов в минуту, миллионы заказов в день, благодаря распределенной инфраструктуре, собственным дата-центрам, инновационным решениям и разработкам.
MWS (МТС Web Services) - облачный сервис для внутреннего и внешнего пользователя
MTS Digital, KION - онлайн кинотеатр, который раздает десятки гигабит видео в секунду и делает жизнь чуть интереснее
Мы делаем ИТ для ритейла реального времени. Чтобы все нужные товары и продукты могли попадать домой к людям мгновенно, насколько это возможно в физическом мире – с помощью технологий. На наших решениях работают Самокат, Мегамаркет, логистические системы. Компания выросла из команды Samokat.tech — наше видение всегда было шире одного пользовательского сервиса. Мы хотим изменить саму модель потребления, чтобы люди по-другому относились к покупкам и своему времени. В команде больше 5000 человек — мы большие и разные, стремимся к балансу между технической выверенностью и фокусом на бизнес-ценность, уважаем процессы и избегаем закостенелости. Делаем продукты, которыми пользуемся сами.
СберЗдоровье — российская медицинская компания, специализирующаяся на телемедицинских услугах и цифровых решениях в области здравоохранения.
На Авито каждый может найти что-то своё среди миллионов частных объявлений и предложений компаний. У них десятки тысяч RPS к бэкенду, терабайты картинок в хранилище и мощная система автоматизированной модерации на базе машинного обучения. Каждый месяц сервисом пользуется треть населения России.
В «Магните» занимается управлением портфелем IT-проектов, трансформацией IT-вертикали, а также контролирует эффективность производственного цикла. Одна из задач — повышение эффективности управления изменениями для бизнес-заказчиков.
SberDevices — это компания полного цикла. Мы создаём идеи, самостоятельно разрабатываем продукты, занимаемся прототипированием, конструированием, придумываем дизайн, программные решения, контролируем качество на фабриках и создаём инструменты для аппаратного тестирования.
Объединенная компания Wildberries & Russ — международная IT-компания, лидер рынков e-commerce и наружной рекламы в России. Образована в результате слияния крупнейшего маркетплейса СНГ Wildberries и оператора наружной рекламы Russ. Бизнес-модель Wildberries & Russ построена на использовании технологий. Компания активно развивает собственную IT-инфраструктуру, а также продукты для покупателей, продавцов, рекламодателей и других категорий пользователей.
Яндекс Go — продуктовая компания с устойчивой Data Driven-культурой, где все решения анализируются и проверяются с оглядкой на данные, а скрипт на Python или SQL может написать любой.
Сбер — это современный стек технологий, драйвовые проекты и команда единомышленников. У них около 3 000 продуктовых команд и огромное профессиональное IT-сообщество. Работают над созданием удобных онлайн-сервисов в самых разных сферах.
AG-LEGAL — юридический консалтинг, сопровождающий IT-компании, а также крупные федеральные компании по вопросам интеллектуальной собственности, категорирования КИИ, персональных данных, включением в реестр отечественного ПО.
Ви.Tech – Это компания занимающаяся разработкой для крупнейшего в россии DIY магазина
Яндекс — технологическая компания, которая создаёт инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Лемана ПРО (Леруа Мерлен) — лидер рынка DIY в России. Мы переосмысливаем DIY-ритейл так же, как другие технологические лидеры до этого меняли банкинг и ИТ-сервисы. В компании можно с нуля создавать диджитал-решения, примерять разные роли, использовать современные технологии, запускать новые продукты.
Команда Т-Банка — это разработчики, тестировщики, SRE-инженеры, архитекторы, аналитики, продакт-менеджеры, дизайнеры и другие специалисты. Вместе они создают финтех-продукты, которыми пользуются около 50 миллионов клиентов. Т-Банк развивает IТ-индустрию, активно внедряет современные технологии и делится экспертизой.
AgentArea — безопасная платформа для управления ИИ-агентами. Молодая команда уже стала финалистом AI Championship в кибербезопасности.
НЛМК ИТ — команда, которая делает IT-системы для металлургии и генерит существенную часть успеха Группы НЛМК, лидера среди российских производителей стали. В их готовой продукции нет ни единой строчки кода, но в ее производстве участвует большая IT-команда. Поэтому они немножечко IT-металлурги. Делают цифру реальностью!
МТС — одна из ведущих экосистемных компаний России. Предоставляет услуги мобильной и фиксированной связи, решения в области объединенных коммуникаций, интернета вещей, обработки данных, облачных вычислений и кибербезопасности. Штат IT-специалистов компании превышает 8 000 человек.
Миссия компании — обучить хотя бы 15% руководителей современным методикам управления и сделать Россию лидером в области корпоративного менеджмента.
Разрабатывают софт для СберТех. Отдел занимается развитием Open Source-продуктов: Apache Ignite, Apache Kafka, Postgresql.
Компания Биокад — биотехнологическая компания полного цикла, то есть занимается как разработкой, так и производством лекарственных препаратов. В компании более 3000 сотрудников. Треть из них с научными степенями. IТ-департамент — более 250 человек.
Rambler's Top100