서비스를 바닥부터 구축하는 업무를 진행중입니다.
관련하여 FE관점에서 MAU에 따른 개략적 서버비용을 판단한 경험을 공유하겠습니다.
해당 아티클을 읽으시면 아래와 같은 지식을 얻을 수 있습니다.
트래픽 모델링은 비슷한 경쟁업체의 MAU나 사업 구상 시 예상한 MAU를 파악하면 개략적인 파악이 가능합니다.
MAU 2000이라는 가정 하에 저희가 주의깊게 보아야 하는 수치는 DAU/MAU, Concurrent Users, TPS, QPS 입니다.
정의: 특정 앱이나 서비스에 활동한 순 사용자 수를 의미합니다.
계산: MAU가 2000이면 DAU는 MAU * 0.4(40%로 추정 시) = 800 으로 추정됩니다.
정의: 특정 시점에 활동 중(ex 5분 내 이벤트 1회 이상)인 고유 세션 수
가정: DAU 800, 피크 시점엔 DAU의 5%가 동시에 활동
계산: DAU peak_concurrency_ratio = 800 0.05 = 40명
정의
가정
pages_per_user = 20backend_calls_per_page = 1.5peak_factor = 5write_user_ratio = 10%writes_per_writer= 2계산 결과
Pageviews/day = DAU × pages_per_user = 16,000 PV/일
BackendCalls/day = Pageviews/day × backend_calls_per_page = 16,000 × 1.5 = 24,000 calls/일
avg_QPS = (BackendCalls/day)/seconds_per_day = 0.278 QPS
peak_QPS = avg_QPS _peak_factor = 1.39 QPS
Writes/day = DAU_ 0.1 * 2 = 160 writes/일
avg_TPS = (Writes/day)/seconds_per_day ≈ 0.00185 TPS
peak_TPS = avg_TPS * peak_factor ≈ 0.00926 TPS
이제 서버 사용량을 추정할 수 있는 지표들을 얻게 되었습니다.
위 데이터를 기반으로 개략적인 서버 사용량을 추정해보겠습니다.
위에서 도출한 지표(DAU, QPS/TPS, PV 등)를 바탕으로, 실제로 얼마만큼의 컴퓨트(Compute), 네트워크(Network), 스토리지(Storage) 자원이 필요한지 단계별로 계산 해 보겠습니다.
SSR HTML per day
Pageviews/day가 16,000회로 추정되었고, 이의 평균크기를 50KB로 잡으면 계산식은 아래와 같습니다.
API per day
BackendCalls/day가 24,000으로 추정되었고, 이의 평균 크기를 10KB(압축)로 가정 계산식은 아래와 같습니다.
월간 환산
이 둘의 합산은 30일 기준으로 다음과 같습니다.
이는 버셀의 team/pro플랜의 기본 제공량인 1TB 대비 매우 작으며, EC2 egress로 잡아도 몇 달러 미만 급입니다.
SSR은 캐시에 미스(hit되지 않을) 때만 CPU가 사용됩니다.
따라서 ISR 히트율에 따라 월간 SSR 렌더 횟수와 CPU 리소스 사용량이 결정됩니다.
예를 들어, h=0.9, memory=1GB인 경우
→ SSR_renders_per_month = 48,000,
→ cpu_hours_per_month = 48,000 × 0.1 / 3600 = 1.33시간,
→ GB_hours_per_month = 1.33 GB-hr 로 계산됩니다.
이제 히트율을 각 0.4, 0.7, 0.9로 가정하여 CPU시간 및 GB-시간을 예상해 보겠습니다.
| 히트율 h | SSR 렌더/월 | CPU 시간/월 | GB-시간(메모리 512MB 가정) |
|---|---|---|---|
| 0.9 | 48,000 | ~1.33h | ~0.68 GB-h |
| 0.7 | 144,000 | ~4.00h | ~2.05 GB-h |
| 0.4 | 288,000 | ~8.00h | ~4.10 GB-h |
이제 해당 지표들을 가지고 비용 산정을 진행해 보겠습니다.
vercel기준 compute과금은 "Active CPU(시간) + Provisioned Memory(GB-시간)"으로 계산되며 서울(icn1)기준으로는 CPU는 $0.169/시간, 메모리는 $0.014/GB-시간 으로 명시되어 있습니다.
| 히트율 h | CPU 시간 | CPU 비용 | 메모리 GB-h | 메모리 비용 | 월 합계 |
|---|---|---|---|---|---|
| 0.9 | 1.33h | $1.33×0.169 = $0.225 | 0.68 | 0.68×0.014 = $0.0095 | ≈ $0.23 |
| 0.7 | 4.00h | 4.00×0.169 = $0.676 | 2.05 | 2.05×0.014 = $0.0287 | ≈ $0.70 |
| 0.4 | 8.00h | 8.00×0.169 = $1.352 | 4.10 | 4.10×0.014 = $0.0574 | ≈ $1.41 |
결과는 월 $0.23 ~ $1.41 수준이며 team 플랜의 월 $20크레딧 안에서 여유롭습니다.
비용산정
vercel team 계정 시 시트당 $20
$0.23 ~ $1.41 < $20(기본 제공)31.2 GB < 1TB(기본제공)달 $20로 운영 가능
CPU(vCPU 2코어)
피크 요청량(SSR 대상)
PV_day = 16,000, peak_factor = ×5 → peak_RPS ≈ 0.926h=0.7 가정 → 피크 SSR RPS = 0.926 × (1−0.7) = 0.278평균 SSR 실행시간: t = 0.1 s (100ms, p75 기준 가정)
필요 코어(러프)
필요 vCPU ≈ (피크 SSR RPS × t) / 목표 코어 활용률
= (0.278 × 0.1) / 0.6
≈ 0.046 vCPU
→ 이론상 0.05코어만으로도 커버 가능.
→ 콜드스타트/GC/다운스트림 대기/스파이크 버퍼를 고려하여 vCPU 2코어 배정(여유 40× 이상).
→ HA를 위해 2대 구성(2 vCPU × 2대).
메모리 (4GB)
디스크 (40GB)
네트워크 참고
필요한 vm
| 위치 | 수량 | cpu (core) | memory (GB) | disk (GB) |
|---|---|---|---|---|
| KIDC | 2대 | 2 | 4 | 40 |
이외에도 LB, 캐시, 오토스케일, 모니터링, 로드벨런서 등을 위한 추가 vm이나 관리가 필요합니다
위 추정금액 및 필요한 리소스에 의거하여, 예시로 든 MAU 2000정도의 서비스는 Vercel로 배포하는게 비용과 성능 측면에서 효율적인걸 확인할 수 있었습니다.
전달받은 MAU를 기반으로 트래픽 모델링을 측정하고, 서버 자원을 추정하는 아티클을 작성해 보았습니다.
해당 글이 조금이나마 도움이 되셨기를 바라며, 읽어주셔서 감사합니다.
References
글 잘 읽었어요!!
vercel과 어떤 서비스 (혹시 aws인가요?) 의 비용 비교인지 알려주시면 너무너무 좋을것 같아요!
확실히.. vercel은 편하지만 비씨긴 하죠 ㅠㅠ
초기 규모에서는 감으로 인프라를 잡기 쉬운데, 이렇게 수치 기반으로 근거를 세워두는 게 결국 비용을 아끼는 길이라 생각합니다. 정말 좋은 참고자료가 되었어요. 감사합니다!
보통 “감”으로만 계산하는 부분을 이렇게 단계별로 근거를 잡아두면,
기획·디자인팀까지 설득할 때도 훨씬 명확해질 것 같아요.
FE 개발자 입장에서 이런 정량적 접근을 시도하신 게 멋집니다 . 특히 MAU를 기반으로 서버 비용을 수치화해서 추정한 과정이 너무 인상 깊었어요.
자세한글 너무 감사합니다.
직원의 입장에서 비용에 관해서 설득하거나 이야기 나눌때 가늠해서 이야기를 많이했는데
이렇게 자세히 수치화하니까 너무 좋은것 같아요
굉장히 상세한 비용추정 글 감사합니다! 이런 것 까지 고려해야 하는구나.. 싶네요.
구체적인 수치들로 떨어지는 내용을 보니 굉장히 와닿는걸요?
보고서 든 생각인데, AI 를 활용해 템플릿화 한다면 여기저기에 많이 적용해볼 수 있을 것 같아요.
흥미로운 글이네요. 감사합니다!