Микросервисная архитектура

Генератор индивидуальных заданий

Лабораторная работа №1

Декомпозиция системы на микросервисы

Вариант 110 млн10 000 RPS

1. Предметная область

Музыкальный стриминговый сервис

Платформа потокового прослушивания музыки и подкастов.

2. Бизнес-возможности

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

3. Основные сущности

UserArtistAlbumTrackPlaylistSubscriptionListeningHistoryPayment

4. Архитектурные ограничения

Независимое развертывание

Отдельные части системы должны иметь возможность развертываться независимо.

Изоляция отказов

Отказ одного бизнес-компонента не должен автоматически приводить к отказу всей системы.

Независимое масштабирование

Различные части системы должны иметь возможность масштабироваться независимо друг от друга.

  • Один из компонентов имеет значительно более высокую нагрузку
  • 3 команды разработки

5. Задание

Необходимо спроектировать декомпозицию исходного монолитного приложения на микросервисную архитектуру.

  1. Определить основные bounded contexts.
  2. Определить границы микросервисов.
  3. Определить ответственность каждого сервиса.
  4. Определить владельца данных каждого сервиса.
  5. Определить основные взаимодействия между сервисами.
  6. Обосновать выбранную декомпозицию.
  7. Привести минимум две альтернативы.
  8. Указать потенциальные проблемы архитектуры.

6. Что необходимо сдать

Артефакт Формат
Context Map Постройте Context Map предметной области в PlantUML.

На диаграмме необходимо показать:
  • основные bounded contexts;
  • отношения между bounded contexts;
  • направление взаимодействия;
  • назначение основных взаимодействий.
flowchart LR
    customer["Customer Management"]
    catalog["Catalog"]
    order["Order Management"]
    payment["Payment"]
    delivery["Delivery"]

    customer -->|creates order| order
    catalog -->|product information| order
    order -->|payment request| payment
    order -->|delivery request| delivery
Исходник PlantUML
@startuml

title Context Map — пример

rectangle "Customer Management" as customer
rectangle "Catalog" as catalog
rectangle "Order Management" as order
rectangle "Payment" as payment
rectangle "Delivery" as delivery

customer --> order : creates order
catalog --> order : product information
order --> payment : payment request
order --> delivery : delivery request

@enduml
Каталог микросервисов Пример описания одного сервиса:
Service: Order Service

Responsibility:
Создание и управление заказами пользователей.

Owned Data:
Order
OrderItem

API:
POST /orders
GET /orders/{id}
POST /orders/{id}/cancel

Dependencies:
Catalog Service
Payment Service

Communication:
REST + Kafka

Scalability:
Горизонтальное масштабирование.
ADR-001. Архитектурное решение Зафиксируйте одно из ключевых архитектурных решений, принятых при декомпозиции системы. ADR должен содержать:
  • контекст проблем;
  • рассмотренные альтернативы — минимум 2;
  • выбранное решение;
  • обоснование выбора;
  • положительные и отрицательные последствия;
  • итоговая архитектурная схема в C4.