Co-Talk Architecture
시스템 아키텍처 문서입니다.
목차
| 문서 |
설명 |
| 백엔드 구조 |
Hexagonal Architecture, Spring Boot 3.5.6, WebSocket |
| 프론트엔드 구조 |
Flutter, BLoC/Cubit, Drift, GoRouter |
| 데이터베이스 설계 |
ERD, 16개 테이블, 인덱스, Flyway |
| API 설계 |
68개 REST 엔드포인트, STOMP WebSocket |
| 인프라 |
Docker Compose, 카나리아 배포, 모니터링 |
전체 아키텍처 다이어그램
graph TD
Client[Flutter App<br/>Android · iOS · macOS<br/>Windows · Linux] --> Nginx[Nginx<br/>Rate Limiting · SSL]
Nginx --> App1[app-1<br/>Spring Boot 3.5.6]
Nginx --> App2[app-2<br/>Spring Boot 3.5.6]
Nginx --> App3[app-3<br/>Spring Boot 3.5.6]
App1 --> PG[(PostgreSQL 16)]
App2 --> PG
App3 --> PG
App1 --> Redis[(Redis 7<br/>Cache · Pub/Sub)]
App2 --> Redis
App3 --> Redis
App1 --> MinIO[(MinIO<br/>S3 Files)]
App2 --> MinIO
App3 --> MinIO
Redis -.->|Pub/Sub| App1
Redis -.->|Pub/Sub| App2
Redis -.->|Pub/Sub| App3
Nginx -->|/files/| MinIO
App1 -.-> Monitoring[Prometheus · Grafana<br/>Loki · Zipkin]
App2 -.-> Monitoring
App3 -.-> Monitoring
기술 스택 요약
| Component |
Technology |
| Backend |
Java 25 + Spring Boot 3.5.6 (Virtual Threads) |
| Frontend |
Flutter 3.8+ (Dart SDK ^3.8.1) |
| Database |
PostgreSQL 16 + Spring Data JPA + QueryDSL |
| Cache |
Redis 7 (RedisCacheManager) |
| Real-Time |
STOMP over WebSocket + Redis Pub/Sub |
| Storage |
MinIO (S3-compatible) |
| Deployment |
Docker Compose on NAS (3 instances, canary rolling) |
| CI/CD |
GitHub Actions → GHCR → deploy.sh |
| Monitoring |
Prometheus + Grafana + Loki + Zipkin + Alertmanager |