MediaSniper за 8 лет прошел путь от пустого репозитория до одной из ведущих рекламных платформ в России.
Когда у вас небольшой стартап и нет бесконечных аппаратных ресурсов, приходится очень тщательно принимать технические решения. Нельзя просто взять проект с github, дописать к нему немного кода и надеяться, что этого достаточно для обработки сотен тысяч RPS.
Задача платформы — отвечать на http-запрос с задержкой не более 50 мс и обслуживать тысячи запросов в секунду (сейчас более 500 000 RPS). В докладе мы покажем, какие решения принимали в области архитектуры, системного ПО, инфраструктуры и, собственно, разработки.
* Собственные сервера + docker, чтобы нивелировать различия в установленных версиях ОС и пакетов.
* Мы любим микросервисы и shared nothing и стараемся избегать решений с единой точкой отказа. Все, что можно задублировать — должно быть задублировано.
* KV БД Aerospike — наш главный помощник. Невозможно или слишком дорого держать вообще всю рабочую информацию на каждой ноде.
* Своя библиотека для асинхронного http client/server позволяет мультиплексировать запросы и заполнять канал, экономя соединения. Мы, как и большинство, все еще живем в мире http 1.1.
* Своя библиотека для map/reduce, чтобы обрабатывать 40 Тб данных в сутки.
* У нас нет silver bullet, мы просто хотим поделиться радостью, что оно работает :)