HOSUGATOR.
전체 프로젝트
#Next.js#AWS#GitHub-Actions

Hosugator: Cloud-Native Portfolio Architecture

개요

TCO 80%↓. AWS 서버리스(ALB+ECS)를 EC2/Nginx 자가 관리형으로 전환해 비용 구조를 재설계하고, 정적 특성에 맞춰 최종 S3 정적 호스팅으로 수렴. GitHub Actions + IAM OIDC 키리스 CI/CD(액세스 키 없이 역할 기반 임시 자격증명)로 무중단 배포.

맥락

개인 포트폴리오(Next.js)를 AWS에 배포하며 두 가지 구조적 문제에 직면했습니다. (1) 비용 문제: ALB(월 ~$20) + ECS Fargate(요청당 과금) 조합이 트래픽 없는 개인 사이트에 과도한 비용. (2) 보안 문제: IAM User 액세스 키를 GitHub Secrets에 저장하는 장기 자격증명 방식은 키 노출 시 무제한 권한 탈취 위험이 있었습니다.

핵심 의사결정

Next.js Static Export로 서버 의존성을 제거해 S3 정적 배포로 전환하고, IAM User를 완전히 제거해 OIDC Federation으로 두 문제를 동시에 구조적으로 해결했습니다. GitHub Actions OIDC로 단기 토큰만 발급하고 최소 권한(S3+CloudFront만)을 부여했습니다.

구현

아키텍처 전환

ALB+ECS Fargate(월 $20↑)에서 S3 정적 배포(월 $1 미만)로 전환하고 Next.js Static Export로 서버 의존성을 완전히 제거해 TCO 80%↓를 달성했습니다.

OIDC Federation

GitHub Actions OIDC로 단기 토큰만 발급하고 IAM User 액세스 키를 완전히 제거했습니다. 최소 권한(S3+CloudFront만)으로 키 노출 위험을 구조적으로 제거하고 키 로테이션도 불필요해졌습니다.

트러블슈팅: OIDC sub claim

GitHub OIDC 토큰 sub claim 형식을 오해해 IAM Role 신뢰 정책이 반복 실패했습니다. AWS 공식 문서와 실제 토큰 디코딩으로 올바른 조건식을 도출했습니다.

k3s 전환 실험 & 배포 전략

서버리스에서 EC2/Nginx/k3s 자가 관리형으로 전환을 실험해 비용 vs 복잡도 트레이드오프를 직접 경험한 뒤 정적 배포로 최종 결정했습니다. GitHub Actions로 S3 업로드 후 CloudFront Invalidation을 자동 실행해 배포 중 다운타임 0초를 확보했습니다.

아키텍처
성과 & 회고

TCO 80% 절감(월 $20+ → $1 미만)과 IAM User 완전 제거(보안 감사 시 IAM User 0개)를 달성했습니다. OIDC 단기 토큰으로 보안 수준을 대폭 향상하고 CloudFront CDN 글로벌 배포와 CI/CD 자동화를 완성했습니다. 인프라 최적화의 본질은 "필요한 것만"이며, 서버리스가 항상 답이 아님을 직접 비용 비교로, 보안도 복잡한 정책이 아닌 구조적 최소화가 핵심임을 확인했습니다.

기술 스택
Next.js StaticAWS S3CloudFrontRoute53IAM OIDCk3sGitHub Actions