Микросервисы - одна из важнейших тенденций в архитектуре программного обеспечения 2020 года. Сегодня мы обсудим 5 основных технологий, которые выведут ваши микросервисы на новый уровень.

Микросервисы - одна из важнейших тенденций в архитектуре программного обеспечения 2020 года. В архитектуре микросервисов приложение организовано как набор слабо связанных сервисов. Каждый микросервис - это автономная часть бизнес-функциональности с понятным интерфейсом. Благодаря независимым компонентам разработчика микросервисы упрощают обслуживание приложения.

По мере того как эта технология набирает популярность, появляется все больше и больше инструментов и технологий для поддержки микросервисов. Итак, как мы узнаем, что использовать?

Чтобы ускорить разработку микросервисов, я составил список из 5 лучших технологий для построения архитектуры микросервисов.

Сегодня мы рассмотрим:

  • Что следует учитывать перед переходом на архитектуру микросервисов
  • Докер и Кубернетес
  • ОТДЫХ
  • Redis
  • Прометей
  • Консул
  • Что учить дальше

Станьте профессионалом в области микросервисов - простой способ.

Изучите мельчайшие подробности реализации микросервисов в реальном мире. Все, от Consul до Docker, Cloud Foundry и не только.

Микросервисная архитектура: практическая реализация

Что следует учитывать перед переходом на архитектуру микросервисов

Архитектура микросервисов формирует основу для продуктов, создаваемых такими компаниями, как Amazon, Netflix, Spotify и Uber. По сравнению с традиционным монолитным приложением микросервисы предлагают следующие преимущества:

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

Несмотря на эти преимущества, архитектура микросервисов также сопряжена со своими проблемами - от внедрения до миграции и обслуживания. Некоторые из основных проблем, связанных с внедрением архитектуры микросервисов, включают:

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

В следующем разделе мы рассмотрим простой дизайн архитектуры микросервисов и основные технологии, которые можно использовать для разработки каждого компонента в дизайне.

Докер и Кубернетес

Docker - это программная платформа, которая позволяет создавать, тестировать и развертывать программное обеспечение в виде автономных пакетов, называемых контейнерами. Эти контейнеры Docker можно развернуть где угодно, и каждый контейнер содержит все ресурсы и конфигурацию, необходимые для запуска.

Kubernetes выступает в качестве дополнения к Docker, особенно в масштабах. Обычно он используется для решения некоторых операционных сложностей при переходе к масштабированию нескольких контейнеров, развернутых на нескольких серверах.

Docker и Kubernetes могут использоваться вместе, чтобы выступать в качестве гибкой основы для вашей системы на основе микросервисов, легко масштабируемой по мере увеличения рабочей нагрузки или наоборот.

Преимущества Docker для микросервисов

Docker - это облегченный вариант построения архитектуры микросервисов. Все компоненты микросервиса могут быть упакованы в образ Docker и оставаться изолированными от других микросервисов.

Docker упрощает развертывание вашего программного обеспечения, поскольку вам нужно только распространять образы Docker с помощью Dockerfiles.

С помощью Docker Compose несколько контейнеров могут быть скоординированы для построения целой системы микросервисов с контейнерами. Мы также можем использовать Docker Machine для установки среды Docker на сервере.

Примечание. Docker требует переосмысления работы. Так что в некоторых случаях могут потребоваться альтернативные технологии. Например, при развертывании нескольких веб-приложений Java на одном веб-сервере Java.

ОТДЫХ

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

Этот протокол веб-связи позволяет службам напрямую общаться через HTTP. Запросы и ответы обрабатываются в стандартных форматах, таких как XML, HTML или JSON.

REST - естественный выбор для большинства микросервисов, поскольку многие из них являются веб-приложениями. При необходимости можно выполнить обновление до HTTP / 2.0, уменьшив потребность в других протоколах, таких как gRPC, который основан на ProtocolBuffer и HTTP / 2.0.

Преимущества REST для микросервисов

Микросервис является синхронным, если он делает запрос к другим микросервисам во время обработки запросов и ожидает результата.

Протокол синхронной связи означает, что запрос возвращает результат. REST позволяет использовать протоколы синхронной связи, что означает, что запрос возвращает результат.

REST API хорошо подходят для быстрой связи между микросервисами и клиентскими приложениями с небольшой задержкой в ​​сети. REST - отличный вариант для создания масштабируемых микросервисов, поскольку они не имеют состояния и имеют модульную структуру.

Шаблон REST позволяет реализовать клиент и сервер независимо, без ведома другой сущности. Это означает, что код с любой стороны может быть изменен, не влияя друг на друга.

Примечание. Pact - отличная среда для написания тестов интерфейса REST на языке программирования. В результате создается файл JSON, содержащий запросы REST и ожидаемые ответы.

Redis

Redis - это хранилище структур данных в памяти с открытым исходным кодом. Это одна из самых популярных баз данных типа ключ-значение или NoSQL. Несмотря на то, что это база данных в памяти, она обеспечивает поддержку сохраняемых данных, репликацию мастер-реплика и хорошо работает по сравнению с традиционными системами баз данных.

Redis обычно используется в качестве первичной базы данных для вашего приложения, использующего Redis в постоянном режиме. В этом шаблоне сущности хранятся с хеш-операциями. Redis обычно строится на основе фреймворков Spring Cloud или Spring Boot.

Преимущества Redis для микросервисов

Как мы знаем, микросервисы должны поддерживать собственное состояние с помощью базы данных. Данные службы должны быть изолированы от других уровней данных, чтобы обеспечить несвязанное масштабирование. Redis соответствует многим из этих требований, включая окончательный ответ с малой задержкой.

Ваше приложение может использовать Redis разными способами. Redis широко используется в архитектуре микросервисов, поскольку он может служить кешем или основной базой данных сервиса. В зависимости от ваших требований Redis также может выступать в качестве брокера сообщений или кеша.

Redis Streams также поддерживает асинхронный шаблон и двунаправленную связь. Наряду с Spring Cloud Config вы можете создать шаблон распределенной конфигурации для своих микросервисов.

Прометей

Prometheus - это инструмент для мониторинга и оповещения систем с открытым исходным кодом, изначально разработанный в SoundCloud. Он реализует многомерную модель данных и предоставляет хранилище данных и скребки данных. Данные хранятся в виде пар ключ-значение в файлах, кэшированных в памяти.

Prometheus использует простой язык запросов, который составляет основу мониторинга задач. Сюда входят функции визуализации изменений и статистики.

Преимущества Prometheus для микросервисов

Для микросервисов поддержка Prometheus для сбора многомерных данных и запросов является особым преимуществом. Prometheus также предлагает расширяемую модель данных, которая позволяет вам присоединять произвольные измерения "ключ-значение" к временному ряду.

Prometheus известен своим простым дизайном и способностью создавать минималистичные приложения, поэтому Prometheus идеально подходит для простых приложений на основе микросервисов. Это также полезно для распределенных облачных сред.

Примечание. Prometheus в меньшей степени подходит для случаев, когда требуется точный посекундный сбор данных.

Консул

Consul - это технология обнаружения сервисов, которая гарантирует, что микросервисы могут взаимодействовать друг с другом. Он имеет некоторые особенности, которые отличает его от других решений для обнаружения сервисов, в том числе:

  • Наличие HTTP REST API и поддержка DNS
  • Автоматическое создание файлов конфигурации с использованием шаблона Consul
  • Он может выполнять проверки работоспособности и исключать службы из обнаружения служб в случае сбоя проверки работоспособности.

Консул очень гибкий. Благодаря интерфейсу DNS и шаблону Consul его можно использовать со многими технологиями. Это особенно важно в контексте микросервисов. Хотя в системе с самого начала может не потребоваться использование различных технологий, в долгосрочной перспективе будет выгодно иметь возможность интегрировать новые технологии.

Преимущества Consul для микросервисов

Настройка системы микросервисов с помощью Consul - отличный вариант для синхронной системы, поскольку ее инфраструктура отвечает типичным задачам синхронных микросервисов:

  • Обнаружение сервисов. Эта функция входит в состав Consul и полезна для интеграции новых технологий в ваши микросервисы.
  • Повышенная прозрачность: Consul полностью прозрачен и может использоваться без каких-либо зависимостей кода.
  • Конфигурация: Consul можно использовать для настройки микросервисов. Могут быть реализованы как обнаружение сервисов, так и их настройка.
  • Балансировка нагрузки: с помощью Consul DNS Consul прозрачно реализует балансировку нагрузки с помощью DNS-сервера.

Для каждого микросервиса Apache HTTPD должен иметь запись в файле конфигурации. Для этого можно использовать шаблон Consul. Шаблон Consul гарантирует, что микросервис будет доступен извне, как только он будет зарегистрирован в Consul.

Примечание. Consul написан на Go. Мониторинг и развертывание отличается от микросервисов Java.

Что учить дальше

Поздравляю! Вы узнали 5 основных технологий построения архитектуры микросервисов. Использование этих инструментов значительно упростит процесс разработки и развертывания, а также расширяет возможности приложений с высокой степенью масштабируемости.

Еще есть чему поучиться, и, в зависимости от ваших требований, могут оказаться полезными другие передовые технологии. Вам следует изучить:

  • Асинхронная связь с Atom
  • Обмен сообщениями и Кафка
  • Erueka для Service Discovery
  • Hystrix для устойчивости
  • PaaS с Cloud Foundry
  • и больше

Чтобы узнать больше об инструментах, которые мы обсуждали сегодня, и приступить к дальнейшим действиям, ознакомьтесь с учебным курсом Архитектура микросервисов: практическая реализация. Этот курс охватывает самые популярные технические стеки микросервисов и узнает, как реализовать сложные стандартные архитектуры.

Или, если вы хотите поближе познакомиться с микросервисами в целом, Введение в принципы и концепции микросервисов станет отличной отправной точкой. Вы подробно изучите микросервисы, стратегии миграции старых систем и технологии для внедрения микросервисов.

Удачного обучения!

Читать далее о микросервисах и архитектурах