Budding
개인 인프라 스택 — 회사 인프라 없이도 production-grade
회사 인프라 없이, 외부 API 7개를 긁어 Notion 7개에 쌓는 시스템을 신용카드 0원으로 굴리는 중. GitHub과 Notion 무료 한계를 어디까지 밀어붙일 수 있는지 직접 부딪혀 본 기록.
- #infrastructure
- #side-project
- #github
- #notion
신용카드를 꺼내지 않고 시스템을 띄웠다
홈레이더를 만들고 싶었다. 매주 국토부·네이버·카카오를 포함한 외부 API 7개를 긁어, 결과를 Notion DB 7개에 쌓고, 차트로 보는 시스템. 회사라면 AWS·EventBridge·Postgres를 붙이면 끝나는 일이다. 하지만 사이드 프로젝트에 회사 계정을 쓸 수는 없었고, 개인 계정으로 그 스택을 새로 세우려니 신용카드 결제부터 요금 모니터링까지 시작 비용이 먼저 막아섰다.
그래서 결제 화면을 한 번도 열지 않기로 정하고, GitHub과 Notion의 무료 한계만으로 같은 일을 해낼 수 있는지 직접 부딪혀 봤다. 결론부터 말하면 신용카드 0원으로 돌아간다. 어떤 무료 layer를 어디까지 밀어붙였고, 어디서 멈춰야 하는지를 아래에 적는다.
무료 한계를 어디까지 밀어붙였나
Hosting — GitHub Pages
정적 site (블로그·portfolio·리포트). 빌드 후 master 또는 gh-pages 브랜치에 push.
- 무료, custom domain 지원
- SSL 자동 (Let's Encrypt)
- monthly bandwidth 100GB
- build minutes 무제한
부족: SSR·동적 라우팅·서버 사이드. 그건 static + client routing(SPA fallback)으로 우회.
CDN — GitHub Releases
video·고해상도 image·PDF 등 binary asset. release tag로 versioning.
- 파일당 2GB
- 트래픽 무제한
- 영구 URL
Backend — Notion API
작은 데이터셋 (수천 행). 노션 DB가 lightweight backend.
- 무료 무제한 row (UI는 ~1만 행 부드러움)
- 시각화·모바일 앱 자동
- API 3 req/sec
Scheduler — GitHub Actions cron
주기 작업(데이터 수집·report 생성·deploy).
- public repo는 무제한 minutes
- private도 월 2,000분 무료
- secret 관리, matrix 빌드
홈레이더는 이렇게 묶였다
처음에 그리던 시스템이 실제로 이 네 layer 위에서 돌아간다. GH Actions cron이 주 1회 발동해 외부 API 7개(국토부·네이버·카카오 등)를 fetch하고, 결과를 Notion DB 7개에 저장한다. demo video는 cdn-assets Releases에 호스팅했고, 결과 차트는 GitHub Pages site에서 노출할 계획이다.
여기까지 신용카드 결제: 0원.
회사 stack 대비
| 영역 | 회사 stack | Personal stack |
|---|---|---|
| Hosting | Vercel·Netlify Pro | GH Pages |
| CDN | Cloudflare R2·S3 | GH Releases |
| DB | Postgres·DynamoDB | Notion API |
| Scheduler | EventBridge·Cron | GH Actions |
| Monitoring | Datadog·Sentry | Console·email |
| Auth | Auth0·Cognito | (없음) |
부족한 게 있다. monitoring·auth·실시간 처리. 다만 side project 규모에선 미충족 영역이 critical이 아닌 경우가 많음.
함정
- vendor lock-in to GitHub: 모든 게 GitHub에 묶임. GitHub policy 변경 시 영향. 다만 git 원본은 옮기기 쉬움.
- 공개·private 경계 혼동: Notion DB는 노션 계정 안에만, GH는 공개 시 누구나 접근. 데이터 민감도 분류 필수.
- API rate limit이 critical path: 모든 layer에 rate limit 있음. 동기 처리는 자주 막힘. async + batch.
- scale up 안 됨: 만 명 user 대응 X. side project 초기에만 OK.
- monitoring 부재: 깨져도 모름. cron 실패 → email alert 최소.
언제 production stack으로 이전하나
- DAU 100+ 사용자 (rate limit·UI 부담)
- 데이터 민감도 ↑ (auth·암호화 필수)
- 다른 사람과 collaboration (Notion 권한 부족)
- 시간 비용보다 SaaS 결제가 저렴해질 때
그 전까지는 personal stack으로 충분.
핵심
인프라 예산이 0원이어도, 외부 API 7개를 긁어 Notion 7개에 쌓는 시스템은 이미 돌아간다. 도구가 없어서 못 한 적은 없었고, 무료 한계의 끝까지 가본 사람만 그 한계를 정확히 안다.
관련
/notes/github-releases-as-cdn — CDN layer /notes/notion-lightweight-backend — DB layer /notes/public-api-integration-patterns — 외부 API 통합 패턴