Enterprise Spring Boot: Модули
Программа нацелена на грамотное использование Spring Boot от небольшого сервиса до большой долгоживущей кодовой базы. Конфигурация и модульность, транзакции и согласованность, безопасность на OAuth2/OIDC, версионирование API и наблюдаемость изучаются как единое целое. В конце участник может оценить существующее Spring-приложение и подготовить план улучшений.
01
Конфигурация и модульность
Как сохранить управляемыми контейнер Spring и конфигурацию по мере роста кодовой базы.
- Жизненный цикл bean и механизм auto-configuration
- @ConfigurationProperties и стратегия профилей
- Spring Modulith или границы модулей на уровне пакетов
- Направление зависимостей и устранение циклических зависимостей
- Написание собственного starter
Лабораторная: Разделить монолит на модули с чёткими границами и добавить тест, автоматически выявляющий нарушения границ.
02
Транзакции и согласованность
Что на самом деле происходит за аннотацией транзакции и где она вводит в заблуждение.
- @Transactional на прокси и ловушка self-invocation
- Правила propagation и rollback
- Isolation, optimistic и pessimistic locking
- Риск внешних вызовов внутри транзакции
- События после коммита (@TransactionalEventListener)
Лабораторная: Воспроизвести сценарий, где частично успешная операция оставляет неконсистентное состояние, и исправить границу транзакции.
03
Spring Security, OAuth2 и OIDC
Правильно строим проверку токенов и модель авторизации на стороне resource server.
- Security filter chain и порядок фильтров
- OAuth2 resource server и проверка JWT
- Потоки OIDC и типы токенов
- Method security (@PreAuthorize) и модель полномочий
- CORS, CSRF и политика сессий
- Тестирование безопасности
Лабораторная: Построить resource server с защитой на JWT и проверить тестами method security на ролях и scope.
04
Дизайн и версионирование API
Отрабатываем, как развивать API, не ломая его потребителей.
- Моделирование ресурсов и семантика HTTP
- Правила обратно совместимых изменений
- Сравнение подходов к версионированию
- Модель ошибок на RFC 9457 problem details
- Проверка по OWASP API Security Top 10
- OpenAPI и contract-тесты
Лабораторная: Изменить существующий endpoint, не ломая потребителей, и доказать совместимость contract-тестом.
05
Наблюдаемость
Делаем поведение системы видимым, связывая метрики, трейсы и логи.
- Метрики Micrometer и cardinality
- Трейсы OpenTelemetry и propagation контекста
- Structured logs и корреляция
- Health probe и защита Actuator
- Алертинг на основе SLI/SLO
Лабораторная: Добавить в сервис трейсинг и метрики и собрать dashboard, прослеживающий один запрос от строки лога до трейса.
06
Устойчивость и производительность
Выясняем, как система ведёт себя при деградации зависимости и где находится узкое место.
- Бюджеты timeout, retry и backoff
- Circuit breaker и bulkhead (Resilience4j)
- Размер connection pool и thread pool
- Кэширование: что, где и на сколько
- Настройка старта и памяти
Лабораторная: Смоделировать медленную зависимость и измерить нагрузочным тестом поведение сервиса с timeout и circuit breaker.
07
Стратегия обновления и миграции
Планируем смену major-версии и постепенную модернизацию старого кода с низким риском.
- Чтение release notes и migration guide
- Инвентаризация deprecated API
- Наращивание тестового покрытия перед миграцией
- Поэтапный переход и план отката
- Совместимость зависимостей и переход на Jakarta
Лабораторная: Написать план major-обновления Spring Boot и реестр рисков для учебного приложения и выполнить первый этап.