Обзор книги “Microservice Patterns and Best Practices”

Прочитал на выходных очередную книжку по архитектуре программного обеспечения “Microservice Patterns and Best Practices” за авторством Vinicius Feitosa Pacheco. Книжка определенно интересная, с практическим уклоном, но немного не мой профиль. Я люблю концепции и теории, а автор пошел от сохи:) В процессе построения микросервисной архитектуры для новостного портала вы познакомитесь как с архитектурными концепциями и паттернами, так и попишите код на python и go, поконфигурируете nginx, напишите docker файлы, настроите docker compose и т.д. А я люблю читать концепции, хотя ясно, что дьявол кроется в деталях, но явно не в настолько простых.

Рис.1 “Заставка книги”

Автор начинает с того, чтобы объяснить концепцию микросервисов. И выделяет на это первую часть книги. Начинается все с обсуждения приложения и концепций, что помогут его сделать лучше:

Дальше рассматривается вопрос независимого деплоя, агрейда, масштабирования и замены. Ключевое слово тут — “независимый”. Отдельно стоит упомянуть “Scale Cube”, который подробно обсуждался в книге “The art of Scalability”. Этот куб трехмерный (и слава богу, т.к. рисовать тессеракт я не умею).

В качестве осей выступают:

Рис.2 “Scale Cube”

Способы коммуникации, среди которых есть 2: синхронная и асинхронная. И т.д.

Вторая глава целиком посвящена тулингу для микросервисов. Автор рассматривает его довольно здраво и в конце определяется с инструментами:

В третьей главе рассматриваются внутренние паттерны:

Четвертая глава отдана обсуждению экосистемы микросервисов:

В пятой главе рассматривается паттерн/антипаттерн “shared data microservices”. По факту, для greenfield, когда вы проектируете и создаете с нуля — это антипаттерн. Но для brown field, когда у вас уже есть монолит, это неплохая возможность начать дробить монолит на микросервисы. Вот рабочий алгоритм:

Забавно, что в рамках этого паттерна/антипаттерна нет проблем с оркестрацией данных, так как по факту они лежат в одном месте. Для того, чтобы использование этого подхода не окончилось печально, надо применять следующие практики:

Главы с шестой по девятую посвящены отдельным паттернам. Паттерны довольно простые, но если еще не съели собаку на проектировании распределенных систем, состоящих из цепочек микросервисов, то вам стоит их:

В десятой главе автор рассказывает про асинхронный способ коммуникаций. Рассказывает неплохо, но я бы порекомендовал почитать отдельную книгу “Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions” (Addison-Wesley Signature Series) Gregor Hohpe, Bobby Woolf.

В одиннадцатой главе автор собирает все разработанные микеросервисы вместе и рассказывает про то, как разделить микросервисы по уровням

Последние две главы посвящены тестированию, а также вопросам эксплуатации (мониторинг, безопасность, deploy). По этим вопросам тоже дана только краткая информация, но ее достаточно, чтобы на коленке запилить набор микросервисов.

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

Director of digital ecosystem development department at Tinkoff. Bachelor at applied math, Master at system analysis, Postgraduate studies at economics.

Director of digital ecosystem development department at Tinkoff. Bachelor at applied math, Master at system analysis, Postgraduate studies at economics.