Рубрики
Uncategorized

Микросервисы — введение, как разработать и разработать? Когда использовать?

Эта статья будет сосредоточена на внедрении архитектуры MicroServices, преимуществах, как проектировать и разработать … Tagged с микросервисами, Agile, DevOps, CloudNative.

Облачный родной (4 серии деталей)

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

Микросервисы введение

Архитектурный стиль MicroService — это подход к разработке единого приложения в качестве набора небольших услуг, каждый из которых работает в своем собственном процессе и общении с легкими механизмами, часто HTTP -ресурсом API.

У него есть следующие характеристики:

  • Построен вокруг бизнес -возможностей
  • Свободно связанные услуги и очень устойчивые, масштабируемые услуги
  • Независимо развертываемое с использованием автоматизированных трубопроводов (CI/CD)
  • Способный быть разработанной небольшой командой — высоко поддерживается и проверяется

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

Преимущества архитектуры микросервисов:

  • Эволюционный дизайн
  • Возможно избирательно масштабировать вверх и вниз на основе объема
  • Обеспечивает непрерывную доставку и развертывание — более короткое время на рынке
  • Легко понять и добавить новых членов команды
  • Гибкость по выбору наиболее подходящего технологического стека для новых изменений в бизнесе

После диаграммы Мартина Фаулера суммирует сравнение монолита и микросервисов.

Как разложить и разработать микросервисы?

Для разработки системы с помощью микросервисов принципы дизайна домена (DDD) очень удобны. В нем говорится, разработайте микросервисы, рассматривая высокую сплоченность связанной бизнеса функциональности.

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

Например, онлайн -магазин продуктового магазина в качестве домена будет иметь следующие субмены.

  • Каталог товаров
  • Управление заказами
  • Управление доставкой
  • Управление запасами

Эта сегрегация ограниченного контекста, доменов и поддонов требует хорошего понимания бизнес -структуры и организации.

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

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

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

Как разработать микросервисы?

Чтобы достичь свободной связи, система с микросервисами может иметь более одной/базы данных на услугу. Поэтому рассмотрим шаблон SAGA для управления распределенными транзакциями, поскольку 2-фазный коммит не является вариантом. Каждая служба может публиковать события как и когда их данные изменяются, а другие службы потребляют эти события, чтобы предпринять соответствующие действия на их стороне (обновить их данные). Рассмотрим шаблон дизайна сохранения событий.

Для получения данных, принадлежащих нескольким сервисам, рассмотрите возможность сегрегации ответственности командных запросов (CQR) и шаблона проектирования композиции API.

Это дает большую гибкость с точки зрения выбора технологического стека для разработки микросервисов, но будьте осторожны, чтобы рассмотреть «цикл шумиха» любой технологии и доступности талантов. Например, Java широко используется и популярный язык программирования при поддержке различных структур с открытым исходным кодом и таких инструментов, как Spring Boot, Kafka, Swagger, и многие другие. Python также поставляется с множеством популярных библиотек, таких как Numpy, Pandas, Pytorch и Talent Ploos.

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

Когда использовать архитектуру микросервисов?

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

Большинство крупномасштабных веб -сайтов, включая Netflix, Amazon и eBay, превратились из монолитной архитектуры до архитектуры микросервисов.

Счастливого кодирования и строительства микросервисов! Пожалуйста, нравится, поделитесь и комментируйте свои взгляды/мнение.

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

Облачный родной (4 серии деталей)

Оригинал: «https://dev.to/dhruvesh_patel/microservices-introduction-how-to-design-develop-when-to-use-2pfg»