구두쇠식 서비스 인프라 운영법

0

인프라 절약기: 월 $45 → $15

주의사항 : 약간의 비용적 과장, 타임라인 상 코드 상으로 예전에 해뒀는데 여기에 같이 버무린 부분 있음 주의.



"월 인프라 비용이 $45... 좀 더 절약한다. 쥐어짜면 뭐든 나온다.

개인 서비스를 운영중이다. 혼자 개발하고 있다. 월 인프라 비용이 $45-50이 나온다. 줄일거다. 이거 줄일 수 있다.

🔍 어디서 돈이 나가고 있나?

  • Cloud Run (백엔드): $5-10/월
  • Cloud Build (빌드): $20-25/월
  • AI API (Gemini): $15-20/월

아직 dev/production 둘 다 테스트하느라 build를 계속해야해서 이해할 수 있지만 내 돈이 아까운건 사실이다.
아 거 프리티어에서 최대한 절약을 해보면 되겠다.

🎯 무엇을 절약했나

1. 무료 티어 파악하고 최대한 활용

구글 클라우드 무료 한도:

  • Cloud Run: 200만 요청/월 무료
  • Cloud Build: 120분/일 무료
  • Secret Manager: 6개 시크릿 무료

생각보다 GCP가 많이 혜자팩이다. 꼭 써라. AWS보다 저렴하다 진짜.

2. 똑똑한 캐싱으로 중복 작업 제거

??? : 저희 캐싱할만큼 사이즈 안커요.
아니. build cache는 필수다. 일단 해라. 아무튼 하라고.

3. 꼭 필요한 것만 빌드

프론트만 바뀌었는데 백엔드까지 빌드할 이유는 없다.
추후, 프론트, 백 둘 다 분리하면 베스트다.(라고 해놓고 일주일 이내 진행 예정) 터보 레포로 로컬에서 묶어서 편하게 누리다가 배포단계에서 호되게 당하고 있다.

🔧 실제로 뭘 했나?

📦 조건부 빌드로 60-80% 빌드 스킵

turbo-ignore라는 도구로 변경된 부분만 빌드하도록 했어요.

# 이런 식으로 API가 바뀌었을 때만 빌드
if npx turbo-ignore apps/api; then
  echo "API Clean - Build skip!"
else
  echo "API Dirty - Build start!"
fi

결과: 프론트만 바꿨을 때 백엔드 빌드가 아예 안 돌아간다.(이거 잘한거 아니다. 결국 백/프론트 따로 빌드하는게 가장 베스트다.)

🗂️ 의존성 기반 캐싱으로 90%+ 성공률

소스 코드는 매번 바뀌지만 package.json, pnpm-lock.yaml은 잘 안 바뀐다. 이걸 기준으로 캐싱했더니 캐시 히트율이 90%+로 올라간다.

🗄️ Redis 제거해서 아키텍처 단순화

실시간 알림 때문에 쓰던 Redis를 과감히 제거했다. 대신 PostgreSQL 큐 시스템으로 바꿨다.제거하고 나중에 유튜브 알고리즘에 이 영상이 올라왔다 (https://www.youtube.com/watch?v=OZrmFD2ajlQ)

🤖 AI 비용도 75% 절약

Gemini API 쓸 때 프롬프트 구조를 바꿨다. 자주 쓰는 부분은 앞에, 바뀌는 부분은 뒤에 배치해서 캐싱 효과를 최대한 활용했다.

// 이렇게 바꿨더니 캐시가 잘 되더라.
const prompt = `
${공통_법무_컨텍스트}  // 95% 재사용
${문서_타입_템플릿}    // 80% 재사용
---
사용자 요청: ${사용자_입력}  // 매번 다름
`;

📄 PDF 생성을 클라이언트로 이전

서버에서 PDF 만들면 메모리도 많이 쓰고 비용도 나가더라(뭐 크롬 엔진도 올려야하고 아무튼 무거워지고 비쌈). react-to-print로 브라우저에서 바로 PDF 만들도록 바꿨다.

📊 결과는?

드디어 성공! 🎉

항목BeforeAfter절감률
전체 비용$45-50/월$15-20/월70-85%
빌드 시간30분10-15분50-67%
  • 캐시 히트율: 30% → 90%+
  • 빌드 스킵률: 0% → 60-80%

💡 요약된 꿀팁

1. 무료 티어를 정확히 파악하세요

각 서비스마다 무료 한도가 있는데 대충 메이저한 것들 찾아보니 GCP가 혜자더라.

2. 캐싱은 의존성 파일 기준으로

소스 코드 말고 package.json, lock 파일 기준으로 캐싱하면 히트율이 엄청 올라가더라.

3. 조건부 빌드는 필수

모든 변경이 전체 빌드를 유발할 필요 없어요. turbo-ignore 같은 도구 적극 활용하자.(turbo repo 기준)

4. 클라이언트로 옮길 수 있는 건 옮기기

PDF 생성, 이미지 처리 등 클라이언트에서 할 수 있는 건 과감히 옮겨보자. 서버에서 모든걸 하는게 능사가 아니더라.(돈 많으면 나중에 서버로 옮기고...)

🚀 마무리

월 $45에서 $15로, 85% 비용 절감했다.

물론 성능 트레이드오프는 있었지만, 초기 단계에서 돈이 부족하다면 비용 효율성이 더 중요하다고 생각한다.
혹시나 서비스를 맨 처음 운영해볼 사람들은 구두쇠 모드로 인프라 최적화에 도전해보자. 생각보다 재미있고, 그 돈 아껴서 저녁에 치킨 한번 더 먹을 수 있다.

0개의 댓글