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



Сильные стороны микросервисов


Можно выделить следующие сильные стороны микросервисных архитектур:

  • Внедрение в практику новых технологий и подходов к разработке крупных проектов.
  • Независимое масштабирование отдельных компонентов приложений.
  • Хорошая приспособленность к развёртыванию в облачных средах.
  • Возможность беспроблемной интеграции с другими системами.
  • Эффективное использование аппаратных ресурсов.
  • Высокий уровень безопасности.
  • Функционал, основанный на API, подходящий для многократного использования.
  • Независимые разработка и развёртывание приложений.

Критерии выбора фреймворка для разработки микросервисных приложений


Ниже приведён список важных соображений, которые стоит принять во внимание при выборе фреймворка для микросервисного проекта:

  • Популярность — этот показатель, указывающий на то, как индустрия разработки ПО принимает тот или иной инструмент, можно оценить, проанализировав количество пользователей, выбравших этот инструмент в качестве основы своих проектов. О популярности фреймворка может говорить доступность и качество документации к нему, а так же количество специалистов по этому фреймворку, которые ищут работу.
  • Зрелость сообщества — этот показатель основан на репутации тех, кто занимается поддержкой фреймворка (Google, Apache, Spring). Тут же оценивается и зрелость фреймворка в плане поддержки, которую можно получить бесплатно или на коммерческой основе. Стоит обратить внимание и на частоту релизов рассматриваемого инструмента, которые направлены на исправление ошибок и на добавление новых возможностей.
  • Удобство разработки — фреймворк способен серьёзно повлиять на простоту разработки приложений, основанных на нём, и на продуктивность программистов. На удобство и скорость разработки проектов на некоем фреймворке серьёзно влияет его поддержка на уровне различных IDE и наличие вспомогательных инструментов.
  • Сложность изучения — изучение фреймворков значительно упрощается благодаря наличию документации к ним, имеющей форму учебных руководств, «лучших практик», сборников решений типичных задач. Если фреймворк легко изучить, это значит, что у программистов, применяющих его, есть шансы оперативного выхода на высокую продуктивность его использования.
  • Поддержка различных архитектур разработки ПО — наличие во фреймворке, модулей и интерфейсов, созданных с использованием различных паттернов проектирования, упрощающих работу программистов.
  • Поддержка средств автоматизации — речь идёт о поддержке систем автоматизации различных задач, связанных со сборкой и развёртыванием микросервисов.
  • Поддержка независимого развёртывания микросервисов — тут имеются в виду четыре аспекта независимого развёртывания микросервисов: прямая совместимость, обратная совместимость, возможность многократного использования, переносимость.
  • Поддержка систем непрерывной интеграции — речь идёт о том, что разработчики достаточно часто вносят изменения в общий репозиторий, в идеале — несколько раз в день. Каждое изменение проверяется с использованием автоматизированного фреймворка, выполняющего сборку и тестирование кода.

Существуют различные фреймворки для разработки микросервисов. Выбор конкретного фреймворка основывается на требованиях проекта. Среди языков и платформ, используемых для разработки микросервисов, можно отметить Java, Python, C++, Node.js и .Net.

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


Микросервисные фреймворки

Микросервисные фреймворки


В следующих разделах мы рассмотрим некоторые сведения о фреймворках из вышеприведённой схемы.

?Java


Существует довольно много микросервисных фреймворков, рассчитанных на тех, кто пишет на Java:

  • Spring Boot — это популярный микросервисный фреймворк, рассчитанный на Java. Он подходит и для небольших проектов, и для крупномасштабных приложений. Spring Boot легко интегрируется с другими фреймворками, работать с ним можно, используя принцип инверсии управления.
  • Dropwizard — этот фреймворк применяется для разработки приложений, с которыми удобно работать в DevOps-средах, для создания высокопроизводительных веб-сервисов, рассчитанных на работу с ними с использованием RESTful-API. Dropwizard включает в себя стандартные механизмы настройки приложений, средства для анализа производительности проектов, инструменты для ведения журналов и другие полезные возможности.
  • Restlet — этот фреймворк создан с использованием архитектуры REST, что упрощает разработку микросервисов. Это — бесплатный инструмент, которым можно пользоваться на условиях Apache Software License.
  • Helidon — это коллекция Java-библиотек для написания компактных и быстрых микросервисов. Она поддерживает спецификации MicroProfile, CORS и gRPC.
  • AxonIQ — опенсорсный микросервисный фреймворк, который основан на обработке событий. В нём используются CQRS, DDD и Event Sourcing.
  • Micronaut — это фуллстек-фреймворк, основанный на JVM, предназначенный для разработки модульных микросервисов и бессерверных приложений, легко поддающихся тестированию. Он позволяет создавать полнофункциональные микросервисы, поддерживает внедрение зависимостей во время компиляции проектов, автоматическую настройку приложений, HTTP-маршрутизацию, создание HTTP-клиентов. Этот фреймворк создавали, стремясь, чтобы в нём не было бы недостатков, характерных для Spring Boot. В частности, речь идёт о более быстром запуске приложений, об уменьшении потребления памяти, о минимизации использования рефлексии, об упрощении модульного тестирования.

?Golang


В распоряжении тех, кто пишет на Go, имеется несколько фреймворков для разработки микросервисов. Мы рассмотрим лишь один из них:

  • Go Micro — это проект, предоставляющий разработчику основные элементы для создания микросервисов. Он поддерживает RPC и обмен данными, основанный на событиях. Среди его возможностей можно отметить поддержку шлюза API, интерактивного интерфейса командной строки, прокси, шаблонов и панелей управления.

?Python


Python-разработчик может выбрать подходящий микросервисный фреймворк из достаточно большого количества вариантов:

  • Flask — легковесный микросервисный фреймворк, поддерживающий WSGI. Разработку REST-API с использованием этого фреймворка можно ускорить, применив его расширение Flask-RESTPlus.
  • Falcon — фреймворк, рассчитанный на разработку надёжных бэкендов приложений и микросервисов. Он одинаково хорошо поддерживает ASGI и WSGI.
  • Bottle — быстрый, легковесный и простой в использовании микросервисный фреймворк, поддерживающий WSGI. Он распространяется в виде однофайлового модуля, а среди его зависимостей есть лишь стандартная библиотека Python.
  • Nameko — этот фреймворк для разработки микросервисов отличается встроенной поддержкой RPC через AMQP, асинхронных событий, средств для работы с HTTP и WebSocket.
  • CherryPy — фреймворк, позволяющий разрабатывать веб-приложения с использованием объектно-ориентированных возможностей Python.

?Node.js


Говоря о микросервисных фреймворках для платформы Node.js, мы рассмотрим лишь один из них:

  • Moleculer — это прогрессивный микросервисный фреймворк. Он отличается такими возможностями, как встроенный реестр сервисов, динамическое обнаружение сервисов, балансировка нагрузки при работе с запросами и при обработке событий, отказоустойчивость, встроенный кеш.

?.NET


Платформа .NET даёт разработчику инструменты, необходимые для разработки микросервисов и для их развёртывания с использованием контейнеров Docker.

?Фреймворки, рассчитанные на несколько языков программирования


В этой категории имеется несколько фреймворков, в частности — следующие:

  • Spark — это — фреймворк для создания микросервисных приложений с использованием Kotlin или Java, ориентированный на простую и быструю разработку проектов.
  • Lightbend Lagom — опенсорсный реактивный микросервисный фреймворк для Java или Scala. Он основан на проектах Akka и Play.

Итоги


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

Какими фреймворками вы пользуетесь при разработке микросервисов?