본문으로 건너뛰기
피드

월 $20 인프라로 MRR $10K 회사 여러 개 돌리는 법

backend 약 6분
vote
0
댓글
북마크

VPS 하나, Go 바이너리, SQLite, 로컬 GPU, GitHub Copilot 조합으로 월 $20 이하의 인프라 비용으로 MRR $10K 넘는 회사를 여러 개 운영하는 개발자의 실전 플레이북. AWS 없이도 충분히 확장 가능한 아키텍처를 구축할 수 있음을 구체적 수치와 코드로 보여줌.

  • 1

    $5~$10 VPS 하나로 AWS EKS+RDS 대체, Go 정적 바이너리로 배포 단순화

  • 2

    SQLite WAL 모드로 동시성 확보, NVMe 위 단일 .db 파일로 수천 명 처리

  • 3

    중고 RTX 3090 + VLLM으로 배치 AI 무제한 로컬 추론, OpenRouter로 프론티어 모델 폴백

  • 4

    GitHub Copilot 요청 단위 과금 활용 — 에이전트 30분 작업도 $0.04

  • 월 $20짜리 인프라로 MRR $10K 넘는 회사를 여러 개 돌리고 있는 개발자의 실전 플레이북
    • VC 피칭에서 "대체 투자금이 왜 필요한 거죠?"라는 피드백을 받을 정도로 린(lean)하게 운영 중
    • 핵심 철학은 단순함 — 비용을 0에 가깝게 유지하면 100만 달러 투자받고 번레이트 태우는 것과 런웨이가 동일함

서버: VPS 하나면 충분함

  • AWS EKS + RDS + NAT Gateway 세팅하면 유저 한 명 없이도 월 $300 날아감
    • 대신 Linode나 DigitalOcean에서 $5~$10짜리 VPS 하나 빌리면 끝
    • 1GB RAM이 무섭게 느껴질 수 있지만, swapfile 하나 잡아두면 충분히 돌아감
  • 서버가 하나면 로그 위치도 알고, 왜 죽었는지도 알고, 재시작도 바로 가능
    • 인프라 관리가 아니라 요청 처리에 집중할 수 있음

언어: Go의 압도적 이점

  • 백엔드를 Go로 작성하는 이유가 명확함
    • Python이나 Ruby는 인터프리터 부팅 + gunicorn 워커만으로 RAM 절반을 먹음
    • Go는 단일 정적 바이너리로 컴파일 → scp로 서버에 올리고 실행하면 배포 끝
    • pip 의존성 지옥도, 가상환경도 없음
  • 2026년 기준 추가 이점: LLM이 Go 코드를 추론하기 매우 쉬움
    • 표준 라이브러리만으로 프로덕션급 웹서버 구현 가능 — 프레임워크 불필요

AI: 로컬 GPU로 무제한 크레딧 확보

  • 배치 AI 작업에 OpenAI API 수백 달러 쓰는 대신, 중고 RTX 3090($900)으로 로컬 추론
    • 프롬프트 로직에 버그 있으면 전체 배치를 다시 돌려야 하는데, 로컬이면 비용 부담 제로
  • 로컬 AI 업그레이드 경로가 깔끔함
    • Ollama: 한 줄 명령으로 설치, 프롬프트 반복 실험에 최적
    • VLLM: 프로덕션용. PagedAttention으로 동시 요청 8~16개를 배치 처리하면 1개 처리 시간에 16개가 끝남
    • Transformer Lab: 파인튜닝이나 사전학습이 필요할 때

💡

> OpenRouter를 쓰면 Anthropic, OpenAI, Google 모델을 하나의 OpenAI-호환 API로 통합 가능. Anthropic API 다운되면 자동으로 OpenAI 모델로 폴백되니 별도 재시도 로직이 필요 없음

Copilot: AI IDE 구독료 절약의 핵

  • Claude Opus 4.6을 하루종일 쓰면서 월 $60도 안 나옴
    • GitHub Copilot이 토큰 단위가 아니라 요청 단위 과금이라서 가능한 구조
    • 에이전트가 30분 동안 코드베이스 전체를 뒤지고 수백 개 파일을 수정해도 요청 1회 = 약 $0.04
  • 전략: 성공 기준이 명확한 상세 프롬프트를 작성하고, "에러 다 고칠 때까지 계속해"라고 던진 뒤 커피 마시러 가면 됨

데이터베이스: SQLite가 생각보다 쓸만한 이유

  • 새 프로젝트는 무조건 SQLite3로 시작함
    • 로컬 C 인터페이스/메모리 통신이라 원격 Postgres TCP 왕복보다 차수 단위로 빠름
  • "동시성은?" — WAL(Write-Ahead Logging) 켜면 해결됨
    • PRAGMA journal_mode=WAL; PRAGMA synchronous=NORMAL; 한 줄이면 리더/라이터가 서로 안 막힘
    • NVMe 드라이브 위 단일 .db 파일로 동시 유저 수천 명 처리 가능

중요

> 결론은 단순함 — 단일 VPS + 정적 바이너리 + 로컬 GPU + SQLite 조합이면 월 커피 몇 잔 가격으로 확장 가능한 스타트업 인프라가 완성됨. 무한 런웨이 확보.


기술 맥락

  • Go를 백엔드 언어로 선택한 건 단순히 "빠르니까"가 아니에요. 1GB RAM 서버라는 극한 제약 조건에서 Python/Ruby의 런타임 오버헤드가 치명적이거든요. 정적 바이너리 배포는 컨테이너 오케스트레이션 자체를 불필요하게 만들어서 운영 복잡도를 아예 제거해버리는 효과가 있어요
  • SQLite에 WAL 모드를 거는 건 핵심 트레이드오프를 정확히 이해한 선택이에요. 기본 저널 모드에서는 쓰기마다 전체 DB 잠금이 걸리지만, WAL은 쓰기를 별도 로그에 먼저 기록하고 나중에 병합하는 방식이라 읽기/쓰기 동시성이 확보돼요. 다만 WAL도 동시 쓰기는 직렬화되니까, 쓰기 부하가 극단적이면 Postgres로 넘어가야 하는 시점이 있어요
  • VLLM의 PagedAttention이 Ollama 대비 동시 처리에서 압도적인 이유는 GPU 메모리 관리 방식 차이 때문이에요. Ollama는 요청마다 전체 KV 캐시를 할당하는 반면, VLLM은 OS의 가상 메모리처럼 필요한 만큼만 페이지 단위로 할당하거든요. 그래서 같은 24GB VRAM으로 동시 요청을 배치로 묶어 처리할 수 있는 거예요

VC 투자 없이 린하게 부트스트랩하는 구체적 플레이북으로, 특히 Go+SQLite+VPS 조합의 비용 대비 성능이 인상적임. 사이드 프로젝트나 초기 스타트업 개발자에게 바로 적용 가능한 실전 가이드.

댓글

댓글

댓글을 불러오는 중...

backend

Go에서 Rust로 옮길 때 진짜로 바뀌는 것들

이 글은 Go 백엔드 서비스를 Rust로 옮길 때 속도보다 컴파일 타임 보장, 런타임 트레이드오프, 개발자 경험이 더 중요하다고 설명한다. nil 패닉, 데이터 레이스, 에러 처리, 제네릭, 비동기 모델, 마이그레이션 전략까지 실무 관점에서 Go와 Rust를 길게 비교한다.

backend

Python 3.15에서 헤드라인은 못 탔지만 꽤 쓸만한 기능들

Python 3.15에는 lazy imports나 Tachyon profiler 같은 큰 기능 말고도 실무에서 바로 체감될 만한 작은 개선들이 들어가. TaskGroup 취소, 컨텍스트 매니저 데코레이터 개선, 스레드 안전 이터레이터처럼 평소 애매하게 불편했던 지점들이 꽤 깔끔해졌어.

backend

심평원, DUR부터 의료영상 심사까지 클라우드로 갈아엎는다

심평원이 정보시스템 클라우드 전환과 함께 병·의원 업무에 직접 닿는 DUR, 의료영상 AI 심사, 요양급여내역 조회 시스템을 고도화한다. 핵심은 설치형 프로그램 중심이던 연계를 웹과 API 기반으로 넓히고, 진료·청구 과정에서 실시간 확인과 자동 판독을 강화하는 쪽이다.

backend

윈도우 에러 코드 7번 ‘ERROR_ARENA_TRASHED’는 어디서 왔을까

ERROR_ARENA_TRASHED는 Win32에서 실제로 쓰이는 현대적 에러라기보다 MS-DOS 시절 메모리 관리 구조에서 넘어온 잔재야. MS-DOS가 메모리 블록 앞의 arena 시그니처를 훑다가 예상한 값이 아니면 ‘arena가 망가졌다’고 보고 이 에러를 냈다는 이야기야.

backend

C/C++ 컴파일러의 느슨한 메모리 동시성 버그를 자동으로 잡는 박사논문

C와 C++ 컴파일러에서 relaxed memory 동시성 버그를 찾는 자동 테스트 프레임워크를 다룬 박사논문이 공개됐어. Téléchat, Atomic-mixer 같은 도구로 소스 수준 동작과 컴파일된 프로그램 동작을 비교하고, LLVM과 GCC 툴체인에서 실제 버그를 찾아낸 내용이 핵심이야.