Микросервисы — это архитектура для создания производственных программных приложений.
Микросервисы — это тип архитектуры разработки программного обеспечения. Они являются заменой старой архитектуры, известной как монолитная.
Проблема с монолитами
Монолит — это когда одна кодовая база содержит всю программу. Поскольку вся программа находится в пределах одной кодовой базы, она часто использует один конкретный стек и обращается только к одной базе данных.
Эта архитектура может хорошо работать для отдельных лиц или небольших групп. Однако по мере роста объема кода командам может быстро стать трудно координировать разработку. Развертывание и тестирование также представляют собой проблему. Даже небольшие изменения требуют пересборки и повторного развертывания всего приложения.
Недостатки Monolith можно исправить, изменив архитектурные стратегии и создав микросервисы.
Микросервисы
Микросервис — это стиль архитектуры, в котором независимо развертываемые кодовые базы работают вместе для формирования приложения.
Аналогия с микросервисами
Скажем, я хочу построить куб. Я хочу, чтобы мой куб был определенного размера и формы. Создание маленького куба, вероятно, тривиально, но что, если мне нужен куб размером 100 на 100 метров. Такой большой размер будет трудно изготовить или транспортировать. Вместо того, чтобы создавать один цельный кусок, я мог бы взять кучу меньших кубиков и соединить их вместе. Все эти маленькие кубики вместе будут выглядеть как кубик Рубика.
Теперь давайте применим нашу аналогию к программированию. Было бы тривиально создать простой веб-сайт, но что, если этот веб-сайт принадлежит Google? Это чрезвычайно сложная проблема. Мы можем упростить задачу, разбив ее на более мелкие части.
Один из наших меньших блоков мог справиться с поиском. Один блок может формировать пользовательский интерфейс, а другой показывать рекламу и т. д. Каждый из этих более мелких блоков называется микросервисом. Хотя это упрощенное представление о том, как работает сложный сервис, такой как Google, общий принцип тот же.
Преимущества микросервисов
- Небольшие сервисы легче понять, и ими может владеть одна команда. Их также можно быстро переписать, если технологии изменятся.
- Микросервисы обеспечивают большую гибкость, поскольку вы можете выбрать правильный инструмент для решения каждой проблемы и внедрить новые технологии по мере необходимости.
- Развертывание сопряжено с меньшим риском и происходит быстрее, поскольку микросервисы не имеют общих кодовых баз, что делает их развертываемыми независимо друг от друга.
- Масштабирование упрощается, и в целом архитектура более адаптируема, что способствует гибкой разработке.
Недостатки микросервисов
- Мониторинг каждого микросервиса по отдельности является сложной задачей. Для централизации журналов и мониторинга требуется дополнительное программное обеспечение.
- Настроить новых разработчиков для работы над приложением может быть сложно, потому что нужно работать с несколькими кодовыми базами.
- Развертывание и тестирование, скорее всего, потребуют большей автоматизации, поскольку существует больше точек отказа.
Больше узнать
Эта статья представляет собой просто обзор микросервисов. Существует так много всего, что нужно изучить: варианты хостинга, шины обмена сообщениями, защита сетевых вызовов, шлюзы API и многое другое — все это отличные темы для изучения, если вы заинтересованы в применении микросервисов в своем следующем проекте.
Первоначально опубликовано на https://blog.seancoughlin.me.