Данный проект, хоть и небольшой по объёму, сфокусирован не на функциональных возможностях, а на реализации и проработке нефункциональных требований для микросервисной архитектуры. Цель проекта — учитывать, как современные подходы и инструменты обеспечивают надёжность, масштабируемость и поддерживаемость системы и применить их.
-
Автоматизация сборки и контейнеризация
Проект использует современные средства автоматизации (Maven) и контейнеризации (Docker), что позволяет упростить развертывание и изоляцию сервисов. -
Отказоустойчивость между сервисами
Реализованы ключевые шаблоны отказоустойчивости с помощью библиотеки Resilience4j, включая:- Circuit Breaker (размыкатель цепи)
- Fallback (резервные сценарии)
- Bulkhead (изоляция ресурсов между потоками)
Это позволяет повысить устойчивость системы к сбоям и ошибкам отдельных компонентов.
-
Аутентификация и авторизация между сервисами
Настроены механизмы безопасности для взаимодействия микросервисов, что важно для защиты данных и предотвращения несанкционированного доступа. -
Масштабируемость и гибкость настройки сервисов
Сервисы подготовлены к горизонтальному масштабированию:- Используется Config Server для централизованного управления конфигурацией
- Реализовано Service Discovery для автоматического обнаружения и взаимодействия между микросервисами
-
Чистота кода и структура проекта
Соблюдаются принципы чистого кода:- Разделение слоёв
- Стандартизированная структура пакетов
- Единый подход к именованию и архитектурной организации компонентов
В качестве практической реализации выбрана система управления лицензиями, разработанная для вымышленной компании Exonix.
Система состоит из двух микросервисов, которые обмениваются данными между собой и взаимодействуют с базой данных.
Функциональная часть проекта предельно проста и ограничивается стандартными CRUD-операциями, что позволяет сосредоточиться на отработке нефункциональных аспектов.