Skip to content

Architecture

BcKmini edited this page Jul 28, 2026 · 1 revision

Architecture

Docker Compose로 계획했던 초기 구상 대신 k3s(경량 쿠버네티스) + AWS EC2로 확정.

AWS EC2 (ap-northeast-2, Seoul) — 단일 노드 k3s 클러스터
├── client   (nginx, 정적 SPA)         → Ingress "/"
├── server   (Spring Boot, :8080)      → Ingress "/api"
├── ai       (FastAPI, :8000)          → 클러스터 내부 전용, 외부 노출 안 함
└── postgres (postgres:16-alpine, PVC) → server가 클러스터 내부 DNS로 접근
  • 이미지 레지스트리: GHCR (ghcr.io/fowoco/<client|server|ai>)
  • 배포: 각 앱 저장소의 GitHub Actions가 push → 빌드 → GHCR 푸시 → 클러스터에 자동 반영 예정 (아직 미구현, Deployment Plan 참고)
  • 도메인: 아직 없음 — nip.io 와일드카드 DNS로 데모 (fowoco.<EC2 퍼블릭 IP>.nip.io)

왜 이 구조인가

  • server는 마이크로서비스가 아니라 모듈러 모놀리스로 설계됨 — 배포 단위가 client/server/ai/postgres 4개뿐이라 OpenStack 같은 무거운 오케스트레이션이 불필요.
  • Postgres는 매니지드 서비스 대신 클러스터 안에 직접 운영 — AWS 크레딧으로 비용 압박이 없어져서 "전부 우리 인프라 안에서" 원칙을 유지할 수 있게 됨.
  • ai는 외부 노출 없이 클러스터 내부에서만 server가 호출하는 구조 (server의 AiRuntimeClientai의 내부 API를 호출).

원본 매니페스트는 이 저장소의 k8s/ 디렉터리 참고.

Clone this wiki locally