실내건축 기업 홈페이지와 관리자 CMS
월 방문 100명 규모에 맞는 서버리스 구조를 Terraform으로 세우고, 월 AWS 비용을 30% 줄이고, state 소실 사고를 무중단으로 복구했다.

- 역할
- 설계 · 프론트엔드 · 백엔드 · 인프라 · SEO · 운영 (1인, 디자인 시안은 제공받음)
- 기술
- Next.js 16 · React 19 · TypeScript · Tailwind 4 · ASP.NET Core (.NET 8) Minimal API · EF Core · AWS Lambda · API Gateway · RDS PostgreSQL 16 · S3 · SES · Terraform · Vercel
- 99 / 95
- Lighthouse 성능 (데스크톱 / 모바일) · 접근성·SEO 100
- −30%
- 월 AWS 비용 ($30.9 → $21.5)
- 39
- state 소실 후 import로 복구한 리소스
- 12일
- 계약에서 준공까지
방문이 월 100명 남짓인 기업 사이트에 EC2 상시 서버는 과한 비용이었고, 실제 리스크는 문의 유실·DB 노출·요금 폭증이었습니다. Vercel 정적 프론트와 .NET 8 Lambda, 사설망 RDS를 Terraform으로 코드화하고 예산 알림과 스로틀을 걸어 운영 중입니다. 10월에 로컬 Terraform state가 사라지는 사고가 났을 때는 리소스 39개를 import해 무중단으로 복구하고 S3 backend로 옮겼습니다.
상황
지역 실내건축 기업의 홈페이지와 관리자 CMS를 개인 브랜드로 수주했습니다. 요구는 회사소개·사업분야·시공실적·공지·문의·견적과 관리자 1계정의 콘텐츠 관리, 그리고 지역 키워드 SEO였습니다. 월 방문 100명 규모라 유지비가 낮아야 했고, 고객이 체감하는 가치는 '문의가 사라지지 않는 것'이었습니다.
한 일
- 01
서버리스 구조와 네트워크 결정
프론트는 Vercel 정적 프리렌더, 백엔드는 .NET 8 Lambda와 HTTP API Gateway로 컴퓨트 비용을 0원에 가깝게 맞췄습니다. RDS는 처음에 공개 배치 + 비표준 포트 + SSL 강제 안(추가 비용 0)으로 갔다가 하루 만에 VPC 격리 안으로 바꿨고, 그 근거를 tf 주석으로 남겼습니다. NAT($33/월) 대신 무료인 S3 게이트웨이 엔드포인트를 쓰고, SES 인터페이스 엔드포인트($9.4/월)도 S3 메일큐 → VPC 밖 mailer Lambda 구조로 대체했습니다.
- 02
문의·견적: 개인정보가 DB를 거치지 않게
문의 시스템화는 계약 범위 밖이라 문의·견적은 SES 발송 전용으로 설계했습니다(DB 무저장, Reply-To는 고객 주소라 회신 버튼으로 바로 답장). 견적 첨부는 Lambda 6MB 한도를 우회해 S3 presigned PUT으로 직행하고, 10MB 이하는 메일 첨부·초과분은 3일 링크로 보내며, S3 수명주기와 코드 상수를 한 쌍으로 맞췄습니다.
- 03
관리자와 가드레일
관리자 1계정은 JWT와 PBKDF2 해시, 기본 비밀번호 교체 강제, 로그인·presign·pageview 레이트리밋으로 지켰고, 콘텐츠 CRUD는 트랜잭션 전체 교체로 처리했습니다. AWS Budgets $60(80/100/120%와 예측), API Gateway 10rps 스로틀, 로그 14일 보존, 고아 이미지 정리, 최소권한 IAM(메일 발신 주소 고정)을 걸었습니다.
- 04
사고 대응: Terraform state 소실
10월에 로컬 tfstate와 tfvars가 사라졌습니다. Lambda 환경변수에서 tfvars를 복원하는 스크립트, 리소스 39개를 import하는 스크립트, API가 돌려주지 않는 값을 보정하는 스크립트 세 개로 state를 다시 만들고 plan이 'No changes'인 것을 확인한 뒤 S3 backend(버전 관리 · 잠금)로 옮겼습니다. 운영 중단은 없었습니다.
- 05
SEO·GEO와 색인 문제 진단
JSON-LD(GeneralContractor), sitemap, 서치콘솔 소유 확인, GA4 env 게이트를 넣었고, 구글 색인이 8페이지 중 2페이지에 머무는 문제를 하위 페이지가 루트 메타를 상속하고 canonical이 없는 탓으로 진단해 페이지별 title·description·canonical을 추가했습니다.
결과
- Lighthouse 성능 데스크톱 99 · 모바일 95, 접근성·모범사례·SEO 100 (납품 시 자체 측정).
- 월 AWS 비용 $30.9 → $21.5, 예약 인스턴스 적용 시 추가 절감 여지.
- 계약 12일 만에 준공, 시공실적 76건·사진 17·인증 8·연혁 11 콘텐츠 이관, 연 단위 운영 계약.
- state 소실 사고 무중단 복구, S3 backend 이관과 복구 스크립트 3종 보존.
정직하게 적어 두는 것
- 자동 테스트는 없습니다. 검증은 수동 스모크, next build, terraform validate였습니다.
- 계약 금액과 고객 식별 정보는 적지 않습니다.
화면
클릭하면 크게