Облачные приложения и Kubernetes: микросервисы

Микросервисы – это тип архитектуры программного обеспечения, который поддерживает множество отдельных сервисов, каждый из которых выполняет одну бизнес-функцию. Каждый микросервис представляет собой автономную, независимо развертываемую часть более крупного приложения, которая взаимодействует с другими компонентами (обычно через четко определенные REST API).

Микросервисы развивались как гибрид нескольких тенденций и идей в области разработки программного обеспечения. Некоторые из них (такие как сервис-ориентированные архитектуры (SOA), DevOps и контейнеризация) являются более новыми, в то время как другие (например, философия Unix «Делайте что-то одно, но делайте это хорошо») были разработаны десятки лет назад. Первоначально внедренные крупными сетевыми интернет-компаниями (Google, Amazon и Netflix), сегодня архитектуры микросервисов стали обычным явлением в приложениях любых размеров.

Читайте также:

Монолитные и микросервисные архитектуры

Большие многоуровневые программные монолиты должны масштабироваться как единое целое, а это замедляет циклы разработки. Микросервисы, напротив, предоставляют несколько преимуществ по сравнению с этой негибкой моделью:

  • Их можно масштабировать индивидуально и по запросу.
  • Их можно независимо разработать, собрать, протестировать и развернуть.
  • Каждая команда разработчиков может использовать свой собственный набор инструментов и языков для реализации функций и расти своими темпами.
  • Любой отдельный микросервис может относиться к другим как к черным ящикам, руководствуясь строго обговоренными и четко определенными контрактами между командами.
  • Каждый микросервис может использовать свое собственное хранилище данных, которое освобождает все команды от единой схемы базы данных.

Разрушение монолита: микросервисная архитектура Snappy

Рассматривая приложение Snappy через призму архитектуры, ориентированной на микросервисы, мы видим, что отдельные бизнес-функции, такие как управление фотографиями и управление пользователями, теперь разбиты на отдельные микросервисы, которые взаимодействуют через REST API. Каждый микросервис может использовать хранилище данных, наиболее соответствующее типу данных, которые он обрабатывает. Например, микросервис управления фотографиями может использовать облачное хранилище объектов для размещения изображений вместе с традиционной системой управления реляционными базами данных (RDBMS) для метаданных. Затем сервис можно разработать, протестировать, развернуть и масштабировать независимо от других сервисов. Благодаря повышению гибкости разработки команды, работающие с микросервисами, могут более эффективно использовать облачную инфраструктуру.

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
|                Интернет                |
↓↓↓
Балансировщик
нагрузки
↓            ↓
(WEB UI)        (WEB UI)
REST API          REST API
|_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _|
____ Микросервис WEB UI ____
|                           |
|                           |
↓                           ↓
_ _ _ _ _ _ _ _ _ _ _ _ _ _            _ _ _ _ _ _ _ _ _ _ _ _ _ 
| Балансировщик нагрузки  |            | Балансировщик нагрузки  |
↓          ↓     ↓                        ↓            ↓
(фото MGMT 1) (2)   (3)               (user MGMT)   (user MGMT)
REST API   REST API   REST API                   REST API        REST API
↓          ↓     ↓                        ↓            ↓
_____________________                      ______________
↓            ↓                              ↓
Хранилище объектов RDBMS                           RDBMS        
|_ _ _ _ _ _ _ _ _ _ _ _ _|             |_ _ _ _ _ _ _ _ _ _ _ _|
Микросервис фото MGMT                    Микросервис user MGMT

 

Архитектура микросервисов лежит в основе разработки приложений Cloud Native, поскольку эти приложения состоят из переносимых контейнерных микросервисов, которые можно масштабировать и использовать одноразово. Разбивая монолитное приложение на множество автономных сервисов, каждый из которых можно независимо масштабировать, распределять по регионам и развертывать на облачных платформах, микросервисы обеспечивают более быструю итерацию разработки и повышенную гибкость при запуске приложений в облачной инфраструктуре.

Tags: ,