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

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

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

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

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

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

Доклад принят в Программу конференции
Сберба́нк - российский финансовый конгломерат, крупнейший универсальный банк России и Восточной Европы.

Тезисы

Тезисы:

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

  • фронтенд-системы, для быстрой отдачи статического и кэшированного контента (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 пользовательских сервисов, которые помогают людям в повседневных заботах.
Postgres Professional — разработчик российской системы управления базами данных Postgres Pro. СУБД входит в Единый реестр российского программного обеспечения и выпускается в редакциях: Postgres Pro Enterprise, Postgres Pro Standard, Postgres Pro Shardman, их сертифицированные ФСТЭК версии. Специалисты компании оказывают поддержку полного цикла: аудит, помощь в миграции, техподдержку 24х7 и SLA, обучение, заказные разработки, сертификацию специалистов. По данным исследования ЦСР за 2022 год, компания возглавляет рейтинг российских разработчиков СУБД. Команда Postgres Professional также активно развивает свободно распространяемую СУБД PostgreSQL. Занимает 1 место в России и 2 — в мире по вкладу в открытый код PostgreSQL.
Ozon — лидирующая платформа e-commerce в России. В команде Ozon Tech 3 800 инженеров — и она продолжает расти. Десятки миллионов людей пользуются сервисами Ozon, их IT-инфраструктура управляет миллионами процессов каждый час. Микросервисы на Go и C#, в стеке технологий есть Vue.js, Swift и Kotlin, Kubernetes, Kafka, Hadoop и ClickHouse.
Группа «Иннотех» — это современная высокотехнологичная быстроразвивающаяся ИТ-компания, входит в Холдинг Т1. С 2020 года мы разрабатываем инновационные решения для цифровизации бизнеса. Группа «Иннотех» выстраивает партнерские отношения с ведущими компаниями финансового сектора, предлагая им комплексные решения для фронт- и бэк-офисов, современные финтех-продукты, системы работы с большими данными. Кроме того, группа «Иннотех» выполняет на заказ технологические проекты любой сложности, помогая своим клиентам на пути цифровой трансформации.
Raft — разработчик приложений, ИИ-систем и ИТ-инфраструктуры для бизнеса. Компания проектирует решения с использованием генеративного ИИ, включая YandexGPT, ChatGTP и LLaMA, помогает с миграцией в облако, организацией CI/CD и внедрением Kubernetes. Raft работает с клиентами из сфер ИТ, медицины, финансов, логистики, ритейла, образования и фудтеха. Среди них — Microsoft, X5 Group, DNS, Amwell, «БКС Мир инвестиций» и ВТБ. Разработчик специализируется на чат-ботах, инструментах анализа речи для оценки качества обслуживания и решениях по безопасности. Raft разрабатывает инструменты на базе облачных сервисов Yandex Cloud, включая YandexGPT API, Yandex SpeechKit и Yandex SpeechSense.
Команда Т-Банка — это разработчики, тестировщики, SRE-инженеры, архитекторы, аналитики, продакт-менеджеры, дизайнеры и другие специалисты. Вместе они создают финтех-продукты, которыми пользуются около 40 миллионов клиентов. Т-Банк развивает ИТ-индустрию, поддерживает комьюнити и делится экспертизой.
«Газпромбанк» (Акционерное общество) — один из крупнейших универсальных финансовых институтов России, предоставляющий широкий спектр продуктов и услуг корпоративным и частным клиентам, финансовым институтам, институциональным и частным инвесторам.
Строят публичную облачную платформу Yandex Cloud, чтобы дать компаниям доступ к технологиям и сервисам, которые проверены нагрузками Яндекса. Продукты Yandex Cloud — это масштабируемая инфраструктура, сервисы хранения данных, инструменты машинного обучения и средства разработки.
Tarantool — middleware для эффективного создания высоконагруженных сервисов. Сочетает в себе сервер приложений, гибридное хранилище данных, а также инструменты и средства масштабирования. Производительность систем на Tarantool может достигать 1 млн транзакций в секунду.
Tarantool — middleware для эффективного создания высоконагруженных сервисов. Сочетает в себе сервер приложений, гибридное хранилище данных, а также инструменты и средства масштабирования. Производительность систем на Tarantool может достигать 1 млн транзакций в секунду.
Яндекс 360 — это виртуальное пространство, в котором собраны сервисы для работы и повседневных задач: Почта, Диск для хранения файлов, Телемост с видеозвонками, Документы, Мессенджер, Рассылки, Заметки и Календарь. Яндекс 360 помогает организовать работу как одному человеку, так и целой команде организации в рамках продуктов Яндекс 360 для бизнеса.
Samokat.tech — продуктово-технологическая команда, которая делает ИТ для ритейла реального времени. От доставки продуктов и товаров для дома за 15 минут до развития нового слоя городской инфраструктуры для мгновенной доставки любых товаров – с помощью технологий.
IT-компания и основной цифровой партнер торговых сетей и бизнесов X5 Group. Команда из более 3500 специалистов разрабатывает решения, которые помогают 325 тысячам сотрудников группы работать с максимальным технологическим комфортом, а миллионам покупателей быстро и удобно покупать свежие продукты.
Garage Eight — международная продуктовая IT-компания. Создаем экосистему финансовых продуктов и сервисов на зарубежных рынках. К 2024 году у наших продуктов сотни тысяч активных пользователей в 183 странах.
Samokat.tech — продуктово-технологическая команда, которая делает IТ для ретейла реального времени. От доставки продуктов и товаров для дома за 15 минут до развития нового слоя городской инфраструктуры для мгновенной доставки любых товаров — с помощью технологий.
ВКонтакте — крупнейшая социальная сеть в России и странах СНГ. Миссия — соединять людей, сервисы и компании, создавая простые и удобные инструменты коммуникации. VK — это больше 200 технопроектов. Свыше 10 000 человек создают и развивают одни из самых популярных и высоконагруженных интернет-сервисов в стране. Делают комфортнее, легче и интереснее жизнь сотне миллионов людей.
Гринатом – ИТ-компания в структуре Росатом с фокусом на разработке инновационных решений для современных бизнес-процессов в атомной отрасли и за ее пределами. Мы развиваем цифровую экосистему Росатома, создаем свое ПО и обеспечиваем атомную отрасль современными ИТ-решениями, услугами и сервисами.
«Флант» — лидер российского рынка DevOps и Kubernetes. №1 контрибьютор Kubernetes из России и единственный в России сертифицированный CNCF-поставщик услуг по Kubernetes (KCSP). С 2008 года занимается созданием и обслуживанием ИТ-инфраструктуры для критичных бизнес-приложений, с 2021 года предлагает продукты собственной разработки — экосистему решений Deckhouse для надежной enterprise-инфраструктуры. В 2023 году объединились с «Экспресс 42», и сегодня компания является вендором ПО и сервисной компанией по построению DevOps-решений под ключ.
Аспро — разработчик программного обеспечения. С 2010 года разрабатываем облачные системы, платформы и готовые решения для бизнеса.
Маркет позволяет покупателям заказывать товары прямо из дома и получать заказы по всей стране, а партнёрам — развивать свой бизнес, повышая продажи и привлекая новых клиентов. Для этого команда Маркета строит архитектуру так, чтобы можно было быстро делать новые фичи и не ломать важные сценарии, учится выдерживать многократный рост нагрузки и не перерасходовать ресурсы, следит, чтобы сайт Маркета работал как надо. У них есть целый арсенал технологий: микросервисы и микрофронты, тыквы и gracefull degradation, отложенная обработка запросов и автоматические системы нагрузочного тестирования. Изменяют архитектуру всех сервисов Маркета и помогают продуктовым командам быстро и безопасно развиваться.
Команда Тинькофф — это разработчики, продакт-менеджеры, дизайнеры, маркетологи, аналитики, тестировщики, SRE-инженеры и другие специалисты. Вместе они создают новые и развивают существующие финтех-продукты, которыми пользуются 25 миллионов клиентов и каждый из нас.
Команда Тинькофф — это разработчики, тестировщики, SRE-инженеры, архитекторы, аналитики, продакт-менеджеры, дизайнеры и другие специалисты. Вместе они создают финтех-продукты, которыми пользуются более 38 миллионов клиентов. Тинькофф развивает IT-индустрию, поддерживает комьюнити и делится экспертизой.
ГК Юзтех входит в топ-15 лидеров разработки программного обеспечения на российском рынке согласно рейтингу CNews Analytics и в топ-7 лучших IT-работодателей России в 2022 г. по версии HH и Хабр. С 2006 года ГК Юзтех осуществляет полный спектр работ в области заказной разработки ПО для своих Заказчиков в отраслях: ретейл, финансы, телеком, IТ и в государственном секторе. Несколько фактов о ГК Юзтех: • 2000+ успешных проектов; • 50+ постоянных заказчиков; • 8 офисов по всей России; • больше половины топ-20 банков России — клиенты компании; • больше половины топ-10 российских FMCG-сетей — клиенты компании; • многие корпорации из Fortune 1000 — клиенты компании; • 20+ млн. пользователей ежедневно используют программные решения ГК Юзтех; • 60% сотрудников уровня Senior.
Строят публичную облачную платформу Yandex Cloud, чтобы дать компаниям доступ к технологиям и сервисам, которые проверены нагрузками Яндекса. Продукты Yandex Cloud — это масштабируемая инфраструктура, сервисы хранения данных, инструменты машинного обучения и средства разработки.
Строят публичную облачную платформу Yandex Cloud, чтобы дать компаниям доступ к технологиям и сервисам, которые проверены нагрузками Яндекса. Продукты Yandex Cloud — это масштабируемая инфраструктура, сервисы хранения данных, инструменты машинного обучения и средства разработки.
Altenar — международная IT-b2b-компания с офисами в России, на Мальте и в Греции, которая занимается разработкой высоконагруженного программного обеспечения для сбора, обработки, анализа спортивных данных в реальном времени и их последующего преобразования в информацию для b2b-клиентов.
Команда Т-Банка — это разработчики, тестировщики, SRE-инженеры, архитекторы, аналитики, продакт-менеджеры, дизайнеры и другие специалисты. Вместе они создают финтех-продукты, которыми пользуются около 40 миллионов клиентов. Т-Банк развивает ИТ-индустрию, поддерживает комьюнити и делится экспертизой.
Яндекс — технологическая компания, которая создаёт инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
МТС — одна из ведущих экосистемных компаний России. Предоставляет услуги мобильной и фиксированной связи, решения в области объединенных коммуникаций, интернета вещей, обработки данных, облачных вычислений и кибербезопасности. Штат IT-специалистов компании превышает 8 000 человек.
Яндекс — технологическая компания, которая создаёт инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
«Яндекс.Метрика» — бесплатный интернет-сервис компании Яндекс, предназначенный для оценки посещаемости веб-сайтов и анализа поведения пользователей. По данным w3techs.com, в 2019 году Яндекс. Метрика являлась третьей по размеру системой веб-аналитики в Европе. По данным «Лаборатории Касперского», в 2021-2022 годах она была самым распространенным трекинговым сервисом в России и странах СНГ.
Postgres Professional — разработчик российской системы управления базами данных Postgres Pro. СУБД входит в Единый реестр российского программного обеспечения и выпускается в редакциях: Postgres Pro Enterprise, Postgres Pro Standard, Postgres Pro Shardman, их сертифицированные ФСТЭК версии. Специалисты компании оказывают поддержку полного цикла: аудит, помощь в миграции, техподдержку 24х7 и SLA, обучение, заказные разработки, сертификацию специалистов. По данным исследования ЦСР за 2022 год, компания возглавляет рейтинг российских разработчиков СУБД. Команда Postgres Professional также активно развивает свободно распространяемую СУБД PostgreSQL. Занимает 1 место в России и 2 — в мире по вкладу в открытый код PostgreSQL.
Предоставляют полный цикл DevOps-услуг и сопутствующие программные продукты.
Vi.Tech — это дочерняя компания ВсеИнструменты.ру, в которой делают IT-продукты для одного из крупнейших игроков на рынке e-commerce.
Яндекс — технологическая компания, которая создает инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
СберМаркет (ООО «Инстамарт Технолоджис») — технологический онлайн-сервис, который помогает делать покупки не выходя из дома. Tech-команда СберМаркета создает один из самых сложных высоконагруженных e-commerce-проектов в России и делает это с любовью.
Яндекс — технологическая компания, которая создаёт инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Postgres Professional — разработчик российской системы управления базами данных Postgres Pro. СУБД входит в Единый реестр российского программного обеспечения и выпускается в редакциях: Postgres Pro Enterprise, Postgres Pro Standard, Postgres Pro Shardman, их сертифицированные ФСТЭК версии. Специалисты компании оказывают поддержку полного цикла: аудит, помощь в миграции, техподдержку 24х7 и SLA, обучение, заказные разработки, сертификацию специалистов. По данным исследования ЦСР за 2022 год, компания возглавляет рейтинг российских разработчиков СУБД. Команда Postgres Professional также активно развивает свободно распространяемую СУБД PostgreSQL. Занимает 1 место в России и 2 — в мире по вкладу в открытый код PostgreSQL.
VK — это более 200 технологичных проектов, свыше 11 000 сотрудников и более 20 лет опыта создания высоконагруженных интернет-сервисов. ВКонтакте, Одноклассники, VK Cloud, Дзен, Маруся, VK Play — это лишь часть продуктов VK, которыми ежедневно пользуются миллионы людей по всей стране.
Cloud.ru облачный провайдер, предоставляющий облачные решения и экспертную поддержку для бизнес-задач. Атмосфера стартапа, создание инноваций, клиентоцентричный подход –– это все мы, люди Cloud.
Строят публичную облачную платформу Yandex Cloud, чтобы дать компаниям доступ к технологиям и сервисам, которые проверены нагрузками Яндекса. Продукты Yandex Cloud — это масштабируемая инфраструктура, сервисы хранения данных, инструменты машинного обучения и средства разработки.
Positive Technologies — ведущий разработчик продуктов, решений и сервисов для результативной кибербезопасности, позволяющих выявлять и предотвращать атаки до того, как они причинят неприемлемый ущерб бизнесу и целым отраслям экономики. Технологический портфель компании охватывает большинство категорий средств защиты информации и продолжает расширяться. Мы создаем метапродукты — новое поколение инструментов для достижения результативной кибербезопасности с минимальным участием человека. Кроме того, Positive Technologies — первая и единственная компания из сферы кибербеза на Московской бирже.
Команда Яндекс 360 создает продукты, которые решают повседневные задачи миллионов пользователей: от хранения воспоминаний до деловой переписки. В Яндекс 360 входят Почта, Диск, Документы, Телемост, Календарь, Заметки и Мессенджер
Ozon — лидирующая платформа e-commerce в России. В команде Ozon Tech 3 800 инженеров — и она продолжает расти. Десятки миллионов людей пользуются сервисами Ozon, их IT-инфраструктура управляет миллионами процессов каждый час. Микросервисы на Go и C#, в стеке технологий есть Vue.js, Swift и Kotlin, Kubernetes, Kafka, Hadoop и ClickHouse.
СберМаркет (ООО «Инстамарт Технолоджис») — технологический онлайн-сервис, который помогает делать покупки не выходя из дома. Tech-команда СберМаркета создает один из самых сложных высоконагруженных e-commerce-проектов в России и делает это с любовью.
Команда Т-Банка — это разработчики, тестировщики, SRE-инженеры, архитекторы, аналитики, продакт-менеджеры, дизайнеры и другие специалисты. Вместе они создают финтех-продукты, которыми пользуются около 40 миллионов клиентов. Т-Банк развивает ИТ-индустрию, поддерживает комьюнити и делится экспертизой.
СберМаркет (ООО «Инстамарт Технолоджис») — технологический онлайн-сервис, который помогает делать покупки не выходя из дома. Tech-команда СберМаркета создает один из самых сложных высоконагруженных e-commerce-проектов в России и делает это с любовью.
Компания Last.Backend занимается созданием DevOps технологий и продуктов. Имеет собственную систему оркестровки контейнеров аналога kubernetes. Так же занимается DevOps акселерацией компаний, помогая в кратчайшие сроки получить качественную автоматизированную инфраструктуру под проект с дальнейшим 24/7 мониторингом.
МТС — одна из ведущих экосистемных компаний России. Предоставляет услуги мобильной и фиксированной связи, решения в области объединенных коммуникаций, интернета вещей, обработки данных, облачных вычислений и кибербезопасности. Штат IT-специалистов компании превышает 8 000 человек.
Яндекс Go — это суперапп, предоставляющий сервисы, связанные с передвижением по городу. Он объединяет водителей и курьеров в сервисах для заказа такси, доставки и транспортировки грузов.
Гринатом – ИТ-компания в структуре Росатом с фокусом на разработке инновационных решений для современных бизнес-процессов в атомной отрасли и за ее пределами. Мы развиваем цифровую экосистему Росатома, создаем свое ПО и обеспечиваем атомную отрасль современными ИТ-решениями, услугами и сервисами.
Rambler's Top100