다크 모드
환경별 리소스
truloop은 Dev와 Prod 두 개의 환경을 운영합니다. 두 환경은 동일한 VPC CIDR(10.0.0.0/16)과 서브넷 레이아웃을 사용하지만, 리소스 규모와 가용성 구성에서 차이가 있습니다.
환경 비교
네트워킹
| 항목 | 값 |
|---|---|
| VPC | vpc-0ddd834af5d7924a5 |
| ALB | truloop-dev-alb |
| Service Discovery | truloop-dev.local |
ECS Cluster
- 클러스터명:
truloop-dev - 서비스:
truloop-core-dev(메인 API)chatter-dev(AI 비서)truloop-ai-server-fastapi-dev(AI 서버)truloop-ai-server-celery-worker-dev(비동기 워커)truloop-media-service-dev(미디어 처리)prometheus(메트릭 수집)grafana(모니터링 대시보드)
데이터베이스
| 항목 | 구성 |
|---|---|
| RDS Aurora | truloop-dev (단일 인스턴스) |
| ElastiCache Redis | truloop-dev-redis-single (단일 노드) |
스토리지
| 버킷 | 이름 |
|---|---|
| Main | truloop-dev-bucket |
| Configs | truloop-configs-dev |
| Images | truloop-images-dev |
| Assets | truloop-assets-dev |
DNS
- API:
dev-api.truloop.app→ ALB - Assets CDN:
assets-dev.truloop.app→ CloudFront - Teaser:
teaser-dev.truloop.app→ Vercel
Pulumi ESC
- 환경:
truloop/infra-dev - Secrets Manager:
dev/truloop-core시크릿
핵심 차이점 요약
| 항목 | Dev | Prod |
|---|---|---|
| RDS 인스턴스 | 1개 (단일) | 2개 (Writer + Reader) |
| Redis 구성 | 단일 노드 | 복제 노드 |
| 모니터링 서비스 | Prometheus + Grafana | 없음 (별도 운영) |
| S3 버킷 수 | 4개 | 2개 |
| API 도메인 | dev-api.truloop.app | api.truloop.app |
| Assets CDN | assets-dev.truloop.app | assets.truloop.app |
ECS 서비스 설정 Convention
ECS 서비스의 설정은 "Convention over Configuration" 원칙을 따릅니다.
Convention Rules
| 규칙 | 기본 동작 | Override |
|---|---|---|
| Service Discovery | 서비스명에서 -dev/-prod 제거하여 자동 추론 | serviceDiscovery: "custom-name" 또는 false |
| Load Balancer | targetGroup 필드 존재 시 자동 감지 | - |
| Capacity Provider | capacityProviderStrategy (AWS 권장) | launchType: FARGATE |
| Desired Count | Pulumi가 관리하지 않음 (AWS가 현재 값 유지) | desiredCount: 3 |
Config 예시
최소 설정 (권장):
yaml
truloop-core-dev:
containerPort: 8080
targetGroup: core
# loadBalancer: 자동 감지 (targetGroup 존재)
# serviceDiscovery: 자동 추론 ("truloop-core")
# capacityProvider: 기본값 사용모니터링 서비스 (Override):
yaml
prometheus:
containerPort: 9090
launchType: FARGATE # capacityProvider 대신 launchType 사용
serviceDiscovery: false # Service Discovery 비활성화프로덕션 (명시적 제어):
yaml
truloop-core-prod:
containerPort: 8080
targetGroup: core
desiredCount: 3 # 명시적 인스턴스 수 제어Security Group 매핑
| 용도 | Security Group ID |
|---|---|
| ALB | sg-0668e16f2ff7b0ea2 |
| ECS | sg-02cee9929dc1af15a |
| RDS | sg-02a7ccda5264d90aa |
| Redis | sg-0668e16f2ff7b0ea2 |
주의
ALB Security Group만 truloop-infra에서 관리합니다. ECS, RDS, Redis Security Group은 truloop-core의 서비스별 인프라에서 관리하며, ingress/egress 규칙은 AWS 콘솔에서 별도로 관리합니다.
변경 이력
| 날짜 | 변경 내용 |
|---|---|
| 2026-03-10 | 소스 코드 검증: ECS 서비스 목록에 truloop-media-service 추가 (Dev/Prod) |