HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Основная цель<strong>Microservices Patterns</strong>- предоставить проверенные временем решения для разработки микросервисной архитектуры с организацией эффективного взаимодействия микросервисов как друг с другом, так и с базами данных и клиентскими приложениями, обеспечивая тем самым их отказоустойчивость. Такие паттерны можно условно разделить на несколько групп. В этой статье мы рассмотрим<strong>паттерны декомпозиции на микросервисы</strong>.</p>
1 <p>Основная цель<strong>Microservices Patterns</strong>- предоставить проверенные временем решения для разработки микросервисной архитектуры с организацией эффективного взаимодействия микросервисов как друг с другом, так и с базами данных и клиентскими приложениями, обеспечивая тем самым их отказоустойчивость. Такие паттерны можно условно разделить на несколько групп. В этой статье мы рассмотрим<strong>паттерны декомпозиции на микросервисы</strong>.</p>
2 <p>Когда мы говорим о паттернах декомпозиции на микросервисы, мы подразумеваем набор шаблонов, позволяющих выполнять разделение программных приложений на микросервисы. Среди таких шаблонов -- паттерн "<strong>Разбиение по бизнес-возможностям</strong>".</p>
2 <p>Когда мы говорим о паттернах декомпозиции на микросервисы, мы подразумеваем набор шаблонов, позволяющих выполнять разделение программных приложений на микросервисы. Среди таких шаблонов -- паттерн "<strong>Разбиение по бизнес-возможностям</strong>".</p>
3 <h2>Decompose By Business Capability</h2>
3 <h2>Decompose By Business Capability</h2>
4 <p>Это один из самых известных способов разбиения на микросервисы. Он предполагает определение бизнес-возможностей программного приложения с последующим созданием по одному микросервису на каждую из бизнес-возможностей. При этом сами бизнес-возможности, по сути, представляют собой функции, которые станут доступны пользователям при работе с ПО.</p>
4 <p>Это один из самых известных способов разбиения на микросервисы. Он предполагает определение бизнес-возможностей программного приложения с последующим созданием по одному микросервису на каждую из бизнес-возможностей. При этом сами бизнес-возможности, по сути, представляют собой функции, которые станут доступны пользователям при работе с ПО.</p>
5 <p>Вот как может выглядеть создание микросервисов на основе вышеописанного паттерна для интернет-магазина:</p>
5 <p>Вот как может выглядеть создание микросервисов на основе вышеописанного паттерна для интернет-магазина:</p>
6 <h2>Decompose By Subdomain</h2>
6 <h2>Decompose By Subdomain</h2>
7 <p>Следующий паттерн -- шаблон "<strong>Разбиение по поддоменам</strong>". В случае разбиения по бизнес-возможностям иногда появляются так называемые God Classes -- "божественные классы" - то есть сущности, которые являются общими для нескольких микросервисов. И обычно эти классы трудно разделить.</p>
7 <p>Следующий паттерн -- шаблон "<strong>Разбиение по поддоменам</strong>". В случае разбиения по бизнес-возможностям иногда появляются так называемые God Classes -- "божественные классы" - то есть сущности, которые являются общими для нескольких микросервисов. И обычно эти классы трудно разделить.</p>
8 <p>Допустим, в том же интернет-магазине проблемной сущностью может стать заказ. В вышеприведенном примере он применяется<strong>в нескольких сервисах</strong>: - Orders Creation, - Orders Delivery, - Orders Alerts, - Preorders.</p>
8 <p>Допустим, в том же интернет-магазине проблемной сущностью может стать заказ. В вышеприведенном примере он применяется<strong>в нескольких сервисах</strong>: - Orders Creation, - Orders Delivery, - Orders Alerts, - Preorders.</p>
9 <p>Во избежание возникновения<strong>God Classes</strong>мы можем задействовать альтернативный шаблон разложения на микросервисы -<strong>Decompose By Subdomain</strong>. Этот шаблон основывается на концепциях<strong>DDD</strong>(Domain-Driven Design, то есть предметно-ориентированное проектирование).</p>
9 <p>Во избежание возникновения<strong>God Classes</strong>мы можем задействовать альтернативный шаблон разложения на микросервисы -<strong>Decompose By Subdomain</strong>. Этот шаблон основывается на концепциях<strong>DDD</strong>(Domain-Driven Design, то есть предметно-ориентированное проектирование).</p>
10 <p>DDD позволяет разбивать всю модель предметной области (то есть домен) на поддомены. То есть у каждого поддомена существует своя модель данных, а область действия этих данных называют ограниченным контекстом --<strong>Bounded Context</strong>. Таким образом, каждый микросервис разрабатывается внутри этого ограниченного контекста. Главная задача при таком подходе - подобрать поддомены, а также границы между ними таким образом, чтобы они были максимально независимыми друг от друга.</p>
10 <p>DDD позволяет разбивать всю модель предметной области (то есть домен) на поддомены. То есть у каждого поддомена существует своя модель данных, а область действия этих данных называют ограниченным контекстом --<strong>Bounded Context</strong>. Таким образом, каждый микросервис разрабатывается внутри этого ограниченного контекста. Главная задача при таком подходе - подобрать поддомены, а также границы между ними таким образом, чтобы они были максимально независимыми друг от друга.</p>
11 <p>Возвращаемся к интернет-магазину. Все, что связано с заказами, мы можем рассмотреть в рамках соответствующего поддомена "Заказы" (Orders Subdomain). И уже внутри этого поддомена создается микросервис для управления заказами (Orders Service). Профит -- появляется возможность уменьшить количество микросервисов, если сравнивать с той же декомпозицией на основании бизнес-возможностей. Ниже -- сильно упрощенный пример, где 4 микросервиса преобразованы в один:</p>
11 <p>Возвращаемся к интернет-магазину. Все, что связано с заказами, мы можем рассмотреть в рамках соответствующего поддомена "Заказы" (Orders Subdomain). И уже внутри этого поддомена создается микросервис для управления заказами (Orders Service). Профит -- появляется возможность уменьшить количество микросервисов, если сравнивать с той же декомпозицией на основании бизнес-возможностей. Ниже -- сильно упрощенный пример, где 4 микросервиса преобразованы в один:</p>
12 <p><em>По материалам блога https://mcs.mail.ru/blog/.</em></p>
12 <p><em>По материалам блога https://mcs.mail.ru/blog/.</em></p>
13  
13