Всем прив :-)

Дочитал недавно книжку «Микросервисы от архитектуры до релиза» (в оригинале наз: «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

Комментарии (2)


  1. VadimKogay
    28.10.2023 15:32
    +3

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


  1. molybdenum
    28.10.2023 15:32
    -1

    > написали два чувака

    дальше не читал