Giter Club home page Giter Club logo

ddd_practice's Introduction

Архитектура

Приложение разделено по ограниченым контекстам на микросервисы. В ветке part_1 можно увидеть как на начальном этапе приложение было модульным монолитом.

Каждый микросервис реалзиован по принципу чистой архитектуры (Clean Architecture), бизнес-логика реализована паттернами Domain-Driven Design'а (Aggregates, Entities, Value Object, Domain Services). За структурой проекта следит ArchUnit.

На данный момент СУБД используется только для одного агрегата, все остальное есть InMemory-реализация хранилищ.

Также мы постарались реализовать принцип кричащей архитектуры (Screaming Architecture). Структура проекта отражает назначение проекта и функциональность, тоже самое касается пакетов и даже отдельных файлов

Решения о важных архитектурных решениях содержатся в Architecture Decision Records

Инфраструктура

Continuous integration

Основная идея - разработчику должно быть максимально удобно работать за локальным компьютером. Поэтому все необходимые действия с проектом можно совершить нажатием одной "кнопки", которые находятся в tools/scripts. Таким образом в полной мере реализуем концепцию CI. В качестве предохранителя используется GitHubActions. В случае падения сборки в артефакте reports есть вся необходимая информация для диагностики. Для пуша можно установить pre-push hook, который будет прогонять всю сборку целиком перед заливкой в репозиторий.

Сборка

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

  • Статанализатор detekt
  • Линтер - ktlint, (как плагин к detekt)
  • Контроль тестового покрытия JaCoCo
  • Поиск уязвимых зависимотей OWASP DependencyCheck
  • Поиск новых версий для зависимостей
  • Контроль отсутствия предупреждений компилятора

Зависимости перечислены в ProjectDependencies.kt

Запуск

"Кнопками" из tools/scripts можно разворачивать и останавливать кластер на рабочей машине разработчка без необходимости занимать стенды.

Тесты

Пирамида тестов, реализованая в проекте

  • Юнит-тесты
  • Интеграционные тесты
    • Тестирование репозиториев
    • Тестирование клиентов к внешним сервисам
  • Контрактные тесты Pact.io
  • Компонентные тесты
  • Сквозные тесты kbdd + Allure
  • Тесты структуры проекта ArchUnit
  • Мутационные тесты PiTest
  • Нагрузочные тесты Gatling

Взаимодействие с внешним миром

В примере реализованы примеры

Event storming

Miro board

Мониторинг

In Progress

Конфигурация

In Progress

Безопасность

In Progress

Ставьте звезды и приходите к нам в Телеграм-канал

ddd_practice's People

Contributors

olga-evgesha avatar elukianov avatar bukharovsi avatar schomework avatar sergeibukharov avatar le0nx avatar coderevgesha avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.