Архитектура микросервисов — это методология, позволяющая разделить монолитное единое приложение на небольшие приложения и сервисы, которые выполняют легкие задачи. Бизнес-возможности и независимо развертываемые модели являются основными целями разработки микросервисов. Архитектура микросервисов построена с использованием различных языков программирования, они могут быть развернуты и соединены между собой.
На приведенной ниже диаграмме показаны различные фреймворки, связанные с каждым языком, популярным в 2021 году и так далее.
Существует несколько фреймворков для разработки архитектуры микросервисов с использованием языка программирования Java:
Доступно несколько фреймворков для разработки архитектуры микросервисов с использованием языка программирования Go
Доступно несколько фреймворков для разработки архитектуры микросервисов с использованием языка программирования Python:
Существует несколько фреймворков для разработки архитектуры микросервисов с использованием языков программирования NodeJS
ASP.Net, фреймворк, используемый для веб-разработки и делающий ее API. Микросервисы поддерживают встроенные функции, для их (микросервисов) построения и развертывания с помощью контейнеров Docker.
6. MultiLanguage
Существует несколько фреймворков для разработки архитектуры микросервисов с использованием нескольких языков
Выбор фреймворка должен основываться на признании в отрасли, наличии навыков, поддержке сообщества, кривой обучения, простоте разработки и уверенности за счет передового опыта применения. ИТ-организации должны понимать плюсы и минусы выбранного фреймворка и убедиться, что их решение не помешает будущим деловым и операционные потребностям.
Источник статьи: https://habr.com/ru/company/otus/blog/563884/
Преимущества микросервисов
- Внедрение новых технологий и процессов.
- Независимое масштабирование приложений.
- Готовность к облачным вычислениям.
- Безупречная интеграция.
- Эффективное использование аппаратного обеспечения.
- Безопасность на уровне услуг.
- Функции на базе API для эффективного повторного использования.
- Независимая разработка и развертывание приложений.
Критерии выбора фреймворка
Ниже перечислены некоторые критические аспекты, которые необходимо учитывать при выборе подходящего фреймворка:- Популярность — измеряется показателем признания фреймворка в отрасли, основанным на количестве клиентов, которые сделали его (фреймворк) стандартом предприятия. Другими важными аспектами являются наличие документации и количество квалифицированных специалистов, доступных на рынке.
- Зрелость сообщества — репутация поддерживающих фреймворк компаний, таких как Apache, Google или Spring. Зрелость фреймворка с точки зрения поддержки сообщества / коммерческой поддержки и частоты выпуска релизов для устранения проблем и добавления новых функций.
- Простота разработки — Фреймворки облегчают разработку приложений и повышают производительность разработчиков. IDE (Integrated Development Environment) и инструменты, поддерживающие фреймворки, также играют существенную роль в быстрой разработке приложений.
- Кривая обучения — Наличие документации в виде учебников, передовых методов и решений типичных проблем играет важную роль в сокращении кривой обучения и повышении общей производительности разработчиков.
- Поддержка архитектуры — Фреймворки предоставляют модули кода и интерфейсы со встроенными шаблонами проектирования, которые облегчают разработчикам приложений сложность кодирования.
- Поддержка автоматизации — Фреймворк поддерживает автоматизацию задач, связанных со сборкой и развертыванием микросервисов.
- Независимое развертывание — Фреймворк должен поддерживать все аспекты независимого развертывания - прямую и обратную совместимость, многократное использование и переносимость.
- Непрерывная интеграция — Разработчики часто интегрируют код в общий репозиторий, желательно несколько раз в день. Каждая интеграция может быть проверена с помощью автоматизированной сборки и тестов.
На приведенной ниже диаграмме показаны различные фреймворки, связанные с каждым языком, популярным в 2021 году и так далее.
Фреймворки для микросервисов (Microservices Frameworks)
1. JavaСуществует несколько фреймворков для разработки архитектуры микросервисов с использованием языка программирования Java:
- Spring Boot — Spring Boot — это популярный фреймворк микросервисов на Java. Позволяет создавать как небольшие, так и крупномасштабные приложения. Spring boot легко интегрируется с другими популярными фреймворками с помощью инверсии управления.
- Dropwizard — фреймворк Dropwizard используется для разработки удобных, высокопроизводительных и Restful веб-сервисов. Без дополнительных настроек поддерживает инструменты конфигурации, метрики приложения, протоколирования и работы.
- Restlet — фреймворк Restlet следует архитектурному стилю RST, который помогает Java-разработчикам создавать микросервисы. Принят и поддерживается Apache Software License.
- Helidon — Коллекция библиотек Java для написания микросервисов. Простой в использовании, с инструментальными возможностями, поддержкой микропрофилей, реактивным веб-сервером, наблюдаемый и отказоустойчивый.
- AxonIQ — Событийно-ориентированный фреймворк микросервисов с открытым исходным кодом, сфокусированный на Command Query Responsibility Segregation (CQRS), Domain-Driven Design (DDD) и скоринге событий.
- Micronaut — full-stack фреймворк на основе JVM для построения модульных, легко тестируемых микросервисных и бессерверных приложений. Создает полнофункциональные микросервисы, включая внедрение зависимостей, автоконфигурацию, обнаружение служб, маршрутизацию HTTP и клиент HTTP. Micronaut стремится избежать недостатков фреймворков Spring, Spring Boot, обеспечивая более быстрое время запуска, уменьшение объема памяти, минимальное использование рефлексии и спокойное юнит-тестирование.
- Lagom — Реактивный фреймворк микросервисов с открытым исходным кодом для Java или Scala. Lagom базируется на Akka и Play.
Доступно несколько фреймворков для разработки архитектуры микросервисов с использованием языка программирования Go
- GoMicro — подключаемая библиотека RPC предоставляет фундаментальные строительные блоки для написания микросервисов на языке Go. Поддерживаются API-шлюз, интерактивный CLI, сервисный прокси, шаблоны и веб-панели.
Доступно несколько фреймворков для разработки архитектуры микросервисов с использованием языка программирования Python:
- Flask — Web Server Gateway Interface (WSGI) Веб-ориентированный легкий фреймворк микросервисов на языке Python. Flask-RESTPlus - расширение для Flask, которое предоставляет поддержку для быстрого создания REST API.
- Falcon — веб-фреймворк API для построения надежных бэкендов приложений и микросервисов в Python. Фреймворк отлично работает как с асинхронным интерфейсом шлюза сервера (ASGI), так и с WSGI.
- Bottle — Быстрый, легкий и простой WSGI микросервисный веб-фреймворк на основе Python. Распространяется одним файловым модулем и не имеет зависимостей, кроме стандартной библиотеки Python.
- Nameko — Фреймворк Nameko для построения микросервисов на Python со встроенной поддержкой RPC через AMQP, асинхронных событий, HTTP GET и POST, а также WebSocket RPC.
- CherryPy — CherryPy позволяет разработчикам создавать веб-приложения, используя объектно-ориентированное программирование на Python.
Существует несколько фреймворков для разработки архитектуры микросервисов с использованием языков программирования NodeJS
- Molecular — событийно-ориентированная архитектура микросервисов, построенная с использованием NodeJS. Содержит встроенный реестр сервисов и выполняет их динамическое обнаружение, осуществляет балансировку нагрузки на запросы и события, а также функцию отказоустойчивости и встроенное кэширование.
ASP.Net, фреймворк, используемый для веб-разработки и делающий ее API. Микросервисы поддерживают встроенные функции, для их (микросервисов) построения и развертывания с помощью контейнеров Docker.
6. MultiLanguage
Существует несколько фреймворков для разработки архитектуры микросервисов с использованием нескольких языков
- Spark — создание веб-приложений микросервисов с использованием Kotlin и Java. Выразительный и простой веб-фреймворк DSL на Java/Kotlin, созданный для быстрой разработки.
Заключение
В процессе разработки проектов предприятия и сообщества разработчиков сталкиваются с проблемой выбора правильного фреймворка микросервисов для быстрого и экономически эффективного создания надежных приложений.Выбор фреймворка должен основываться на признании в отрасли, наличии навыков, поддержке сообщества, кривой обучения, простоте разработки и уверенности за счет передового опыта применения. ИТ-организации должны понимать плюсы и минусы выбранного фреймворка и убедиться, что их решение не помешает будущим деловым и операционные потребностям.
Источник статьи: https://habr.com/ru/company/otus/blog/563884/