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

Лабораторная работа 8: Декомпозиция в микросервисы и контракты сервисов (код аналогично пробуем например тут https://openapi-generator-ui.fugary.com/  или тут https://jdegre.github.io/editor/ , в радиобоксе выставить OpenAPI JSON/YAML Content
или поискать другие песочницы через ИИ или поисковики. Код программы на java или любом другом языке микросервисов сгенерированный разобрать и рассказать, также рассказать как порезали на микросервисы апи методы и почему)


Дисциплина: Проектирование архитектуры информационных систем
Продолжительность: 2 пары (3 акад. часа)
Форма проведения: индивидуальная работа + защита (5–7 минут)
Основной артефакт: комплект OpenAPI контрактов всех микросервисов + контракт точки входа (Gateway/BFF) + модели статусов + таблица взаимодействий

Цель

Закрыть реальную «архитекторскую» боль: микросервисы без контрактов превращаются в хаос. Студент учится нарезать систему (на базе ЛР3–ЛР4) и формализовать:

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

OpenAPI в этом контексте — индустриальный стандарт контрактов HTTP API. 

Исходные данные

Артефакты ЛР3–ЛР4:

  • микросервисная (или альтернативная) архитектура,
  • границы сервисов и их БД,
  • сравнения и ADR — как вход для обоснований.

Инструменты

Текстовый редактор для OpenAPI; (опционально) Swagger UI/Editor для проверки.

Структура работы

Часть A: Уточнение сервисного разбиения и точек входа

  1. Зафиксировать минимум 3 микросервиса (для маленькой темы) или 4–6 (для типовой).
  2. Зафиксировать точку входа для клиентов:
  • API Gateway или BFF (если в вашей архитектуре он был),
  • либо прямой доступ клиента к сервисам (разрешено, но нужно обосновать риски).

Часть B: Контракт каждого микросервиса

Для каждого сервиса сделать минимальный OpenAPI файл, который содержит:

  • servers,
  • tags,
  • paths (минимум 5 операций на сервис),
  • components/schemas (минимум 3–5 DTO/моделей).

Для каждой операции обязательно указать:

  • метод и URL,
  • обязательность полей (required),
  • варианты ошибок и коды ответов (минимум: 200/201/204/400/401/403/404/409/500),
  • краткое назначение на доменном языке.

В пояснении (не кодом) отметить семантику методов: операции чтения должны быть safe, операции обновления/удаления — идемпотентные по intended effect; это важно для ретраев и клиентского поведения. 

Часть C: Статусные модели (state model) как часть контракта

Выбрать 1–2 ключевых агрегата (пример: Заказ, Бронь, Заявка, Платеж, Тикет) и сделать:

  • диаграмму состояний (можно UML State),
  • перечисление допустимых статусов в OpenAPI (enum),
  • какие операции переводят объект между статусами,
  • какие ответы и ошибки возможны при недопустимом переходе (например, 409 Conflict).

Часть D: Межсервисные взаимодействия и «контракт вызовов»

Составить таблицу взаимодействий (минимум 6 связей):

  • кто вызывает (consumer),
  • кого вызывает (provider),
  • что именно вызывает: endpoint или событие,
  • минимальный payload (ключевые поля),
  • синхронно/асинхронно,
  • требования к безопасности (технический аккаунт, роль, scopes).

Если используете события — кратко описать, почему (слабая связанность, масштабирование обработки). Если остаётесь на REST — объяснить, почему для вашей темы это достаточно.

Часть E: Версионирование и обратная совместимость

Добавить правила эволюции контрактов:

  • как будете вводить /v2,
  • что можно менять «безболезненно» (additive changes — добавление необязательных полей),
  • как объявляете deprecated,
  • сколько времени поддерживаете старую версию.

В качестве ориентира допустимо опираться на общие API-guidelines практики крупных платформ (например, рекомендации по управлению API и эволюции), но главное — чтобы правила были едиными и применимыми к вашей системе. 

Результаты

  • Пакет OpenAPI файлов: по одному на сервис + файл для Gateway/BFF (если есть).
  • Таблица «контракты взаимодействий».
  • 1–2 диаграммы статусов (state machine) и их отражение в контрактах.
  • Короткое описание правил версионирования и обратной совместимости.

Контрольные вопросы

  • Почему при микросервисах «контракт важнее кода» и как OpenAPI в этом помогает? 
  • Почему безопасность API — это не только JWT, но и корректные проверки прав на объекты? 
  • Что такое обратная совместимость API и как ее обеспечивают при развитии микросервисов? 
  • Как статусная модель помогает предотвратить некорректные бизнес-переходы?

Критерии оценивания

Полнота набора сервисов и контрактов (30%), корректность моделей/операций/обязательных полей (20%), качество статусных моделей и ошибок переходов (20%), связность межсервисных контрактов (15%), версионирование и обратная совместимость (15%).

Автор: к.п.н., Румянцев Сергей Александрович, доцент Финансового университета при Правительстве РФ; доцент ОЧУВО Международного инновационного университета; Консалтинг, управление разработкой ПО; системный и бизнес анализ; менеджмент; аналитиз данных; управление ИТ. Телефон для связи +79269444818 (мессенджеры)   Короткая ссылка:

Лабораторная работа 8: Декомпозиция в микросервисы и контракты сервисов (код аналогично пробуем например тут https://openapi-generator-ui.fugary.com/  или тут https://jdegre.github.io/editor/ , в радиобоксе выставить OpenAPI JSON/YAML Content
или поискать другие песочницы через ИИ или поисковики. Код программы на java или любом другом языке микросервисов сгенерированный разобрать и рассказать, также рассказать как порезали на микросервисы апи методы и почему)


Дисциплина: Проектирование архитектуры информационных систем
Продолжительность: 2 пары (3 акад. часа)
Форма проведения: индивидуальная работа + защита (5–7 минут)
Основной артефакт: комплект OpenAPI контрактов всех микросервисов + контракт точки входа (Gateway/BFF) + модели статусов + таблица взаимодействий

Цель

Закрыть реальную «архитекторскую» боль: микросервисы без контрактов превращаются в хаос. Студент учится нарезать систему (на базе ЛР3–ЛР4) и формализовать:

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

OpenAPI в этом контексте — индустриальный стандарт контрактов HTTP API. 

Исходные данные

Артефакты ЛР3–ЛР4:

  • микросервисная (или альтернативная) архитектура,
  • границы сервисов и их БД,
  • сравнения и ADR — как вход для обоснований.

Инструменты

Текстовый редактор для OpenAPI; (опционально) Swagger UI/Editor для проверки.

Структура работы

Часть A: Уточнение сервисного разбиения и точек входа

  1. Зафиксировать минимум 3 микросервиса (для маленькой темы) или 4–6 (для типовой).
  2. Зафиксировать точку входа для клиентов:
  • API Gateway или BFF (если в вашей архитектуре он был),
  • либо прямой доступ клиента к сервисам (разрешено, но нужно обосновать риски).

Часть B: Контракт каждого микросервиса

Для каждого сервиса сделать минимальный OpenAPI файл, который содержит:

  • servers,
  • tags,
  • paths (минимум 5 операций на сервис),
  • components/schemas (минимум 3–5 DTO/моделей).

Для каждой операции обязательно указать:

  • метод и URL,
  • обязательность полей (required),
  • варианты ошибок и коды ответов (минимум: 200/201/204/400/401/403/404/409/500),
  • краткое назначение на доменном языке.

В пояснении (не кодом) отметить семантику методов: операции чтения должны быть safe, операции обновления/удаления — идемпотентные по intended effect; это важно для ретраев и клиентского поведения. 

Часть C: Статусные модели (state model) как часть контракта

Выбрать 1–2 ключевых агрегата (пример: Заказ, Бронь, Заявка, Платеж, Тикет) и сделать:

  • диаграмму состояний (можно UML State),
  • перечисление допустимых статусов в OpenAPI (enum),
  • какие операции переводят объект между статусами,
  • какие ответы и ошибки возможны при недопустимом переходе (например, 409 Conflict).

Часть D: Межсервисные взаимодействия и «контракт вызовов»

Составить таблицу взаимодействий (минимум 6 связей):

  • кто вызывает (consumer),
  • кого вызывает (provider),
  • что именно вызывает: endpoint или событие,
  • минимальный payload (ключевые поля),
  • синхронно/асинхронно,
  • требования к безопасности (технический аккаунт, роль, scopes).

Если используете события — кратко описать, почему (слабая связанность, масштабирование обработки). Если остаётесь на REST — объяснить, почему для вашей темы это достаточно.

Часть E: Версионирование и обратная совместимость

Добавить правила эволюции контрактов:

  • как будете вводить /v2,
  • что можно менять «безболезненно» (additive changes — добавление необязательных полей),
  • как объявляете deprecated,
  • сколько времени поддерживаете старую версию.

В качестве ориентира допустимо опираться на общие API-guidelines практики крупных платформ (например, рекомендации по управлению API и эволюции), но главное — чтобы правила были едиными и применимыми к вашей системе. 

Результаты

  • Пакет OpenAPI файлов: по одному на сервис + файл для Gateway/BFF (если есть).
  • Таблица «контракты взаимодействий».
  • 1–2 диаграммы статусов (state machine) и их отражение в контрактах.
  • Короткое описание правил версионирования и обратной совместимости.

Контрольные вопросы

  • Почему при микросервисах «контракт важнее кода» и как OpenAPI в этом помогает? 
  • Почему безопасность API — это не только JWT, но и корректные проверки прав на объекты? 
  • Что такое обратная совместимость API и как ее обеспечивают при развитии микросервисов? 
  • Как статусная модель помогает предотвратить некорректные бизнес-переходы?

Критерии оценивания

Полнота набора сервисов и контрактов (30%), корректность моделей/операций/обязательных полей (20%), качество статусных моделей и ошибок переходов (20%), связность межсервисных контрактов (15%), версионирование и обратная совместимость (15%).

https://webprogr.ru/~fScAl
Короткая ссылка на новость:https://webprogr.ru/~fScAl


Последние новости

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

Лабораторная работа 8: Декомпозиция в микросервисы и контракты сервисов (код аналогично пробуем например тут https://openapi-generator-ui.fugary.com/  или тут https://jdegre.github.io/editor/ , в радиобоксе выставить OpenAPI JSON/YAML Content
или поискать другие песочницы через ИИ или поисковики. Код программы на java или любом другом языке микросервисов сгенерированный разобрать и рассказать, также рассказать как порезали на микросервисы апи методы и почему)


Дисциплина: Проектирование архитектуры информационных систем
Продолжительность: 2 пары (3 акад. часа)
Форма проведения: индивидуальная работа + защита (5–7 минут)
Основной артефакт: комплект OpenAPI контрактов всех микросервисов + контракт точки входа (Gateway/BFF) + модели статусов + таблица взаимодействий

Цель

Закрыть реальную «архитекторскую» боль: микросервисы без контрактов превращаются в хаос. Студент учится нарезать систему (на базе ЛР3–ЛР4) и формализовать:

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

OpenAPI в этом контексте — индустриальный стандарт контрактов HTTP API. 

Исходные данные

Артефакты ЛР3–ЛР4:

  • микросервисная (или альтернативная) архитектура,
  • границы сервисов и их БД,
  • сравнения и ADR — как вход для обоснований.

Инструменты

Текстовый редактор для OpenAPI; (опционально) Swagger UI/Editor для проверки.

Структура работы

Часть A: Уточнение сервисного разбиения и точек входа

  1. Зафиксировать минимум 3 микросервиса (для маленькой темы) или 4–6 (для типовой).
  2. Зафиксировать точку входа для клиентов:
  • API Gateway или BFF (если в вашей архитектуре он был),
  • либо прямой доступ клиента к сервисам (разрешено, но нужно обосновать риски).

Часть B: Контракт каждого микросервиса

Для каждого сервиса сделать минимальный OpenAPI файл, который содержит:

  • servers,
  • tags,
  • paths (минимум 5 операций на сервис),
  • components/schemas (минимум 3–5 DTO/моделей).

Для каждой операции обязательно указать:

  • метод и URL,
  • обязательность полей (required),
  • варианты ошибок и коды ответов (минимум: 200/201/204/400/401/403/404/409/500),
  • краткое назначение на доменном языке.

В пояснении (не кодом) отметить семантику методов: операции чтения должны быть safe, операции обновления/удаления — идемпотентные по intended effect; это важно для ретраев и клиентского поведения. 

Часть C: Статусные модели (state model) как часть контракта

Выбрать 1–2 ключевых агрегата (пример: Заказ, Бронь, Заявка, Платеж, Тикет) и сделать:

  • диаграмму состояний (можно UML State),
  • перечисление допустимых статусов в OpenAPI (enum),
  • какие операции переводят объект между статусами,
  • какие ответы и ошибки возможны при недопустимом переходе (например, 409 Conflict).

Часть D: Межсервисные взаимодействия и «контракт вызовов»

Составить таблицу взаимодействий (минимум 6 связей):

  • кто вызывает (consumer),
  • кого вызывает (provider),
  • что именно вызывает: endpoint или событие,
  • минимальный payload (ключевые поля),
  • синхронно/асинхронно,
  • требования к безопасности (технический аккаунт, роль, scopes).

Если используете события — кратко описать, почему (слабая связанность, масштабирование обработки). Если остаётесь на REST — объяснить, почему для вашей темы это достаточно.

Часть E: Версионирование и обратная совместимость

Добавить правила эволюции контрактов:

  • как будете вводить /v2,
  • что можно менять «безболезненно» (additive changes — добавление необязательных полей),
  • как объявляете deprecated,
  • сколько времени поддерживаете старую версию.

В качестве ориентира допустимо опираться на общие API-guidelines практики крупных платформ (например, рекомендации по управлению API и эволюции), но главное — чтобы правила были едиными и применимыми к вашей системе. 

Результаты

  • Пакет OpenAPI файлов: по одному на сервис + файл для Gateway/BFF (если есть).
  • Таблица «контракты взаимодействий».
  • 1–2 диаграммы статусов (state machine) и их отражение в контрактах.
  • Короткое описание правил версионирования и обратной совместимости.

Контрольные вопросы

  • Почему при микросервисах «контракт важнее кода» и как OpenAPI в этом помогает? 
  • Почему безопасность API — это не только JWT, но и корректные проверки прав на объекты? 
  • Что такое обратная совместимость API и как ее обеспечивают при развитии микросервисов? 
  • Как статусная модель помогает предотвратить некорректные бизнес-переходы?

Критерии оценивания

Полнота набора сервисов и контрактов (30%), корректность моделей/операций/обязательных полей (20%), качество статусных моделей и ошибок переходов (20%), связность межсервисных контрактов (15%), версионирование и обратная совместимость (15%).

Рейтинг@Mail.ru