В этой статье расскажем о том, что такое микросервисы и узнаем, в каких случаях на них точно стоит перейти.
Монолит vs Микросервис
Самый старый и, пожалуй, известный тип архитектуры – монолитный. Все блоки монолитного приложения находятся на одном сервере. Это облегчает работу – запустить сервис можно довольно быстро. Но есть важные ограничения: менять команду во время разработки нежелательно, требования к приложению тоже меняться не должны. Иначе работа может сильно затянуться.
Рамки довольно жесткие. Все потому что код в монолитных приложениях – это единое целое. Если меняете его части – придется дорабатывать всю архитектуру и полностью разбираться в логике работы приложения.
Чтобы сделать разработку мобильной и гибкой, придумали микросервисы – они подобны конструктору LEGO. Приложение разбивают на функции, и помещают их в автономные хранилища. Каждая функция отвечает за определенную бизнес-задачу: например, за ведение каталога, работу с корзиной или оплату заказа. Связь между ними проходит через API.
Чем хороши микросервисы
Устойчивы к сбоям
Вспомним о монолитной архитектуре. Замена одного элемента кода может нарушить работу всего приложения. В микросервисной архитектуре изменения вносят в каждый сервис отдельно – и они не вызовут остановку всей системы.
Это особенно актуально, если в приложении возникают точечные проблемы. Например, отвалился платежный шлюз. В монолите это может вызвать полную остановку сервиса, в случае микросервисов – приложение будет продолжать работу. Останется только оперативно восстановить функцию оплаты.
Проще ставить задачи внутри команды
Работу с микросервисами удобно распределять между командами – у каждой своя зона ответственности. Новым специалистам не придется вникать во всю структуру кода, можно сконцентрироваться на конкретной задаче. Это ускоряет разработку, плюс управлять процессом становится легче.
Универсальность
Продукт можно писать на разных языках. Если часть программистов работает, например, на Python, а другие на Django – не придется кого-то переучивать или менять команду. Писать микросервис можно на любом удобном языке.
Интеграция с облаком
Микросервисы можно разместить в облаке и настроить автомасштабирование. Получать дополнительные ресурсы в тот момент, когда нагрузка на сервис увеличивается – и не переплачивать во время спада активности. Это особенно актуально, если спрос подвержен сезонности или растет, например, в праздники.
Микросервисы удобно хранить в виртуальных изолированных контейнерах. В облаке ими можно управлять, например, с помощью Yandex Managed Service for Kubernetes и Yandex Container Registry для Docker.
Как это выглядит на практике
1) На микросервисную архитектуру перешла страховая компания «Ренессанс Жизнь». О переходе задумались из-за высокой стоимости содержания собственного ЦОД, медленного и дорогого масштабирования. В 2017 году ЦБ России обязал страховые компании обеспечить отказоустойчивость сервисов – в любое время суток. Собственных мощностей для этого не хватало.
Компания перешла на микросервисы и разместила их на Managed Service for Kubernetes. Ресурсы были перенесены за 2-3 месяца. В начале облако рассматривалось в виде резервной площадки – но в итоге на него перенесли весь продакшн.
Клиент остался доволен: удалось снять технологические риски и обеспечить отказоустойчивость. Команда сконцентрировалась на создании продукта – перестала думать об обслуживании серверов. Вкладываться в собственную инфраструктуру не пришлось: микросервисы на облаке оказались выгоднее.
2) На облако перешел CarTaxi – крупнейший сервис по эвакуации авто в России. Появлялось все больше клиентов, росла нагрузка на собственные мощности – компания задумалась об автомасштабировании в облаке.
CarTaxi уже работал на микросервисах – миграция заняла всего 1 день. В сервис Compute Cloud настроили горизонтальное масштабирование для 23 микросервисов системы. Облако позволило накапливать и анализировать большие объемы данных: принимать бизнес-решения стало проще и понятнее.
Если статья оказалась полезной, ставьте 👍
Не забывайте подписываться на наши соцсети: Вконтакте, Facebook, Telegram, VC, YouTube.