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 смогут вместить на один условный сервер много больше проектов, в случае если большая часть страниц будут просто статическими файлами.

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

RaiffeisenBank - один из системно значимых банков Россиию
Ozon Fintech — технологичное подразделение экосистемы Ozon, разрабатывающее инновационные финансовые сервисы для 30+ млн пользователей. Команда создаёт продукты с нуля на микросервисной архитектуре, самостоятельно реализуя ключевые системы: банковское ядро, процессинг, AML-платформы и интеграции с платёжными сервисами, минимизируя legacy-код.
Яндекс — технологическая компания, которая создает инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Звук — hifi-аудиомузыкальный сервис, который помогает пользователям находить и слушать музыку под настроение и стиль жизни. Фокусируется на персонализации, умных рекомендациях и удобном пользовательском опыте. Предлагает удобные подборки для любого настроения и подписку с широким каталогом треков.
Яндекс Go — продуктовая компания с устойчивой Data Driven-культурой, где все решения анализируются и проверяются с оглядкой на данные, а скрипт на Python или SQL может написать любой.
VK — это более 200 технологичных и высоконагруженных проектов, свыше 15 000 сотрудников. ВКонтакте, ОК, VK Cloud, Дзен, Маруся, VK Play — это лишь часть продуктов VK, которыми ежедневно пользуются миллионы людей. ВКонтакте — крупнейшая социальная сеть в России. Команда ВКонтакте разрабатывает технологические решения, которые отвечают критериям быстродействия, отказоустойчивости и качества, чтобы пользователи получали максимум для общения, работы, учебы, развлечения и творчества.
MiOps — провайдер IT-решений, который помогает бизнесу создавать, развивать и поддерживать современную инфраструктуру цифровых продуктов. Мы автоматизируем процессы разработки и эксплуатации, строим отказоустойчивые платформы, внедряем технологии искусственного интеллекта и обеспечиваем стабильную работу критически важных сервисов.
Т‑Банк — онлайн-экосистема, основанная на финансовых и лайфстайл-услугах. Клиентами Т‑Банка стали 52 млн человек по всей России. Т‑Банк — второй крупнейший банк страны по количеству активных клиентов
Райффайзен Банк, один из самых надежных российских банков, который создает финансовые решения для частных и корпоративных клиентов
VK — это более 200 технологичных и высоконагруженных проектов, свыше 15 000 сотрудников. ВКонтакте, ОК, VK Cloud, Дзен, Маруся, VK Play — это лишь часть продуктов VK, которыми ежедневно пользуются миллионы людей. ВКонтакте — крупнейшая социальная сеть в России. Команда ВКонтакте разрабатывает технологические решения, которые отвечают критериям быстродействия, отказоустойчивости и качества, чтобы пользователи получали максимум для общения, работы, учебы, развлечения и творчества.
GoRunDebug - что пришло в голову когда пришла идея поработать над интересным для меня направление.
Яндекс — технологическая компания, которая создает инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
AdminDivision — 15 лет, инфраструктура для высоконагруженных и бизнес-критичных систем: DevOps, Kubernetes, мониторинг. Впрод — вендор инфраструктурного софта, продукт LLMaaS: платформа для запуска LLM в production на open-source стеке.
Яндекс — технологическая компания, которая создает инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Яндекс — российская технологическая компания: начинала как поисковик, а сейчас это большая экосистема сервисов (поиск, карты, такси, музыка, маркетплейс и др.). Развивает ИИ-технологии и строит высоконагруженные системы.
Одна из самых быстрорастущих финтех-компаний в России. Мы создаем финансовые сервисы, которые встроены в повседневную жизнь клиентов.
Сбер — крупнейший банк в России, поставщик технологических решений и один из ведущих финансовых институтов страны. SberDevices — исторически технологический стартап внутри Сбера, который создал «умные» устройства Sber, Jazz (платформу видеозвонков), GigaChat и многое другое.
Райффайзен Банк, один из самых надежных российских банков, который создает финансовые решения для частных и корпоративных клиентов
X5 Tech — IT-компания и основной цифровой партнёр торговых сетей и бизнесов X5. Команда из более 5000 специалистов разрабатывает решения, которые помогают более 417 тыс. сотрудникам группы работать с максимальным технологическим комфортом, а миллионам покупателей быстро и удобно покупать свежие продукты. Мы доказываем, что супермаркет — это тоже цифровой проект, в котором есть место большим данным, машинному зрению, мобильным приложениям и многому другому. В команде Х5 Tech сосредоточена экспертиза специалистов, которые отвечают за цифровое развитие всей компании.
Яндекс — технологическая компания, которая создает инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
X5 Tech — IT-компания и основной цифровой партнёр торговых сетей и бизнесов X5. Команда из более 5000 специалистов разрабатывает решения, которые помогают более 417 тыс. сотрудникам группы работать с максимальным технологическим комфортом, а миллионам покупателей быстро и удобно покупать свежие продукты. Мы доказываем, что супермаркет — это тоже цифровой проект, в котором есть место большим данным, машинному зрению, мобильным приложениям и многому другому. В команде Х5 Tech сосредоточена экспертиза специалистов, которые отвечают за цифровое развитие всей компании.
- Компания Virtual Minds - старейший adtech Германии, обслуживающий одни из самых крупных немецких компаний в publisher adserving, DSP, и SSP. - Tarantool - отечественная база данных от VK, с сервером приложений на борту, ориентированная на сверхвысокие OLTP нагрузки и исполнение кода прямо в базе.
РТЛабс — разработчик Госуслуг. Мы развиваем цифровую экосистему портала gosuslugi.ru и работаем над тем, чтобы изменить представление о государственных сервисах. Команда РТЛабс работает по agile, и наша главная метрика — довольный пользователь.
Райффайзен Банк, один из самых надежных российских банков, который создает финансовые решения для частных и корпоративных клиентов
Одна из самых быстрорастущих финтех-компаний в России. Мы создаем финансовые сервисы, которые встроены в повседневную жизнь клиентов.
Raft — это компания, которая специализируется на разработке и интеграции решений с использованием новейших AI-технологий.
Битрикс24 — одна из крупнейших IT-компаний России. Уже более 25 лет создают продукты, которые помогают работать бизнесу во всем мире. В их онлайн-сервисе собраны все нужные инструменты для работы компании и управления бизнесом. Среди них: сервис для создания, поддержки и развития веб-проектов, готовый набор инструментов для совместной работы компании и CRM-система.
Битрикс24 — одна из крупнейших IT-компаний России. Уже более 25 лет создают продукты, которые помогают работать бизнесу во всем мире. В их онлайн-сервисе собраны все нужные инструменты для работы компании и управления бизнесом. Среди них: сервис для создания, поддержки и развития веб-проектов, готовый набор инструментов для совместной работы компании и CRM-система.
Ви.Tech – Это компания занимающаяся разработкой для крупнейшего в россии DIY магазина
HIPER — международный производитель IT-техники для бизнеса и потребителей, на рынке с 2001 года. Продуктовый портфель: ноутбуки, мониторы, моноблоки, мини-ПК, серверное оборудование, ИБП и интерактивные панели. Произведено и продано 3 955 636 устройств корпоративного назначения; производственная мощность — до 50 000 устройств в месяц, спецпроизводство под проект — от одного месяца. Решения HIPER адаптированы для российских пользователей и закрывают ИТ-инфраструктуру бизнеса любого размера. Компания обеспечивает оперативное сервисное обслуживание и техническую поддержку через авторизованную сеть сервисных центров по всей стране. HIPER — технологии, создающие возможности.
Сбер — крупнейший банк России и технологическая компания, чья экосистема закрывает финансы, e-commerce, медиа и облачные сервисы. В команде десятки тысяч специалистов в IT, кибербезопасности и AI: собственные Big Data-платформы, модели GigaChat и Kandinsky, исследования в Институте искусственного интеллекта. Один из крупнейших IT-работодателей страны.
Selectel — крупнейший независимый провайдер сервисов IT-инфраструктуры в России. Они создают облачные решения и предлагаем в аренду серверы, которые размещаем в своих дата-центрах в России. За каждым продуктом — опыт и экспертиза 1000+ сотрудников. Админы в Selectel работают с высоконагруженными сервисами, выстраивают и поддерживают инфраструктуру огромных масштабов. В компании 13 команд и направлений работы системных администраторов: от CloudOPS до Ceph-инженеров.
Сбер — крупнейший банк России и технологическая компания, чья экосистема закрывает финансы, e-commerce, медиа и облачные сервисы. В команде десятки тысяч специалистов в IT, кибербезопасности и AI: собственные Big Data-платформы, модели GigaChat и Kandinsky, исследования в Институте искусственного интеллекта. Один из крупнейших IT-работодателей страны.
платформы разработки приложений, интеграции, биллинг, телеком, немного финтеха, куча сервисов, всё норм, как сами
МТС — мультисервисная цифровая экосистема и ведущий телеком-оператор в России. Компания развивает сервисы и продукты в сфере больших данных, искусственного интеллекта, облачного хранения, медиа и финансов, телекоммуникаций. Штат IT-специалистов превышает 9,5 тыс. человек.
VK — это более 200 технологичных и высоконагруженных проектов, свыше 15 000 сотрудников. ВКонтакте, ОК, VK Cloud, Дзен, Маруся, VK Play — это лишь часть продуктов VK, которыми ежедневно пользуются миллионы людей. ВКонтакте — крупнейшая социальная сеть в России. Команда ВКонтакте разрабатывает технологические решения, которые отвечают критериям быстродействия, отказоустойчивости и качества, чтобы пользователи получали максимум для общения, работы, учебы, развлечения и творчества.
МТС — мультисервисная цифровая экосистема и ведущий телеком-оператор в России. Компания развивает сервисы и продукты в сфере больших данных, искусственного интеллекта, облачного хранения, медиа и финансов, телекоммуникаций. Штат IT-специалистов превышает 9,5 тыс. человек.
Вебпрактик разрабатывает сервисы и продукты для крупнейших корпораций в стране, много лет входит в топы разработчиков в премиум-ценовом сегменте.
Яндекс – технологическая компания, которая создает инновационные продукты и сервисы на основе машинного обучения и нейронных сетей. Компания объединяет более 85 пользовательских сервисов. Основные бизнес-направления компании – поиск и портальные сервисы, электронная коммерция, сервисы объявлений, фантех, сервисы онлайн-заказа такси и заказа еды, автономный транспорт. Яндекс также предлагает продукты для рекламодателей и владельцев бизнеса.
Служила в Московском Новом Драматическом Театре. Участвует в независимых театральных проектах. С 2016 года преподавала технику речи в школе телевидения ex-tv. С 2019 года преподаватель курсов раскрепощения и творческой свободы в Школе молодых лидеров. С 2020 года преподаватель собственного курса по импровизации и раскрепощению в высшей школе медиа коммуникации.
Райффайзен Банк, один из самых надежных российских банков, который создает финансовые решения для частных и корпоративных клиентов
Rambler's Top100