SvelteKit 5 + Fastify 모노레포. React 런타임이 번들에서 빠지는 가벼움 때문에 Next.js 대신 선택. Terraform AWS Serverless, GitHub Actions OIDC 자동 배포.
단순히 이력서를 웹으로 옮긴 것이 아니라, 실제로 동작하는 풀스택 엔지니어링 역량을 증명하는 포트폴리오가 필요했습니다. 인터랙티브 데모, 실시간 API, 프로덕션 인프라까지 갖춘 살아있는 쇼케이스.
Turborepo 모노레포로 SvelteKit 5 프론트엔드와 Fastify API 서버를 함께 관리하고, Terraform으로 AWS 인프라 전체를 코드화했습니다. GitHub Actions OIDC로 AWS 자격증명 없이 안전한 자동 배포를 구현했으며, Claude Code와 페어 프로그래밍 방식으로 개발했습니다.
apps/web (SvelteKit 5) + apps/text2sql-api (Fastify) + infra/terraform을 단일 레포에서 관리. 공유 node_modules와 빌드 캐시로 개발 속도 최적화. turbo build --filter로 변경된 패키지만 선택 빌드.
프론트엔드는 S3 + CloudFront로 정적 서빙(서버 비용 0원), API는 Lambda + API Gateway로 요청 기반 과금. serverless-http로 Fastify를 Lambda 핸들러로 감싸 기존 코드 변경 최소화.
S3, CloudFront, Lambda, API Gateway, Route53, ACM 인증서 전체를 Terraform으로 관리. terraform apply 한 번으로 전체 AWS 리소스 프로비저닝. 인프라 변경 이력이 git에 남습니다.
AWS Access Key 없이 OIDC(OpenID Connect)로 GitHub에서 AWS 역할을 임시 발급받아 배포. web 변경 시 S3 sync + CloudFront invalidation, API 변경 시 Lambda 함수 코드 업데이트 자동화.
@fastify/rate-limit으로 LLM 엔드포인트 IP당 10회/분 제한. CORS origin을 cheesu.co.kr로 제한. question 최대 500자 제한으로 토큰 낭비 방지. 서버·클라이언트 이중 검증으로 사용자에게 명확한 안내 제공.
① 번들 크기: React 런타임(~45KB gzip)이 없고 Svelte는 컴파일 후 프레임워크 코드가 거의 사라짐. ② 빌드·HMR 속도: Vite 기반이라 Next.js 빌드보다 빠르고 개발 서버 HMR 체감 속도 차이가 남. ③ App Router 복잡도 없음: Next.js 13+ "use client"/"use server" 경계 관리 없이 단순한 구조 유지.