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

Почему микросервисы так популярны?


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

Еще одно преимущество микросервисов — в том, что они, как правило, приводят к улучшению качества и сопровождаемости кода. Разбивая приложение на более мелкие и управляемые компоненты, разработчики могут эффективнее тестировать и отлаживать код, сокращая время и усилия, необходимые для устранения обнаруженных ошибок. 

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

«Baeldung, Хабр, SOF помогают программистам ответить на точечный вопрос или ознакомиться с областью в целом. Однако в этих источниках не всегда можно найти ответы по узконаправленным темам. Если вам нужны систематические знания, структурированные и выверенные, — возьмите книгу.

Микросервисы — та самая область знаний, которую трудно изучать точечно, особенно новичкам. Если вы стоите перед дилеммой „что прочитать и не прогадать“, то я бы рекомендовал не тратить время на эти размышления и выбрать себе одну книгу из уже собранного здесь списка. Остальные смогут дополнить вашу картину мира.

Уверяю вас, комплексный подход к изучению микросервисов с добавлением в свой рацион книг и статей выведет вас на совершенно другой уровень не только программирования, но и мышления. Скорее всего, получится по-новому взглянуть на принимаемые вами ранее решения и начать формировать уже другие, более взвешенные и обдуманные», — поделился Александр Иванов, кандидат технических наук и преподаватель на курсе «Микросервисная архитектура» в Skillbox.

Сэм Ньюмен. Создание микросервисов

Книга Сэма Ньюмена «Создание микросервисов» по праву считается классикой технической литературы, посвященной микросервисам. Автор — известный специалист по программным и облачным архитектурам, постоянный участник технических конференций, преподаватель и организатор нескольких успешных стартапов. На английском языке издание было опубликовано в 2015 году (в 2021-м издательство O’Reilly выпустило обновленную версию книги). Русскоязычный перевод появился в 2016-м, найти в продаже ее будет непросто. Но она этого, безусловно, стоит.

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

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

Третья часть книги посвящена стратегиям интеграции, в ней рассматриваются такие темы, как обмен сообщениями, потоковая передача данных и другие практические подходы. Ньюман также подробно рассказывает, как использовать Docker и другие контейнерные технологии для создания и развертывания микросервисов.

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

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

Сэм Ньюмен. От монолита к микросервисам

Еще одна книга Сэма Ньюмана, которую различные источники относят к категории бестселлеров, что, в общем-то, недалеко от истины: на Amazon Global эта книга занимает 81 341-ю позицию среди всех изданий в интернет-магазине (а их там насчитываются десятки миллионов), и 40-е место в категории Computer Systems Analysis & Design. В этом издании автор подробно рассматривает технологию преобразования традиционных монолитных приложений в микросервисы. В книге объясняется, как микросервисы могут использоваться для разбиения больших приложений на более мелкие, независимые компоненты, которые можно разрабатывать, тестировать и развертывать независимо друг от друга. В ней также даются рекомендации по оценке пригодности существующего монолита для миграции на микросервисную архитектуру. Ньюмен описывает подходы к процессу рефакторинга монолита в микросервисы и к поиску наилучших способов успешного развертывания новой архитектуры.

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

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

Адам Беллемар. Создание событийно-управляемых микросервисов

Книга Адама Беллемара «Создание событийно-управляемых микросервисов» описывает практические подходы к внедрению микросервисов для обработки больших объемов данных. Адам — инженер по обработке данных в компании Shopify, известен в качестве разработчика ПО и программного архитектора. Книга начинается с объяснения основ событийно-ориентированных архитектур, включая то, что они собой представляют и как их можно использовать. Затем Беллемар описывает различные типы микросервисов и рассказывает, как их можно применить для построения надежной событийно-управляемой инфраструктуры.

В книге рассматриваются такие темы, как использование обмена данными между отдельными компонентами системы и контракты на передачу информации, конвейеры и событийно-управляемая обработка данных, детерминированная обработка потоков и потоковая передача с поддержкой состояния. Кроме того, в издании представлен исчерпывающий обзор инструментов для интеграции приложений с событийно-управляемой архитектурой в уже существующие системы. Автор приводит примеры шаблонов таких микросервисных приложений — базовый шаблон производителя и потребителя, шаблоны типа «запрос — ответ», и другие. Также автор рассказывает о методах тестирования и развертывания подобных проектов.

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

Крис Ричардсон. Микросервисы. Паттерны разработки и рефакторинга

Если вам нужна книга, подробно рассказывающая о микросервисной архитектуре и ориентированная на опытных разработчиков, которые раньше имели дело преимущественно с монолитными приложениями, это именно то, что вы искали. Автор книги Крис Ричардсон — признанный эксперт в области микросервисов и основатель портала Microservices.io — подробно рассказывает о создании и развертывании микросервисов с использованием Java.

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

Второй раздел книги посвящен техническим аспектам построения микросервисов с помощью Java. В нем рассматриваются такие темы, как проектирование RESTful-сервисов, использование асинхронной связи, реализация обнаружения сервисов и балансировки нагрузки. Раздел также включает ряд практических примеров, демонстрирующих реализацию этих концепций с помощью популярных Java-фреймворков, таких как Spring Boot.

Третий и последний раздел книги посвящен операционным аспектам микросервисов, включая мониторинг, логирование и тестирование. В нем рассказывается о том, как использовать инструменты Prometheus, Grafana и Elasticsearch для мониторинга и анализа микросервисов, а также о том, как применять фреймворки для автоматизированного тестирования, в частности JUnit и Selenium.

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

Парминдер Сингх Кочер. Микросервисы и контейнеры Docker


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

Несмотря на название, помимо Docker в книге кратко упомянуты контейнеры Kubernetes, в основном в качестве возможной альтернативы. Кочер начинает с представления основных концепций микросервисов и контейнеров, а затем дает обзор различных компонентов этих архитектур. Он объясняет, почему микросервисы важны и как они могут улучшить масштабируемость и производительность, а также сравнивает микросервисные решения с монолитами — разумеется, не в пользу последних.

В книге приводятся примеры развертывания и управления микросервисами и контейнерами в экосистеме Docker. Даны подробные инструкции по ее установке и настройке, использованию хранилищ, организации сетевого взаимодействия, рассказывается о системе оркестрации Docker Swarm.

Это издание может быть полезно для DevOps-инженеров и разработчиков, решивших внедрить или создать с нуля микросервисные приложения на базе Docker. Книга ориентирована на практику и по большому счету представляет собой развернутый мануал по построению контейнерных приложений. Правда, контейнерам в ней уделено чуть больше внимания, чем собственно микросервисам. Наибольшую пользу книга принесет тем, для кого эти технологии в новинку, опытным специалистам она вряд ли будет интересна.

Санчес, Карнелл. Микросервисы Spring в действии

Еще одна книга американского издательства Manning, написанная Джоном Карнеллом и Иллари Санчесом, опытными инженерами-программистами, экспертами в сфере микросервисов и фреймворка Spring. Пожалуй, эту книгу можно назвать альтернативой изданию «Микросервисы. Паттерны разработки и рефакторинга», поскольку при рассмотрении микросервисных архитектур она также опирается на Java, но при этом делает упор на один из самых популярных и широко используемых фреймворков — Spring.

Книга состоит из трех разделов, каждый из которых посвящен отдельным аспектам разработки микросервисов. Первый традиционно содержит обзор микросервисов, их преимуществ и описывает ключевые концепции подобных архитектур. Второй посвящен практике построения микросервисов с использованием фреймворка Spring. В нем рассматриваются теоретические основы создания микросервисов на базе этого фреймворка и приводится ряд практических примеров, демонстрирующих реализацию этих концепций с применением возможностей Spring Boot и Spring Cloud. Наконец, завершающий раздел рассказывает о масштабировании микросервисов, принципах обеспечения безопасности приложений, реализации мониторинга и способах тестирования микросервисных систем с применением JUnit, Selenium и других инструментов.

Книга подойдет для разработчиков или архитекторов, желающих научиться строить и разворачивать микросервисы с использованием фреймворка Spring. 

Кристиан Хорсдал. Микросервисы на платформе .NET

И снова книга издательства Manning, и снова она поднимает тему построения приложений с микросервисной архитектурой на основе одной конкретной технологии — на сей раз это Microsoft .NET. Книга охватывает широкий спектр тем, включающих проектирование, тестирование и развертывание, а также масштабирование микросервисов.

Одним из ключевых достоинств книги является ее ориентация на популярную экосистему .NET. Автор Кристиан Хорсдал Гаммельгаард обладает богатым опытом работы со стеком Microsoft и в своей книге наглядно демонстрирует, как использовать эту платформу для создания и развертывания микросервисов.

Автор рассказывает, как разложить монолитное приложение на микросервисы, как проектировать и реализовывать сервисы с использованием .NET. На протяжении всей книги Кристиан Хорсдал приводит практические примеры и фрагменты кода для иллюстрации ключевых концепций. Он также описывает множество реальных примеров, которые дают ценное представление о проблемах и лучших практиках создания и развертывания микросервисов на платформе Microsoft.

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

Книга предназначена для разработчиков, знакомых с экосистемой .NET и имеющих некоторый опыт создания микросервисных приложений.

***

В последние годы архитектура на основе микросервисов становится все более популярной среди крупных команд разработчиков программного обеспечения, и это неудивительно. Эта архитектура позволяет быстро и эффективно создавать сложные приложения, сохраняя при этом высокий уровень масштабируемости и гибкости. А полезные книги, посвященные данной области, помогут начинающим и опытным специалистам поддерживать собственные знания и компетенции на высоком уровне. Прокачать знания по теме микросервисов можно на совместном курсе от Альфа-Банка и Skillbox “Микросервисная архитектура”. Обучение построено вокруг решения задач из практики разработчиков банка — в программу их заложено более сорока. Студенты учатся писать масштабируемые микросервисы, создавать готовые для эксплуатации Docker образы, разрабатывать cloud-ready-архитектуру/инфраструктуру, выстраивать автоматизированные пайплайны сборки и доставки кода в продакшн, строить интеграции между микросервисами (kafka, rest, s3), оркестрировать контейнеры с помощью Kubernetes и многому другому.

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


  1. ivanglushnev
    18.04.2023 13:39

    спасибо за подборку!


  1. CBET_TbMA
    18.04.2023 13:39
    +1

    микросервисы способствуют снижению затрат, поскольку упрощают замену или обновление компонентов без необходимости переписывать все приложение

    Неубедительно! Замена компонентов и так не требует переписывать ВСЁ(!!!) приложение. А можете поояснить свою мысль? (если это конечно не генеенка ИИ)


    1. Holmogorov
      18.04.2023 13:39

      Да вот не факт, кстати. В монолите замена компонента часто тянет за собой кучу зависимостей, особенно, если API проектировали кое-как (т. е. как обычно), и не заложили масштабируемость изначально. Да даже если заложили: делается приложение изначально по ТЗ, потом клиенту внезапно приспичило вот этот модуль добавить, еще этот перепилить, чтобы он за пивом бегал и кофе варил, и сбоку бантик, а эти функции вообще никак не предусмотрены архитектурой. С микросервисной архитектурой все это проще в разы.


      1. habr_gpt
        18.04.2023 13:39

        Есть така отечественная система работы клииентамии - Контакт - модульна, модули обноляютс автоматиески, проблем не замечено, система доольно сложная.Ну и сама Windows - она же в значительной части модульная, обновлется, по кайней мерре у меня сбоев за 10 лет при обновлениях не было.