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

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

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

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

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

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

Доклад принят в Программу конференции
Ozon - один из крупейших маркетплейсов не только в РФ но и в мире. Тут приходиться решать необычные технические задачи, готового решения для которых может и не существовать. Очень интересно

Тезисы

Тезисы:

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

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

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

МТС — одна из ведущих экосистемных компаний России. Предоставляет услуги мобильной и фиксированной связи, решения в области объединенных коммуникаций, интернета вещей, обработки данных, облачных вычислений и кибербезопасности. Штат IT-специалистов компании превышает 8 000 человек.
На Авито каждый может найти что-то своё среди миллионов частных объявлений и предложений компаний. У нас десятки тысяч RPS к бэкенду, терабайты картинок в хранилище и мощная система автоматизированной модерации на базе машинного обучения. Каждый месяц сервисом пользуется треть населения России.
Яндекс — технологическая компания, которая создаёт инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Райффайзен Банк — часть австрийской банковской группы Raiffeisen Bank International; работает в России с 1996 года и входит в тройку самых надежных российских банков по версии Forbes. В команде банка более 3000 IT-специалистов, которые работают над продуктами будущего и развивают финтех в России. И не любят легаси.
Tarantool — платформа in-memory-вычислений с гибкой схемой данных для эффективного создания высоконагруженных приложений. VK — это больше 200 технопроектов. Свыше 10 000 человек создают и развивают одни из самых популярных и высоконагруженных интернет-сервисов в стране. Делают комфортнее, легче и интереснее жизнь сотне миллионов людей.
На текущий момент у меня собственная команда опытных методологов и разработчик курсов, с которыми мы успешно реализуем проекты и создаем обучения "под ключ" в разных форматах. Наша задача - это разработка понятных и эффективных обучающих курсов для сотрудников.
НОТА — мультипродуктовый вендор отечественного ПО, входит в Холдинг Т1. Создан в 2023 году на основе обширной экспертизы команд холдинга. Компания занимается развитием собственных программных продуктов и формированием внешней партнерской сети для дистрибуции и интеграции решений, востребованных в условиях технологического суверенитета.
Positive Technologies — ведущий разработчик продуктов, решений и сервисов для результативной кибербезопасности, позволяющих выявлять и предотвращать атаки до того, как они причинят неприемлемый ущерб бизнесу и целым отраслям экономики. Технологический портфель компании охватывает большинство категорий средств защиты информации и продолжает расширяться. Мы создаем метапродукты — новое поколение инструментов для достижения результативной кибербезопасности с минимальным участием человека. Кроме того, Positive Technologies — первая и единственная компания из сферы кибербеза на Московской бирже.
Лемана ПРО (Леруа Мерлен) — лидер рынка DIY в России. Мы переосмысливаем DIY-ритейл так же, как другие технологические лидеры до этого меняли банкинг и ИТ-сервисы. В компании можно с нуля создавать диджитал-решения, примерять разные роли, использовать современные технологии, запускать новые продукты.
СберМаркет — технологический онлайн-сервис, который помогает делать покупки не выходя из дома. Tech-команда СберМаркета создает один из самых сложных высоконагруженных e-commerce проектов в России и делает это с любовью."
Лемана ПРО (Леруа Мерлен) — лидер рынка DIY в России. Мы переосмысливаем DIY-ритейл так же, как другие технологические лидеры до этого меняли банкинг и ИТ-сервисы. В компании можно с нуля создавать диджитал-решения, примерять разные роли, использовать современные технологии, запускать новые продукты.
Ozon — ведущий e-com России. В их IT-команде уже 5 000 специалистов, которые создают продукты для миллионов людей по всей стране и за рубежом. Ozon Tech разрабатывает собственные решения, контрибьютит в Open Source и использует современный стек: Go, C#, Kotlin, Swift TypeScript, Vue.js, Kubernetes и Kafka. Продолжают расти, чтобы повышать доступность сервисов и быть ещё ближе к пользователям.
Kinescope — видеоинфраструктура для интернета. Помогают бизнесу раскрыть потенциал профессиональных видеорешений для своих задач. Объединяют все необходимое для хранения, обработки, CDN-доставки и защиты видео в одном месте. Продукты Kinescope подходят как для стартапов, так и для компаний из списка РБК500 и государственных предприятий с высокими нагрузками и сложной логикой.
МТС — мультисервисная цифровая экосистема и ведущий телеком-оператор в России. Компания развивает сервисы и продукты в сфере больших данных, искусственного интеллекта, облачного хранения, медиа и финансов, телекоммуникаций. Штат IT-специалистов превышает 9,5 тыс. человек.
Servicepipe Компания-разработчик продуктов для высокоточной защиты от кибератак, активно развивающая технологии анализа трафика и защиты от автоматизированных угроз на L3–L7. На базе собственных технологий Servicepipe реализует сервисы по защите от продвинутых ботов, DDoS- и целевых атак.
СИБУР Цифровой — это IT-кластер СИБУРа, ведущей нефтехимической компании на рынке РФ. Решаем креативные задачи по цифровизации нефтехимического производства и бизнеса. Это задачи, связанные с Data Science, цифровой разработкой, промышленным интернетом вещей (IIoT), дополненной и виртуальной реальностью (AR и VR), управлением данными и BI-инструментами. В Цифровом СИБУРе 200+ проектов с ИТ-составляющей, более 200 ИТ-систем и 100+ ИТ-компетенций! А главное — с нами работает более 2000 сотрудников, благодаря которым мы строим цифровые заводы будущего уже сегодня. Своим примером мы показываем, что именно в промышленности происходят цифровые прорывы и возникают самые интересные задачи, связанные с искусственным интеллектом, большими данными, цифровой разработкой, IIoT, XR, BI-инструментами!
CINIMEX — IT-компания с 27-летней историей. Сфера деятельности — заказная разработка ПО. Сотрудники компании обладают глубокой экспертизой в разработке и внедрении решений на основе ML и DS, разработке enterprise-решений на микросервисной платформе, а также в интеграции и автоматизации бизнес-процессов. Среди клиентов «Синимекс» крупнейшие банки, известные ритейлеры и заказчики из производственной отрасли.
Яндекс — технологическая компания, которая создаёт инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Компания занимается разработкой бизнес-решений для игровых разработчиков и издателей.
CINIMEX — IT-компания с 27-летней историей. Сфера деятельности — заказная разработка ПО. Сотрудники компании обладают глубокой экспертизой в разработке и внедрении решений на основе ML и DS, разработке enterprise-решений на микросервисной платформе, а также в интеграции и автоматизации бизнес-процессов. Среди клиентов «Синимекс» крупнейшие банки, известные ритейлеры и заказчики из производственной отрасли.
Servicepipe Компания-разработчик продуктов для высокоточной защиты от кибератак, активно развивающая технологии анализа трафика и защиты от автоматизированных угроз на L3–L7. На базе собственных технологий Servicepipe реализует сервисы по защите от продвинутых ботов, DDoS- и целевых атак.
Яндекс — технологическая компания, которая создаёт инновационные продукты на основе машинного обучения и нейронных сетей. Команда талантливых математиков и программистов развивает самую популярную в России поисковую систему и более 85 пользовательских сервисов, которые помогают людям в повседневных заботах.
Лидер трайба Цифровых Ассистентов в B2C
МТС — одна из ведущих экосистемных компаний России. Предоставляет услуги мобильной и фиксированной связи, решения в области объединенных коммуникаций, интернета вещей, обработки данных, облачных вычислений и кибербезопасности. Штат IT-специалистов компании превышает 8 000 человек.
Cloud․ru — провайдер облачных сервисов и AI-технологий, который делает доступ к облакам и искусственному интеллекту простым и удобным. В Cloud․ru есть 100+ IaaS- и PaaS-сервисов, ML-платформа на базе суперкомпьютеров и публичное облако Cloud․ru Evolution на основе собственных разработок и open source. В команде провайдера более 1 500 специалистов в области IT, кибербезопасности и AI. Cloud․ru входит в число крупнейших IT-компаний России.
Команда Яндекс 360 создает продукты, которые решают повседневные задачи миллионов пользователей: от хранения воспоминаний до деловой переписки. В Яндекс 360 входят Почта, Диск, Документы, Телемост, Календарь, Заметки и Мессенджер.
EdgeЦентр — центр облачных и edge-решений. Помогают онлайн-бизнесу быстрее выпускать продукты и масштабировать ресурсы в несколько кликов. Предоставляют IT-решения в сфере вычислений, доставки, хранения и защиты контента.
Домклик - продуктовая технологическая компания, которая создает высоконагруженные проекты в сфере недвижимости, обеспечивая полный цикл от выбора квартиры, получения ипотеки, взаиморасчетов с продавцом до постпродажного сопровождения.
НЛМК ИТ — команда, которая делает IT-системы для металлургии и генерит существенную часть успеха Группы НЛМК, лидера среди российских производителей стали. В их готовой продукции нет ни единой строчки кода, но в ее производстве участвует большая IT-команда. Поэтому они немножечко IT-металлурги. Делают цифру реальностью!
«Группа Астра» – производитель инфраструктурного ПО. По данным рейтинга TAdviser, компания входит в топ-5 самых быстрорастущих компаний России. По мнению Forbes, «Группа Астра» входит в топ-15 самых дорогих компаний Рунета. В экосистеме группы – 22 продукта, которые комплексно закрывают потребности заказчиков в стеке инфраструктурного программного обеспечения: сертифицированная операционная система Astra Linux, служба каталогов ALD Pro, ПО для создания инфраструктур виртуальных рабочих мест Termidesk, СУБД Tantor средства резервного копирования RuBackup и др. По оценкам независимых аналитиков Strategy Partners, флагманский продукт – ОС Astra Linux – занимает более 76% рынка российских операционных систем, а доля компании на рынке инфраструктурного ПО российских разработчиков оценивается в 20%.
Пачка - корпоративный мессенджер, один из лидеров на Российском рынке корпоративных мессенджеров. Продуктом пользуются больше 100 тыс.пользователей из разных компаний. Программисты успешно настраивают ботов из других сервисов для публикации уведомлений в чат.
Positive Technologies — лидер в области результативной кибербезопасности. Компания является ведущим разработчиком продуктов, решений и сервисов, позволяющих выявлять и предотвращать кибератаки до того, как они причинят неприемлемый ущерб бизнесу и целым отраслям экономики. Наши технологии используют около 4000 организаций по всему миру. Positive Technologies — первая и единственная компания из сферы кибербезопасности на Московской бирже (MOEX: POSI), у нее более 205 тысяч акционеров.
Positive Technologies — лидер в области результативной кибербезопасности. Компания является ведущим разработчиком продуктов, решений и сервисов, позволяющих выявлять и предотвращать кибератаки до того, как они причинят неприемлемый ущерб бизнесу и целым отраслям экономики. Наши технологии используют около 4000 организаций по всему миру. Positive Technologies — первая и единственная компания из сферы кибербезопасности на Московской бирже (MOEX: POSI), у нее более 205 тысяч акционеров.
МТС — одна из ведущих экосистемных компаний России. Предоставляет услуги мобильной и фиксированной связи, решения в области объединенных коммуникаций, интернета вещей, обработки данных, облачных вычислений и кибербезопасности. Штат IT-специалистов компании превышает 8 000 человек.
Райффайзен Банк — часть австрийской банковской группы Raiffeisen Bank International; работает в России с 1996 года и входит в тройку самых надежных российских банков по версии Forbes. В команде банка более 3000 IT-специалистов, которые работают над продуктами будущего и развивают финтех в России. И не любят легаси.
Sendsay — это CDP для автоматизации общения с клиентами через email, ВКонтакте, Telegram, Web Push, Mobile Push и SMS.
MTС Web Services (MWS) — облачные сервисы для решения задач бизнеса. Компания предоставляет сетевые сервисы; продукты для вычисления, хранения и обработки данных; PaaS-решения; инструменты кибербезопасности; профессиональные сервисы и ИИ-решения.
Команда Т-Банка — это разработчики, тестировщики, SRE-инженеры, архитекторы, аналитики, продакт-менеджеры, дизайнеры и другие специалисты. Вместе они создают финтех-продукты, которыми пользуются около 40 миллионов клиентов. Т-Банк развивает IT-индустрию, поддерживает комьюнити и делится экспертизой.
Пишут системы автоматизации бизнеса, стартапы, ботов, системы аналитики, личные кабинеты торговых систем и др. Если вы хотите сделать IT-продукт от простого бота до бэкофиса торговых систем, но не знаете, как и с чего начать, то проконсультируют вас и, при необходимости, сделают продукт под заказ или вместе с вами.
СберТех — российский разработчик программного обеспечения для бизнеса и государства, основной поставщик решений для Сбера. Флагманское решение компании — цифровая облачная платформа Platform V для создания приложений любого масштаба и сложности и обеспечения технологической̆ независимости на уровне ПО.
Wildberries — онлайн-платформа с 20-летней историей, где представлен широкий ассортимент продукции российских и международных брендов. География присутствия площадки охватывает 7 стран. Ежедневно покупателям отправляется свыше 12 млн товаров, а сеть пунктов выдачи заказов превышает 46 000 точек.
Luntry — комплексная защита контейнеров и Kubernetes на всех стадиях жизненного цикла приложения. Решение обеспечивает высокий уровень безопасности процессов, помогает создать инфраструктуру без слепых зон и наладить бесшовную коммуникацию между командами даже в самых крупных проектах.
GitLife - это локализация китайской платформы Gitee у нас. Это миллионы опенсорса как проектов, так и AI моделей. Last.Backend занимается созданием DevOps-технологий и продуктов. Имеет собственную систему оркестровки контейнеров аналога Kubernetes. Также занимается DevOps-акселерацией компаний, помогая в кратчайшие сроки получить качественную автоматизированную инфраструктуру под проект с дальнейшим 24/7-мониторингом.
ВКонтакте — крупнейшая социальная сеть в России и странах СНГ. Миссия — соединять людей, сервисы и компании, создавая простые и удобные инструменты коммуникации. VK — это больше 200 технопроектов. Свыше 10 000 человек создают и развивают одни из самых популярных и высоконагруженных интернет-сервисов в стране. Делают комфортнее, легче и интереснее жизнь сотне миллионов людей.
CINIMEX — IT-компания с 27-летней историей. Сфера деятельности — заказная разработка ПО. Сотрудники компании обладают глубокой экспертизой в разработке и внедрении решений на основе ML и DS, разработке enterprise-решений на микросервисной платформе, а также в интеграции и автоматизации бизнес-процессов. Среди клиентов «Синимекс» крупнейшие банки, известные ритейлеры и заказчики из производственной отрасли.
EdgeЦентр — центр облачных и edge-решений. Помогают онлайн-бизнесу быстрее выпускать продукты и масштабировать ресурсы в несколько кликов. Предоставляют IT-решения в сфере вычислений, доставки, хранения и защиты контента.
Команда Т-Банка — это разработчики, тестировщики, SRE-инженеры, архитекторы, аналитики, продакт-менеджеры, дизайнеры и другие специалисты. Вместе они создают финтех-продукты, которыми пользуются около 40 миллионов клиентов. Т-Банк развивает ИТ-индустрию, поддерживает комьюнити и делится экспертизой.
Deckhouse — российский вендор, разработчик продуктов для построения надежной enterprise-инфраструктуры. Лидер рынка DevOps и №1 контрибьютор Kubernetes в России, 7 лет в эксплуатации, более 170 внедрений и референсные клиенты из самых разных отраслей.
EdgeЦентр — центр облачных и edge-решений. Помогают онлайн-бизнесу быстрее выпускать продукты и масштабировать ресурсы в несколько кликов. Предоставляют IT-решения в сфере вычислений, доставки, хранения и защиты контента.
Kinescope — видеоинфраструктура для интернета. Помогают бизнесу раскрыть потенциал профессиональных видеорешений для своих задач. Объединяют все необходимое для хранения, обработки, CDN-доставки и защиты видео в одном месте. Продукты Kinescope подходят как для стартапов, так и для компаний из списка РБК500 и государственных предприятий с высокими нагрузками и сложной логикой.
Команда Т-Банка — это разработчики, тестировщики, SRE-инженеры, архитекторы, аналитики, продакт-менеджеры, дизайнеры и другие специалисты. Вместе они создают финтех-продукты, которыми пользуются около 40 миллионов клиентов. Т-Банк развивает IT-индустрию, поддерживает комьюнити и делится экспертизой.
Ozon — ведущая платформа e-commerce в России. В команде Ozon Tech почти 4 000 инженеров — и она продолжает расти. Десятки миллионов людей пользуются сервисами Ozon, их IT-инфраструктура управляет миллионами процессов каждый час. Микросервисы на Go и C#, в стеке технологий есть Vue.js, Swift и Kotlin, Kubernetes, Kafka, Hadoop и ClickHouse.
YADRO известна как разработчик и производитель всего, что можно увидеть в серверной и ЦОД: систем хранения данных, серверов, коммутаторов. Компания также создает телеком-оборудование операторского класса. Go-разработчики заняты как в развитии СХД, так и в телеком-направлении.
Rambler's Top100