Введение
Что такое nice-pea-chat - Полноценный мессенджер - приложение, сервер и обвязка
Цель документа - Составить общую картину, наращивать функционал требуемый функционал и не сбиться🦥
Область применения - Нет
Глоссарий
ключевые термины и сокращения
Предметная область - Часть реального мира, рассматриваемая в пределах данного контекста
Сущность - Описание объекта предметной области
Модель - Сущность описанная в коде
Обзор системы
Архитектурный стиль - service-oriented architecture(SOA).
Высокоуровневая диаграмма компонентов системы
todo
Детальный дизайн
Компоненты системы
Описание каждого значимого компонента:
Назначение
Ответственность
Интерфейсы (API, события)
Зависимости
API Design
Принципы проектирования (REST, GraphQL, gRPC)
Важные эндпоинты с примерами
Схемы данных (DTO, модели)
Аутентификация/авторизация
Модель данных
ER-диаграмма или схема данных
Стратегия миграций (если применимо)
Описание сущностей и их отношений
Чат
Структура:
- Идентификатор
- Название чата - может меняться, неуникальное
- идентификатор главного администратора - может меняться
Интеграции
Внешние системы и протоколы взаимодействия
Форматы сообщений/событий
Схемы интеграции (синхронная/асинхронная)
Нефункциональные требования
Масштабируемость
Горизонтальное/вертикальное масштабирование
Надежность
Стратегии обработки ошибок
Механизмы retry
Резервирование
Операционные аспекты
Логирование (формат, уровни, ротация)
Мониторинг (метрики, алерты)
Развертывание (CI/CD, стратегии)
Резервное копирование
Приложения
Диаграммы (последовательностей, состояний и т.д.)
Ссылки на дополнительные материалы
- Репозиторий содержит код для открытого урока "Архитектура проекта на Go"
- Репозиторий с демонстрирующий структуру основанную чистой архитектуре - Example of Clean Architecture + DDD in go
- Что же такое «Модель предметной области»? - https://habr.com/ru/articles/453906
- Разбор архитектурных паттернов на простом примере - Разбираем на практике blog на Symfony
- Блеск и нищета модели предметной области - https://habr.com/ru/companies/jugru/articles/503868/
- Clean Architecture template for Golang services - https://github.com/evrone/go-clean-template
- Uber Go Style Guide - https://github.com/uber-go/guide/blob/master/style.md
- Как работать с Postgres в Go: практики, особенности, нюансы - https://habr.com/ru/companies/oleg-bunin/articles/461935/