Сегодня с утра наткнулся на интересную статью. Нет, она не про JavaScript, а про опыт построения архитектуры сервиса. Большого и сильно нагруженного сервиса — Amazon Prime Video. Статья вроде небольшая, но интересных мыслей рождает много. Автор накидывает проблемы, с которыми они боролись при использовании микросервисов и serverless. Начальное удобство в будущем перекрылось сложностью оркестрации, мониторинга и высокой стоимостью.
В итоге они сделали ставку на «непопулярное решение» и перешли на модульный монолит. Кавычками воспользовался неслучайно, так как сегодня часто можно услышать, что микросервисная архитектура является лучшим вариантом по умолчанию. Но в реальности это не так. Везде есть плюсы и минусы, поэтому всегда нужно анализировать проблему и только потом принимать решение — какие инструменты или архитектуру использовать.
Вернёмся к истории с Prime Video. В итоге ребята перешли на модульный монолит и неплохо так выиграли: общая стоимость инфраструктуры снизилась примерно на 90%, улучшилось масштабирование. Уход от serverless к EC2/ECS позволил серьёзно снизить затраты на вычислительные ресурсы. Неплохо? Кстати, история с Prime Video — не единственная. Не так давно натыкался на материал, что StackOverflow (а у них нагрузки ого-го) тоже на монолите и не жу-жу.
К чему это я всё? Не бывает единственного правильного решения. Нужно анализировать, разбираться и только потом делать выбор. Не стоит выбирать микросервисную архитектуру по умолчанию только потому, что сегодня она в моде. То же самое и с языками программирования.