Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Максим Пугачев (IPONWEB), Современная архитекту...

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for CodeFest CodeFest
January 31, 2018

Максим Пугачев (IPONWEB), Современная архитектура платформы RTB, CodeFest 2017

https://2017.codefest.ru/lecture/1178

Постоянная эволюция на рынке онлайн-рекламы требует постоянной эволюции технологий, которые лежат в основе. Как работает современная “programmatic buying” платформа? Как обеспечить гибкость *aaS, основанной на облаках, и кастомизацию для десятков клиентов, в то же время, оставаясь в рамках единого стека?

Несмотря на то, что u-Platform состоит из многих частей, я расскажу вкратце о каждой из них, и более подробно рассмотрю компонент, который обеспечивает тот самый highload:

● Архитектура сервера
● Lua и многопоточность: схема работы внутри рабочего потока, coroutines и yield запросы, sandboxing
● Как гарантировать время обработки запроса
● Интеграция с внешними сервисами
● MongoDB и сопутствующий ворох проблем

Avatar for CodeFest

CodeFest

January 31, 2018
Tweet

More Decks by CodeFest

Other Decks in Programming

Transcript

  1. IPONWEB • Cloud-based SaaS model • Платформа — набор базовых

    компонентов и сервисов с возможностью кастомизации под каждого клиента
  2. u-Server • Проприетарный HTTP сервер, написанный с нуля около 10

    лет назад • Lua в качестве бизнес-логики
  3. Архитектура • Многопоточность + libevent • Разделение потоков на типы:

    Main, Communication, ServiceWorker, Worker • Main: все ”тяжелые” задачи на перезагрузку/обновление данных, запись данных на диск и т.п.
  4. Архитектура • Communication: общение с внешним миром (HTTP, Database), постановка

    задач для ServiceWorker/Worker • ServiceWorker: обслуживание ”административных” запросов
  5. Архитектура • Communication: общение с внешним миром (HTTP, Database), постановка

    задач для ServiceWorker/Worker • ServiceWorker: обслуживание ”административных” запросов • Worker: бизнес-логика
  6. Minor Перезагрузка конфигурации Перезагрузка Lua sandbox Shutdown Normal MongoDB API

    Новая Lua coroutine Urgent MongoDB API (find + next) HTTP request Timeouts (HTTP + MongoDB) Timers
  7. Minor Перезагрузка конфигурации Перезагрузка Lua sandbox Shutdown Normal MongoDB API

    Новая Lua coroutine Urgent MongoDB API (find + next) HTTP request Timeouts (HTTP + MongoDB) Timers Critical MongoDB reply HTTP response
  8. Архитектура • Приоритеты задач: minor, normal, urgent, critical • coroutines

    (Lua thread) и yield запросы • Гарантия времени выполнения запроса
  9. Архитектура • Приоритеты задач: minor, normal, urgent, critical • coroutines

    (Lua thread) и yield запросы • Гарантия времени выполнения запроса • Sandboxing
  10. Выводы • Не бойтесь менять архитектуру в процессе разработки. Это

    неизбежно • Ограничивайте свободу действий разработчика и/или пользователя, если это необходимо. Даже если они с этим не согласны
  11. Выводы • Не бойтесь менять архитектуру в процессе разработки. Это

    неизбежно • Ограничивайте свободу действий разработчика и/или пользователя, если это необходимо. Даже если они с этим не согласны • Заимствуйте опыт коллег из других областей