ADR-0017 — Dev 환경 AWS → 온프레미스 이전¶
Context¶
- 기존 Dev 백엔드는 AWS(EC2 프리티어 + RDS MySQL
the_edu+ ECR), 도메인api.dev.d-edu.site로 운영 (teams/engineering/infra/architecture §7). - 프리티어 만료 후 EC2/RDS 상시 과금이 발생하고, IAM·VPC 등 직접 제어에 제약이 있었음.
- 사무실에 상시 가동 서버가 있어 Dev 환경을 온프레미스로 옮기면 클라우드 비용을 제거할 수 있는 상황.
- 동시에 백/프 ADR-0003 모노레포(
mvp-mono) 통합 + 프론트 Vercel 배포 전환이 진행됨.
Decision¶
Dev 환경을 온프레미스로 이전한다. 운영(Prod)은 AWS Lightsail 유지.
- Dev 백엔드 → 온프레 Docker:
the-edu-staging(Spring, GHCR 이미지,staging프로파일) +mysql_dev(MySQL 8.4) +theedu_redis, docker networktheedu_backend, Cloudflare 터널(apidev.d-edu.site,ssh.d-edu.site), self-hosted GitHub Actions runner. - Dev 프론트 → Vercel: 모노레포
mvp-front/→front-sync-mirror.yml(subtree split) → public 미러the-edu-project→ Vercel 자동 배포(dev.d-edu.site). (private 모노레포를 Vercel에 직접 연결하지 않기 위함.) - 데이터 마이그레이션: AWS RDS
the_edu→mysqldump→ 온프레mysql_dev(dedu). (member 266 / study_room 416 이관 완료.) - AWS S3
theedu유지: 미디어 presigned URL에 온프레 백엔드도 계속 사용 (deploy에AWS_*키 주입). - AWS Dev EC2/RDS 삭제: 이전·검증 완료 후 삭제. 최종 스냅샷
dev-onpremise-260531보관. - 인증 정합:
stagingGitHub Environment에 온프레용 시크릿(DB_URL=mysql_dev,KAKAO/NAVER_REDIRECT_URI=apidev) 설정. 쿠키 도메인.d-edu.site, CORSdev.d-edu.site.
Consequences¶
긍정 - AWS Dev EC2/RDS 상시 과금 제거. 인프라·데이터 직접 제어. - 코드·기획·인프라 설정이 모노레포 한 트리에 → 풀스택 변경/리뷰 일원화.
부정 / 후속 과제 (TODO) — teams/engineering/infra/architecture §6:
1. theedu_backend 네트워크 단일 소유자 부재 — 앱(docker run) vs DB/Redis(compose) 혼용. 네트워크 재생성 시 컨테이너 간 통신 단절 장애가 1회 발생함. → 최상위 compose 일원화 필요.
2. 온프레 MySQL 자동 백업 부재 — RDS 자동백업이 사라짐. 데이터가 볼륨 1곳에만. → 정기 mysqldump + off-box 백업 구축 필요.
3. 모니터링·알림 부재 — 온프레 다운 인지 불가. → Prometheus/Loki/Grafana 재구축.
4. deploy 롤백 로직 — 인프라 장애 시 OLD_IMAGE 롤백 무의미 → 알림+중단으로 보완.
5. AWS back-deploy-aws.yml deploy-dev job 잔존 — dev EC2 삭제로 develop 머지 시 실패. 비활성화 필요(deploy-prod는 운영용으로 유지).
Alternatives¶
- AWS 유지(프리티어 2계정 / 스펙업): 비용 지속 + 관리 부담. 기각.
- Dev도 Lightsail: 운영과 동일 패턴이나 여전히 클라우드 과금. 사무실 서버 여유분 활용이 더 경제적이라 기각.
- 프론트도 온프레: Vercel의 자동 배포·프리뷰 이점이 커 프론트는 Vercel 유지.
Status¶
accepted (2026-06-01)