Проект для демонстрации и тестирования архитектурных решений с использованием Docker.
Убедитесь, что установлены последние версии.
В проекте используются следующие технологии и инструменты:
-
Docker & Docker Compose
Для контейнеризации и оркестрации сервисов. Обеспечивает воспроизводимость окружения и простоту запуска. -
.NET / C# (Backend API)
Бэкенд реализован на C#, с акцентом на чистую архитектуру, строгую типизацию и модульность.
Используются:- ASP.NET Core для построения REST API
- Redis для кэширования и оптимизации производительности
- PostgreSql для бд
- MediatR для реализации CQRS
- AutoMapper для автоматического маппинга моделей
-
Angular (Frontend)
Клиентская часть построена на Angular с TypeScript.
Основные практики:- RxJS для реактивного программирования
- Angular Material для UI-компонентов
- Строгая типизация и модульная архитектура
- Кастомные валидаторы и декларативные формы
-
PostgreSQL
Реляционная база данных для хранения основной бизнес-информации.
Особенности:- Надёжность и транзакционная целостность (ACID)
- Поддержка сложных запросов и индексов
- Используется как основной источник данных для backend API
- Данные хранятся в отдельном volume, что обеспечивает сохранность при перезапуске контейнеров
-
Redis
Хранилище для кэша и быстрой работы с временными данными. -
Grafana
Используется для визуализации метрик и мониторинга состояния системы.
Доступна по адресу http://localhost:3000 (логин/пароль:admin/admin). -
Prometheus
Может использоваться как источник данных для Grafana и сбора метрик с сервисов. -
Jaeger
Система распределённого трейсинга.
Используется для:- Отслеживания запросов через все микросервисы
- Диагностики производительности и поиска узких мест
- Визуализации цепочек вызовов (spans и traces)
По умолчанию доступен по адресу http://localhost:16686.
- Чистая архитектура: разделение слоёв и строгие границы между инфраструктурой и бизнес-логикой.
- Повторное использование: универсальные UI-компоненты и сервисы.
- Устойчивость: retry-политики, централизованная обработка ошибок.
- Масштабируемость: модульная структура и возможность лёгкого расширения.
- Наблюдаемость: метрики (Prometheus + Grafana) и трейсинг
- Клонируйте репозиторий: git clone https://github.com/romanshal/AMTestProject.git cd AMTestProject
- Запустите сервисы: docker-compose up -d