Добрый вечер.
Подскажите по следующему вопросу, касающийся архитектуры приложения.
В учебных для себя целях, что бы освоить некоторые технологии и методы, хочу написать приложение для обмена сообщениями внутри компании. Предполагается нагрузка для 100к+ пользователей. Стек: кафка, редис, фастапи, постгрес ...
Но вопрос в следующем. Как выбрать архитектуру из: clean, hexagon, DDD, ...?
Бот предложил слоистую:
src/
├── main.py # Точка входа FastAPI
├── core/ # Общие настройки, конфиги, security, exceptions
├── contexts/ # DDD Bounded Contexts
│ ├── identity/ # Auth, Users
│ │ ├── domain/ # Сущности (User), Value Objects (Email), Интерфейсы репозиториев
│ │ ├── application/ # Use Cases (RegisterUser, Login)
│ │ ├── infrastructure/ # SQLAlchemy модели, JWT провайдеры
│ │ └── presentation/ # FastAPI роутеры, схемы
│ ├── messaging/
│ │ ├── domain/ # Сущность Message, Aggregate Chat, Domain Event MessageSent
│ │ ├── application/ # Use Case SendMessage (транзакции, оркестрация)
│ │ ├── infrastructure/ # Postgres репозиторий, Kafka продюсер
│ │ └── presentation/ # REST + WebSocket endpoints
│ └── presence/ # Online/Offline статусы
└── tests/
├── unit/ # Тестируем Domain (без БД)
├── integration/ # Тестируем БД и Kafka (testcontainers)
└── e2e/ # API тесты
Что скажите про такую архитектуру и как вообще выбирать архитектуру?