DATABASE_URL, REDIS_URL을 환경변수로만 받기이렇게 해두면 나중에:
postgres 컨테이너를 Cloud SQL로 바꿔도
redis 컨테이너를 Memorystore로 바꿔도
코드 변경 없이 URL만 교체하면 됨.
- `api` : FastAPI (uvicorn/gunicorn)
- `postgres` : Postgres 15/16
- `redis` : Redis 7
- `nginx` : 리버스 프록시 + HTTPS(권장)
- (선택) `watchtower` 같은 자동 업데이트는 초기에 비추(안정성 이슈)
** 꼭 지켜야 할 사항 (정책/운영) **
- Postgres 데이터는 **볼륨(영속 스토리지)**로
- Redis는 익명 세션 TTL 용이면 볼륨 없어도 됨(휘발 OK)
- 로그에 request/response body 남기지 않기
- DB는 외부 공개 금지(포트는 내부 네트워크만)
- 방화벽은 80/443만 공개
추천 대상: 베타/초기 사용자, 동시접속 낮음, 저장 대화량 적음
운영 중 RAM 부족/스왑 발생 → 8GB 로 업그레이드