Кейс смены языка с PHP на GO: сеть экономит 21 000$ в год на системе управления рекламой
Сеть отвечает за показатели рекламы сервиса с развлекательным контентом, для управления использует систему Orbitsoft. Со временем нагрузка на систему увеличилась и производительность снизилась. Чтобы решить эту проблему, мы сменили язык с PHP на Go. Рассказываем, что из этого вышло.
Рост показов с 30 млн в сутки до 800 млн
Сеть отвечает за эффективность рекламы, которую показывает сервис с развлекательным контентом. Мы работаем с ней 11 лет.
Для сети разработали систему управления и показа рекламы, ее можно разделить на три большие части:
- панель управления, где работают рекламодатели и владельцы рекламных площадок;
- набор сервисов, которые отвечают за показ рекламы;
- служебные инструменты.
Нагрузка на систему постоянно растет. Когда мы только стартовали, у сервиса было от 20 до 30 млн рекламы в сутки, через год — 100 млн, а в начале 2021 года — 800 млн. Чтобы обеспечивать максимальную работоспособность системы, мы регулярно обновляем процессы, внутренние решения и все, что помогает сети и сервису больше зарабатывать на рекламе.
Проблема: ограничение языка PHP и высокая стоимость обслуживания системы
До 2020 года система для управления рекламой работала на языке PHP 5.6. Мы выбрали PHP для экономии ресурсов заказчиков. Например, стоимость разработки и услуг специалистов для PHP ниже, чем для Javа и C++. Доработка системы на этом языке требует меньше времени, чем на том же Javа.
Дорогое обслуживание. Какое-то время система справлялась с задачами, но с ростом нагрузки на нее появились проблемы. Первая — обслуживание стало дороже и сложнее.
Недостаточная скорость отклика. Запрос и обработка рекламы занимает какое-то время, и если это происходит слишком долго, рекламная сеть рискует репутацией и доходами.
Низкая скорость отклика влияет на отношения с партнерами. Если система долго отвечает, сайты медленнее загружаются, а это снижает доходы. Скорее всего, партнер выберет другую рекламную сеть.
От откликов зависит стоимость обслуживания системы. Чем быстрее система обрабатывает один запрос, тем быстрее освобождаются серверные ресурсы для обработки следующего запроса, поэтому на одном и тот же железе можно обрабатывать больше запросов. Для заказчика это экономия на серверах и обслуживании.
Решение: перейти с языка PHP на Go
За 11 лет работы мы максимально оптимизировали систему, поэтому единственным способом увеличить производительность было сменить язык. Мы рассматривали Go и Java, в работе с обоими языками у нас есть опыт и знания, но остановились на Go. По нашей оценке, так выгоднее и проще для заказчика.
Кроме смены платформы мы реализовали еще несколько изменений:
- отказались от монолитного приложения и перешли к микросервисной архитектуре;
- внедрили полноценный CI/CD;
- обеспечили высокое покрытие кода unit и интеграционными тестами;
- разработали скрипты для автоматического развертывания обновлений.
Благодаря этому команда может отдельно масштабировать каждый компонент, быстрее разворачивать обновления и экономить ресурсы серверов. Все это тоже помогает экономить бюджет заказчика и повышает эффективность рекламы.
При разработке и запуске новой системы мы не отключали действующие сервера и систему, поэтому заказчик избежал простоев: все работало как обычно. Для этого команда последовательно выносила функции в отдельные сервисы и уже их запускала.
Результаты: сократили расходы заказчика и ускорили отклик
Перед обновлением системы мы договорились с заказчиком о двух задачах: снизить стоимость обслуживания системы и добиться лучших показателей для закупки на аукционе. Вот чего мы достигли.
Проект занял 8 месяцев. За это время мы решали текущие задачи заказчика как постоянная внешняя команда и полностью перестроили систему.