Pull to refresh

Книжный кружок. Рецензия на книгу «Микросервисы от архитектуры до релиза»

Level of difficultyEasy
Reading time4 min
Views9.5K

Всем прив :-)

Дочитал недавно книжку «Микросервисы от архитектуры до релиза» (в оригинале наз: «Microservices Up & Running») Вышла она в конце 2020, а недавно ее перевели. В издательстве «Питер» периодически делают щедрые скидосы на книжки, и я решил порадовать себя и накупил кучу). Вообще люблю книги в бумажном виде, особенно фундаментальные книги — те, к которым я еще неоднократно возвращаюсь и из которых черпаю идеи. Более хардовые и с кодом я предпочитаю электронные.

И еще гора непрочитанных)
И еще гора непрочитанных)

«Microservices Up & Running» написали два чувака: Ронни Митра и Иракли Надареишвили. Оба они не понаслышке поели финтех энтерпрайза и имеют очень богатый опыт, занимаются консалтингом и пишут книги. Ронни — соавтор «Continuous API Management», а также вместе с Иракли участвовал в написании «Microservices Architecture». Ронни занимается консалтингом финтех компаний, а Иракли сейчас Banking Platform Managing Director в JPMorgan Chase & Co, а до этого был вице‑президентом по инновациям в Capital One Financial и возглавлял команды, ответственные за создание современной банковской платформы. В общем, это все можно посмотреть в их профиле в Линкедине. Им явно есть чем поделиться.

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

Если прям очень коротко, то тут поднимаются вопросы:

  • микросервисы, их плюсы, минусы, DDD, Event Storming

  • как вести ADR (architecture decision record)

  • как построить команды, работающие с системой

  • процесс создания сервисов от проектирования до деплоя (фреймворк SEEDs от авторов)

  • инфраструктура как код

  • GitOps

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

Для реализации авторы выбрали микросервисную архитектуру, обсудили плюсы минусы, почему Event Storming проще, чем DDD для определения границ сервисов, а также про CAP теорему и как «ее обойти». Рассказали про то, как принимать архитектурные решения, почему важно их прописывать и сохранять так же как и сам код. Порассуждали про оптимальный выбор размера команды, типы команд и построили их топологию, естественно, не обошлось без Team Topologies и закона Конвея:) Вообще, когда читал, параллельно лазил и искал еще всякие полезняшки по тем вещам, что затрагиваются в книге. Наткнулся еще вот на отличную статью на Хабре про размер команд.

Еще вот тут рассказывается про доклад Сергея Баранова о Event Storming.

А дальше авторы на основе своего опыта выстроили для себя фреймворк эволюции создания сервисов и назвали его SEEDs (Seven Essential Evolutions of Design for Services) Немного спойлерну, SEEDs состоит из следующих шагов:

  1. Определение клиентов системы

  2. Определение JTBD (jobs to be done)

  3. Создание UML‑диаграмм взаимодействий между сервисами системы

  4. Выделение из JTBD высокоуровневых действий и запросов

  5. Описание каждого запроса в виде спецификации OpenAPI

  6. Получение обратной связи по написанному API

  7. Реализация микросервисов

В общем, все реально сложно уместить в книге, в Гитхабе есть исходники всего, что тут создается. После реализации микросервисов авторы занимаются развертыванием и инфрой. Нафигачивают инфру Терраформом, с кластером Куба, AgroCD, Траефиком и приводят большие куски кода) Тут конечно новички изрядно ох..т удивятся. Авторы проделали очень приличную работу. Причем, они все это развернули в облаке Амазона. Понятно, что выбор Куба и прочие вещи должны быть в реальности очень оправданы и взвешены, авторы тоже об это напоминают. В общем, сам код в книге приносит мало пользы, разве что дает просто визуальную наглядность процесса. Из забавного: со сложными вещами параллельно объясняются простые вещи, что вот curl — это чтобы подергать API, а вот Helm — это пакетный манагер для Куба. Но на мой взгляд, «Microservices Up & Running» не совсем для новичков и не только для разработчиков, а очень полезна будет техлидам, продвинутым инженерам и архитекторам. А из примера в книге можно вообще запилить серию тренингов.

В конце авторы подводят выводы и рассуждают о сложностях систем. В общем, это было очень интересно, очень рекомендую полистать ;)

Sergey Sabbath

Only registered users can participate in poll. Log in, please.
Захотелось полистать?
86.21% да75
13.79% нет12
87 users voted. 7 users abstained.
Tags:
Hubs:
Total votes 19: ↑13 and ↓6+11
Comments2

Articles