В своём проекте мы решали следующие задачи:
— Скорость разработки задачи;
— Стоимость поддержки задачи;
— Возможность распараллеливать вычисления и задачи;
— Возможность максимально просто масштабировать приложение;
— CI/CD с минимальными усилиями.
Я расскажу о том, как мы решали эти задачи, на какие грабли мы наступали, что из этого всего получилось, и что делать дальше.
Что получили в итоге:
— Мощь JVM под капотом Scala;
— 15 минут от нажатия на кнопку "Merge request" до продакшена в 3 датацентра и 6 серверов с прохождением тестов (юнит + функциональные + интеграционные + нагрузочные);
— 6 нод с приложениями вместо 18 (по 2 в каждом датацентре для отказоустойчивости) с запасом прочности в 60%;
— Независимые пофичные релизы без даунтайма всех компонентов приложения;
— Масштабирование только того функционала и в том количестве, которое необходимо данному сервису.