
Ода микросервисной архитектуре программного обеспечения
Данную книгу мне дал почитать коллега по работе. Я по роду своей деятельности имею непосредственное отношение к разработке программ с применением микросервисной архитектуры, поэтому я охотно согласился прочитать данный труд. Ранее Криса Ричардсона я не читал, эта книга стала первым знакомством с автором.
Сразу хочу сказать, что книга не рассчитана на начинающих программистов. Описываемые в ней термины, технологии, программы и паттерны будут лучше поняты и восприняты более опытными профессионалами.
Итак, в чем же прелесть микросервисов, чем они помогают разработчикам и бизнесу? Дело в том, что приложения, написанные с применением этого подхода легче поддерживаются, лучше масштабируются и быстрее доставляются в промышленную среду. Хотя и без недостатков не обошлось: в некоторых случаях разработка и тестирование(сквозное тестирование в частности) микросервисного приложения сложнее и трудозатратнее, чем разработка и тестирование монолитного приложения.
Архитектура и проектирование в конечном итоге сводятся к принятию решений. Вам нужно решить, какая архитектура лучше всего подходит для вашего приложения — монолитная или микросервисная. Делая этот выбор, вы должны взвесить большое количество за и против. Если остановитесь на микросервисах, вам придется столкнуться с множеством вызовов.
Автор рассматривает в книге конкретный пример программы — «FTGO». Это приложение для доставки пищи из ресторанов. Изначально оно представляет собой монолитное приложение, которое постепенно разделяется на микросервисы. Из него выносятся обособленные части бизнес-логики, такие как "ресторан", "кухня", "заказ" и "доставка". Это позволит назначить на каждую часть свою команду разработки, которая будет отвечать только за данный сервис.
В книге описывается ряд методик и паттернов, которые присущи микросервисной архитектуре, например: 1) синхронное и асинхронное межпроцессные взаимодействия; 2) предметно-ориентированное проектирование; 3) управление транзакциями с помощью повествований; повествования на основе хореографии и оркестрации; 4) доменные модели и агрегаты; 5) порождение событий; 6) объединение API и CQRS; 7) API-шлюз; 8) способы развертывания микросервисов: виртуальные машины, контейнеры, бессерверные платформы (лямбда-функции); 9) и многое другое.
Также автором рассмотрено и описано множество программ и технологий, которые можно использовать при разработке микросервисов: 1) «DynamoDB» - система управления базами данных класса NoSQL в формате «ключ — значение», предлагаемая Amazon.com как часть пакета Amazon Web Services; 2) «GraphQL» - язык запросов данных и язык манипулирования данными с открытым исходным кодом для построения веб ориентированных программных интерфейсов; 3) «Gherkin» - человеко-читаемый язык для описания поведения системы; 4) «Docker» - программное обеспечение для автоматизации развёртывания и управления приложениями в средах с поддержкой контейнеризации, контейнеризатор приложений; 5) «Kubernetes» - открытое программное обеспечение для оркестровки контейнеризированных приложений, автоматизации их развёртывания, масштабирования и координации в условиях кластера; 6) «AWS Lambda» - платформенная услуга в рамках Amazon Web Services в модели «функция как услуга», обеспечивающая событийно-ориентированные бессерверные вычисления;
Это лишь малая часть, того, что Вы можете найти в этой книге.
Я рекомендую прочитать ее тем, кто занимается разработкой микросервисов, из книги можно почерпнуть много нового и интересного как по теме разработки, так и по теме администрирования.
Небольшими минусами являются пара опечаток, что встретились в книге, и довольно сложная, временами, подача материала. Читать залпом эту книгу не получится, она довольно быстро утомляет, ввиду сложности описываемых тем и технологий.
Моя оценка 4/5.









































