Skip to content

Byndyusoft/aact

Repository files navigation

Architecture As Code Tools

test workflow

Инструменты для работы с архитектурой в формате "as Code":

  1. Код и примеры покрытия тестами микросервисной архитектуры, описанной в plantuml (#)
  2. Автогенерация архитектуры (#)
  3. Тестирование архитектуры модульного монолита (#)

Планы развития инструментов и репозитория. PullRequest'ы и Issues'ы приветствуются.

Справочник принципов и паттернов проектирования с примерами покрытия их тестами (пополняется...)

Телеграм-канал: Архитектура распределённых систем

Публичные материалы

Раз архитектура — «as Code», почему бы её не покрыть тестами?!

https://www.youtube.com/watch?v=POIbWZh68Cg $~~~~~~~~~~$ https://www.youtube.com/watch?v=tZ-FQeObSjY

Статья на Хабре

Автогенерация архитектуры


https://www.youtube.com/watch?v=fb2UjqjHGUE

Покрытие архитектуры тестами

Что это, какую боль решает, и с чего начать?

Раз архитектура — «as Code», почему бы её не покрыть тестами?!

Тема идеи и данный открытый репозиторий вызвал неожиданную волну позитивных отзывов о попадании в яблочко болей и о применимости и полезности решения :)

Подход помогает решить проблемы неактуальности, декларативности и отсутствия контроля ИТ-архитектур и инфраструктуры (ограничение и требование — архитектура и инфраструктура должны быть "as code").

Тесты проверяют 2 больших блока:

  • актуальность архитектуры реальному работающему в продакшне решению
  • соответствие "нарисованной" архитектуры выбранным принципам и паттернам проектирования

Подробнее о подходе, решаемых проблемах, схеме работы представленного в репозитории примера и проверяемых в тестах репозитория принципах — на слайдах.

Схема работы

Визуализация примера автоматически проверяемого принципа (отсутствие бизнес-логики в CRUD-сервисах)

Пример архитектуры, которую покроем тестами

C4

Пример тестов

  1. Finds diff in configs and uml containers — проверяет актуальность списка микросервисов на архитектуре и в конфигурации инфраструктуры
  2. Finds diff in configs and uml dependencies — проверяет актуальность зависимостей (связей) микросервисов на архитектуре и в конфигурации инфраструктуры
  3. Check that urls and topics from relations exists in config — проверяет соответствие между параметрами связей микросервисов (REST-урлы, топики kafka) на архитектуре и в конфигурации инфраструктуры
  4. Only acl can depence from external systems — проверяет, что не нарушен выбранный принцип построения интеграций с внешними системами только через ACL (Anti Corruption Layer). Проверяет, что только acl-микросервисы имеют зависимости от внешних систем.
  5. Connect to external systems only by API Gateway or kafka — проверяет, что все внешние интеграции идут через API Gateway или через kafka

Автогенерация архитектуры

Генерация архитектуры из описанной «as Code» инфраструктуры

Добавил код, который полностью с нуля генерирует архитектуру в plantuml по данным из IaC.

Сравнение белковой составленной вручную архитектуры и сгенерированной.

Ручная:

C4

Сгенерированная:

C4

Тестирование модульного монолита

Тестами можно покрывать не только архитектуру микросервисов, но архитектуру монолитов, особенно, если они модульные.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published