Facebook Pixel
Searching...
Русский
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Building Microservices

Building Microservices

Designing Fine-Grained Systems
автор Sam Newman 2015 280 страниц
4.21
4k+ оценки
Technology
Programming
Computer Science
Слушать

ключевых вывода

1. Микросервисы: Маленькие, автономные сервисы, работающие вместе

Микросервисы — это маленькие, автономные сервисы, работающие вместе.

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

Преимущества и вызовы. Ключевые преимущества микросервисов включают:

  • Улучшенная модульность
  • Легкость масштабирования отдельных компонентов
  • Разнообразие технологий
  • Повышенная изоляция отказов
  • Быстрые циклы развертывания

Однако микросервисы также вносят вызовы, такие как:

  • Увеличенная операционная сложность
  • Проблемы распределенных систем (например, задержка сети, отказоустойчивость)
  • Согласованность данных между сервисами

2. Эволюционная архитектура: Адаптация к изменяющимся требованиям

Роль архитектора — смотреть на общую картину и понимать этот баланс.

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

Ключевые принципы:

  • Инкрементальные изменения: Делайте маленькие, частые обновления, а не большие, редкие
  • Управляемые изменения: Используйте принципы и практики для руководства архитектурными решениями
  • Множественные архитектуры: Признавайте, что разные части системы могут эволюционировать с разной скоростью

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

3. Моделирование сервисов: Определение границ и контекстов

Мы фокусируем границы наших сервисов на бизнес-границах, делая очевидным, где находится код для данной функциональности.

Проектирование, ориентированное на домен. Эффективное моделирование сервисов требует глубокого понимания бизнес-домена. Проектирование, ориентированное на домен (DDD), предоставляет ценные концепции для определения границ сервисов:

  • Ограниченные контексты: Области домена с четкими границами
  • Универсальный язык: Общий язык, разделяемый разработчиками и экспертами домена
  • Агрегаты: Кластеры доменных объектов, рассматриваемые как единое целое

Определение границ сервисов:

  • Соответствие бизнес-возможностям
  • Инкапсуляция данных и поведения
  • Минимизация зависимостей между сервисами
  • Учет структуры команды и паттернов коммуникации

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

4. Стратегии интеграции: Выбор правильного подхода к коммуникации

Будьте консервативны в том, что вы делаете, и либеральны в том, что принимаете от других.

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

Ключевые паттерны интеграции:

  • Синхронная коммуникация: REST, gRPC
  • Асинхронная коммуникация: Очереди сообщений, потоковая передача событий
  • API-шлюзы: Для маршрутизации и компоновки запросов
  • Сервисная сетка: Для обработки коммуникации между сервисами

Лучшие практики:

  • Используйте протоколы, не зависящие от технологии (например, HTTP)
  • Реализуйте толерантных читателей для плавного управления изменениями
  • Проектируйте с учетом отказов, используя прерыватели цепей и перегородки
  • Рассматривайте архитектуры, основанные на событиях, для слабой связанности

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

5. Разделение монолита: Переход к микросервисам

Думайте о нашем монолите как о блоке мрамора. Мы могли бы взорвать его целиком, но это редко заканчивается хорошо. Гораздо разумнее постепенно откалывать от него куски.

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

Шаги для разделения монолита:

  1. Определите швы в существующем коде
  2. Извлеките ограниченные контексты в отдельные модули
  3. Рефакторинг общих структур данных и баз данных
  4. Создайте API для межмодульной коммуникации
  5. Извлеките модули в отдельные сервисы
  6. Реализуйте новые функции как микросервисы

Вызовы, которые нужно учитывать:

  • Зависимости данных между сервисами
  • Транзакционная целостность через границы сервисов
  • Влияние сетевой коммуникации на производительность
  • Операционная сложность управления множеством сервисов

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

6. Техники развертывания: Обеспечение надежности и масштабируемости

Если что-то делать правильно, но сложно, мы должны стремиться упростить это.

Автоматизированное развертывание. Надежное и масштабируемое развертывание критически важно для успеха микросервисов. Практики непрерывной интеграции и непрерывной доставки (CI/CD) необходимы для управления увеличенной сложностью развертывания.

Ключевые техники развертывания:

  • Инфраструктура как код (IaC)
  • Контейнеризация (например, Docker)
  • Платформы оркестрации (например, Kubernetes)
  • Развертывания синим-зеленым
  • Канареечные релизы

Соображения при развертывании:

  • Обнаружение сервисов и управление конфигурацией
  • Мониторинг и логирование
  • Безопасность и контроль доступа
  • Миграции баз данных и согласованность данных

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

7. Тестирование микросервисов: Поддержание качества в распределенной системе

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

Комплексная стратегия тестирования. Тестирование микросервисов требует многоуровневого подхода для обеспечения как качества отдельных сервисов, так и общего поведения системы.

Пирамида тестирования для микросервисов:

  • Модульные тесты: Быстрые, сфокусированные тесты для отдельных компонентов
  • Интеграционные тесты: Проверка взаимодействий между сервисами
  • Контрактные тесты: Обеспечение соответствия сервисов согласованным интерфейсам
  • Сквозные тесты: Проверка поведения всей системы

Вызовы тестирования:

  • Увеличенная сложность из-за распределенной природы
  • Управление тестовыми данными между сервисами
  • Симуляция производственных сред
  • Обработка асинхронных взаимодействий

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

8. Мониторинг и безопасность: Поддержание здоровья и защиты микросервисов

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

Целостный подход. Эффективный мониторинг и безопасность критически важны для поддержания здоровой экосистемы микросервисов. Эти аспекты становятся более сложными и важными в распределенных системах.

Лучшие практики мониторинга:

  • Централизованное логирование и агрегация логов
  • Распределенное трассирование (например, с использованием идентификаторов корреляции)
  • Оповещения в реальном времени и панели мониторинга
  • Мониторинг производительности приложений (APM)
  • Синтетический мониторинг для критических путей

Соображения безопасности:

  • Аутентификация и авторизация между сервисами
  • API-шлюзы для безопасности на границе
  • Управление секретами
  • Сегментация сети
  • Регулярные аудиты безопасности и тестирование на проникновение

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

9. Закон Конвея: Согласование организации и дизайна системы

Закон Конвея подчеркивает опасности попыток навязать дизайн системы, не соответствующий организации.

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

Согласование команд и сервисов:

  • Организуйте команды вокруг бизнес-возможностей
  • Дайте командам полную ответственность за сервисы
  • Минимизируйте зависимости между командами
  • Развивайте культуру сотрудничества и общей ответственности

Соображения:

  • Размер и состав команды
  • Паттерны и инструменты коммуникации
  • Процессы принятия решений
  • Развитие навыков и обмен знаниями

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

10. Масштабирование микросервисов: Управление ростом и отказами

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

Проектирование для масштабирования и устойчивости. Архитектуры микросервисов должны быть спроектированы так, чтобы справляться как с ростом спроса, так и с неизбежными отказами.

Стратегии масштабирования:

  • Горизонтальное масштабирование (добавление большего количества экземпляров)
  • Вертикальное масштабирование (увеличение ресурсов на экземпляр)
  • Кэширование (в памяти, распределенное)
  • Шардинг и репликация баз данных
  • Асинхронная обработка и архитектуры, основанные на событиях

Паттерны устойчивости:

  • Прерыватели цепей для предотвращения каскадных отказов
  • Перегородки для изоляции отказов
  • Тайм-ауты и повторные попытки с экспоненциальной задержкой
  • Плавная деградация функциональности

Соображения теоремы CAP:

  • Согласованность
  • Доступность
  • Устойчивость к разделению

Понимайте, что при масштабировании распределенных систем необходимы компромиссы. Приоритизируйте на основе ваших конкретных требований и ограничений. Реализуйте практики наблюдаемости и хаос-инжиниринга для постоянного улучшения устойчивости системы.

Последнее обновление:

Отзывы

4.21 из 5
Средняя оценка на основе 4k+ оценки с Goodreads и Amazon.

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

Об авторе

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

0:00
-0:00
1x
Dan
Scarlett
Adam
Amy
Liv
Emma
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Bookmarks – save your favorite books
History – revisit books later
Ratings – rate books & see your ratings
Unlock unlimited listening
Your first week's on us!
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Oct 30,
cancel anytime before.
Compare Features Free Pro
Read full text summaries
Summaries are free to read for everyone
Listen to summaries
12,000+ hours of audio
Unlimited Bookmarks
Free users are limited to 10
Unlimited History
Free users are limited to 10
What our users say
30,000+ readers
“...I can 10x the number of books I can read...”
“...exceptionally accurate, engaging, and beautifully presented...”
“...better than any amazon review when I'm making a book-buying decision...”
Save 62%
Yearly
$119.88 $44.99/yr
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance