@Slabada

Как реализовываются микросервисные проекты?

Добрый день, подскажите, я изучаю микросервисы и понимаю логику работы, как это работает, зачем это нужно и т.д, но я не могу понять как микросервисный проект выглядит в реальности.
Это, например, два абсолютно разных проекта которые соединяются связью ? или это один проект, условный контейнер, и в нем создаются множество модулей ? что из этого реально является микросервисом и используется в реальности ?
  • Вопрос задан
  • 124 просмотра
Пригласить эксперта
Ответы на вопрос 4
vabka
@vabka Куратор тега Веб-разработка
Токсичный шарпист
Под микросервисами обычно понимают N раздельных процессов, которые могут запускаться на разных компьютерах. Далее они уже коммуницируют через какой-то транспорт, если это вообще нужно.

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

Как конкретно ведётся разработка - это уже на откуп команде. Подход легко может различаться исходя из языка/платформы.
Ответ написан
Комментировать
@Wan-Derer
Зобанели на Хабре, волки́ ;((
Это неважно. Можно для удобства накидать папки с проектами в одну папку и открывать её в IDE, а проекты оформить как модули. Но проекты могут разрабатываться на разных языках, разными командами и в разных местах. Тогда вы просто договариваетесь о контракте - протоколах, форматах, порядке обмена информацией между модулями, а дальше каждый пилит так как ему удобно.
Ответ написан
index0h
@index0h
PHP, Golang. https://github.com/index0h
Это полностью проекто зависимая штука. К микросервисам стоит выростать из монолита. Микросервис по хорошему должен покрывать полностью конкретный домен, но им же и огранививаться. Вот тут как раз и кроется сложность. Если вы никогда не реализовывали проекты конкретной области, вероятнее всего вы разделите микросервисы не правильно, что усложнит и удорожает поддержку. В худшем сценарии ваши микросервисы будут чем-то вроде REST вокруг таблички в БД.

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

Пример плохого разделения для задачи отправки писем по событиям (регистрация, новости, маркетинг...):
Сервис_А подготавливает данные и дергает Сервис_Б, что бы тот запихнул их в шаблон и отправил почту.
Подход плохой потому, что каждое новое сообщение требует изменений И Сервис_А И Сервис_Б, причем синхронизированных.

Та же задача, но с более лучшим решением:
Сервис_А отправляет события в стиле "юзер зарегался", "юзер сделал покупку",... Сервис_Б самостоятельно решает, что и когда отправлять ползователю.
В этом случае Сервис_А и Сервис_Б зависят друг от друга по минимуму.
Ответ написан
Комментировать
@Kostik_1993
Web Developer
У меня есть проект, небольшой сервис на js/php он же вебморда. А так же ещё два сервиса один это сервис питоне, он слушает реббит подхватывает данные из него обрабатывает, как только закончил отправляет запрос в реббит о готовности. Вебморда слушает запрос когда работа первого сервиса закончена он отправляет эти данные уже обычным пост запрос на ещё один на ноде, тот если есть данные отдаёт их, если нет создаётся таска по завершении которой вебморда через реббит узнаёт. У каждого сервиса своя зона отвественности и свои языки. А общаться они через реббит и апи. А из себя представляют полноценные приложения способные работать и отдельно. В теории они могут быть и модулями.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы