Инструменты для работы с архитектурой в формате "as Code":
- Код и примеры покрытия тестами микросервисной архитектуры, описанной в plantuml (#)
- Автогенерация архитектуры (#)
- Тестирование архитектуры модульного монолита (#)
Планы развития инструментов и репозитория. PullRequest'ы и Issues'ы приветствуются.
Справочник принципов и паттернов проектирования с примерами покрытия их тестами (пополняется...)
Телеграм-канал: Архитектура распределённых систем
https://www.youtube.com/watch?v=POIbWZh68Cg
https://www.youtube.com/watch?v=fb2UjqjHGUE
Раз архитектура — «as Code», почему бы её не покрыть тестами?!
Тема идеи и данный открытый репозиторий вызвал неожиданную волну позитивных отзывов о попадании в яблочко болей и о применимости и полезности решения :)
Подход помогает решить проблемы неактуальности, декларативности и отсутствия контроля ИТ-архитектур и инфраструктуры (ограничение и требование — архитектура и инфраструктура должны быть "as code").
Тесты проверяют 2 больших блока:
- актуальность архитектуры реальному работающему в продакшне решению
- соответствие "нарисованной" архитектуры выбранным принципам и паттернам проектирования
Подробнее о подходе, решаемых проблемах, схеме работы представленного в репозитории примера и проверяемых в тестах репозитория принципах — на слайдах.
- Finds diff in configs and uml containers — проверяет актуальность списка микросервисов на архитектуре и в конфигурации инфраструктуры
- Finds diff in configs and uml dependencies — проверяет актуальность зависимостей (связей) микросервисов на архитектуре и в конфигурации инфраструктуры
- Check that urls and topics from relations exists in config — проверяет соответствие между параметрами связей микросервисов (REST-урлы, топики kafka) на архитектуре и в конфигурации инфраструктуры
- Only acl can depence from external systems — проверяет, что не нарушен выбранный принцип построения интеграций с внешними системами только через ACL (Anti Corruption Layer). Проверяет, что только acl-микросервисы имеют зависимости от внешних систем.
- Connect to external systems only by API Gateway or kafka — проверяет, что все внешние интеграции идут через API Gateway или через kafka
Добавил код, который полностью с нуля генерирует архитектуру в plantuml по данным из IaC.
Сравнение белковой составленной вручную архитектуры и сгенерированной.
Тестами можно покрывать не только архитектуру микросервисов, но архитектуру монолитов, особенно, если они модульные.
Информацию об архитектуре реализованной системы можно извлечь и из ее кода, особенно, если он написан качественно;)