
1인 기업 인프라: 6자리 수 매출의 솔로 비즈니스를 뒷받침하는 연간 350달러 규모의 스택
요약
연간 50만 위안의 매출을 올리는 1인 기업이 사용하는 연간 350달러 규모의 저비용 고효율 인프라 스택을 소개합니다. 마이크로서비스 대신 단일 VPS 기반의 '철의 삼각형' 스택을 통해 비용과 복잡성을 최소화하는 방법을 다룹니다.
핵심 포인트
- 단일 VPS 상의 FastAPI, Celery, SQLAlchemy 조합 권장
- Docker Compose와 GitHub Actions를 활용한 효율적인 배포
- 비용 0원의 모니터링 도구와 Nginx 최적화 설정
- 기술 스택 선택 시 비용보다 시간 낭비를 줄이는 것이 핵심
1인 기업 인프라: 6자리 수 매출의 솔로 비즈니스를 뒷받침하는 연간 350달러 규모의 스택
고통 (The Pain) — 당신은 1인 기업을 시작하려면 비싼 서버, 도메인, OSS 버킷, 데이터베이스가 필요하며, "올바른" 클라우드 네이티브 (cloud-native) 스택을 선택하는 것이 진정한 엔지니어링 과제라고 가정합니다.
배울 내용:
- 연간 50만 위안(¥500K/year, 약 $70K)을 버는 솔로 비즈니스의 실제 인프라 비용 — 연간 총 2,500 위안(¥2,500/year, 약 $350)
- "철의 삼각형 (iron triangle)" 스택 (단일 VPS 상의 FastAPI + Celery + SQLAlchemy)과 왜 하나의 서버가 마이크로서비스 (microservices)보다 나은지에 대한 이유
- 프로덕션 Nginx 설정: SSL, 속도 제한 (rate limiting), WebSocket 업그레이드, 정적 캐싱 (static caching)
- Docker Compose + Portainer 배포, GitHub Actions CI/CD 파이프라인, 그리고 비용이 0원인 모니터링 3인방
- 언제 스케일링 (scale)해야 하는지, 그리고 언제 인프라를 그대로 두어야 하는지를 아는 간단한 규칙
지난주 한 독자가 저에게 메시지를 보냈습니다: "Wu, 저도 1인 기업을 운영하고 싶은데, 서버 하나만 해도 수천 단위가 들고, 그다음엔 도메인, OSS, 데이터베이스... 초기 비용이 너무 크지 않나요?"
제 답변은 단호했습니다: 당신의 가장 큰 비용은 서버가 아닙니다. 잘못된 기술 스택에 낭비하는 시간입니다.
저는 거의 6개월 동안 OPC (one-person company, 1인 기업)인 MoLi AGI를 운영해 왔습니다. 그 위에서 저는 매일의 WeChat 발행, AI Agent 서비스, SaaS 미니 도구, 그리고 데이터 대시보드까지 모두 프로덕션 환경에서 작동하는 완전 자동화된 비즈니스를 구축했습니다. 오늘 저는 연간 50만 위안을 버는 솔로 비즈니스에 실제로 어떤 인프라가 필요한지 정확히 볼 수 있도록, 실제 청구 금액을 포함한 전체 스택을 공개합니다.

철의 삼각형: 컴퓨팅 (Compute), 데이터 (Data), 전달 (Deliver) — 연간 약 $350
0. 환경 의존성 (Environment Dependencies)
시작하기 전에, 제 서버에서 실행 중인 핵심 의존성 목록입니다.
Python 환경 (requirements.txt):
fastapi==0.115.0
uvicorn[standard]==0.30.0
gunicorn==22.0.0
...
시스템 의존성 (System dependencies, Docker 환경):
# Docker + Docker Compose가 설치된 경량 서버
docker --version # >= 24.0
docker compose version # >= 2.20
...
모든 준비가 되었는지 확인:
# Python 패키지 확인
python -c "import fastapi, celery, sqlalchemy, redis, minio; print('OK')"
...
1. 기술 스택 파노라마: 나의 "철의 삼각형 (Iron Triangle)"
전체 아키텍처는 다음과 같습니다. 1인 기업이 가장 두려워하는 것이 무엇일까요? 규모를 키우고 범위를 넓히는 것입니다. 혼자서 Kubernetes 클러스터를 관리하면서, 비즈니스 코드를 작성하고, 동시에 운영 모니터링 (Ops monitoring)까지 수행할 수는 없습니다. 아키텍처는 반드시 최소한의 구성이어야 하며, 유지보수가 가능하고, 한 사람이 운영할 수 있어야 합니다.
┌───────────────────────────────────────────────────────┐
│ 사용자 트래픽 진입 (User Traffic Entry) │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
...
저의 핵심 원칙은 단 세 가지뿐입니다:
- 분리하지 말고 통합하라 (Merge, don't split) — 단일 VPS에서 실행할 수 있다면, 마이크로서비스 (Microservices)를 찾지 마세요.
- 자체 호스팅보다 SaaS를 우선하라 (SaaS over self-hosted) — 푸시 알림, 이메일, 모니터링 등은 가능한 한 제3자 서비스를 사용하세요.
- 모든 것을 컨테이너화하라 (Containerize everything) — Docker 툴체인을 사용하면 마이그레이션 (Migration) 비용이 거의 제로에 가깝습니다.
2. 서버 선택: 1인 기업 (OPC)에게는 경량 VPS가 최적의 선택
제목의 질문에 직접 답해 보겠습니다. 연간 50만 엔 규모의 비즈니스에는 어떤 서버가 필요할까요?
월 100엔 미만의 2코어 4GB 경량 애플리케이션 서버 하나면 충분합니다.
저는 현재 홍콩 노드에서 Alibaba Cloud의 "경량 애플리케이션 서버 (Lightweight Application Server)"를 사용하고 있습니다: 2코어, 4GB RAM, 40GB SSD, 3Mbps 대역폭 — 연간 결제 시 월 약 84엔 정도입니다. 이 서버에서 무엇이 실행되고 있을까요?
- 메인 API (FastAPI + Gunicorn + Uvicorn)
- Celery Worker + Beat (예약된 작업)
- Redis (캐시 + 메시지 큐)
- MySQL 8.0 (개발 환경 전용 — RDS는 다른 곳에 위치)
- MinIO (객체 스토리지)
- Nginx (리버스 프록시 + SSL)
- Portainer (컨테이너 관리 패널)
단 한 대의 머신, 7개의 서비스, 모두 Docker화(Dockerized)됨. 최대 메모리 사용량: 3.2GB. 평균 CPU 부하: 0.8. 그리고 아직 소규모 서비스 두 개를 더 돌릴 수 있는 여유 공간(headroom)이 있습니다.
왜 완전한 클라우드 네이티브(cloud-native) 스택을 사용하지 않느냐고요? 제가 직접 해봤습니다. EKS를 사용한 첫 주에, 일일 활성 사용자(DAU)가 37명뿐이었음에도 NAT Gateway 비용으로만 200엔을 태웠습니다.
1인 기업(OPC)의 황금률: 사용자 10,000명을 확보하기 전까지는 Kubernetes를 건드리지 마세요.
단일 노드(single node) 환경에서는 Docker Compose + Portainer 조합만으로도 충분하고도 남습니다. 만약 수평 확장(scale horizontally)이 필요해진다면, Swarm 모드를 통해 아주 쉽게 마이그레이션할 수 있습니다. compose.yml 파일의 deploy 블록만 수정하면 단일 서버에서 클러스터(cluster)로 전환됩니다.
제 docker-compose.yml의 핵심 부분은 다음과 같습니다:
version: '3.8'
services:
...
컨테이너화(containerization)의 가장 큰 이점은 성능이 아니라, 인지 부하(cognitive load)의 감소입니다. 머신을 옮기는 작업은 단 한 번의 docker compose up -d로 끝납니다. 1분 안에 모든 것이 다시 복구됩니다.
3. 리버스 프록시(Reverse Proxy) & SSL: 완전한 Nginx 설정

비용: 5개의 도구 vs 1개의 시스템
너무 많은 1인 기업(OPC)의 API들이 공용 인터넷에 무방비 상태로 노출되어 있습니다. HTTPS도 없고, 속도 제한(rate limiting)도 없으며, 안티 스크래핑(anti-scraping)도 없습니다. 즉, 앞문이 활짝 열려 있는 셈입니다. 아래는 제가 운영 환경(production)에서 사용하는 Nginx 설정으로, SSL (자동 갱신 기능이 포함된 Let's Encrypt), 속도 제한, WebSocket 업그레이드, 그리고 정적 자산 캐싱(static asset caching)을 포함합니다.
3.1 메인 Nginx 설정
# /etc/nginx/nginx.conf
user nginx;
worker_processes auto;
...
3.2 사이트 설정 (SSL 포함)
# /etc/nginx/conf.d/opc.conf
# HTTP → HTTPS 강제 리다이렉트
server {
...
3.3 SSL 인증서 자동 갱신
# certbot 설치
apt-get install -y certbot python3-certbot-nginx
...
3.4 Nginx + SSL 검증
# 1. 설정 구문 확인
nginx -t
...
4. 데이터베이스 & 스토리지: 계층화는 단지 돈을 아끼는 방법일 뿐입니다
4.1 관계형 데이터베이스 (Relational database)
Primary: Alibaba Cloud RDS MySQL, 2 cores 4GB, 50GB SSD — 월 ¥98 (종량제, 트래픽 비용 없음).
왜 MySQL을 셀프 호스팅(self-host)하지 않나요? 셀프 호스팅은 백업 스크립트를 직접 작성하고, 디스크를 직접 확장하며, 장애 발생 시 직접 복구해야 함을 의미하기 때문입니다. 1인 기업(OPC)의 시간은 곧 수입입니다 — 운영(ops)에 시간을 쓰는 것은 코드 작성에 시간을 쓰는 것보다 손해입니다. RDS는 자동 백업, 원클릭 롤백(rollback), 슬로우 쿼리 로그(slow-query logs)를 제공합니다. 6개월에 한 번 15분 정도 확인하는 것만으로 충분합니다.
4.2 캐시 계층 (Cache layer)
Redis 7-alpine이 경량 서버에서 직접 실행됩니다 — Docker 이미지는 단 32MB입니다. 운영 환경(production)에서는 512MB의 메모리 제한을 두었지만, 실제로는 100MB 미만으로 사용합니다.
사용 사례:
- 세션 저장소 (Session storage)
- Celery 결과 백엔드 (Celery result backend)
- API 응답 캐시 (API response cache) (TTL 60초, 히트율 약 65%)
- 단순 카운터 (Simple counters) (DAU, API 호출량)
4.3 파일 스토리지 (File storage)
객체 스토리지(object storage) 삼총사: OSS (주 저장소) + MinIO (로컬 캐시) + CDN.
Alibaba Cloud OSS (표준 티어): 50GB 용량 + 월 10GB 트래픽 ≈ 월 ¥15. 여기에 무엇이 저장될까요?
- 사용자가 업로드한 이미지 및 PDF
- 생성된 기사 커버 이미지
- AI 에이전트(AI Agents)가 생성한 중간 파일들
MinIO는 로컬 핫 캐시(hot cache) 역할을 합니다 — 자주 액세스하는 파일은 송출 비용(egress fees)을 절감하기 위해 OSS에서 로컬 장비로 가져옵니다. 간단한 LRU 교체(eviction) 전략을 사용합니다:
import os
from pathlib import Path
from functools import lru_cache
...
버그 노트: 원본 초안에서는
self.client를 초기화하지 않은 채self.client.get_object(...)를 호출하여, 런타임에AttributeError: 'FileCache' object has no attribute 'client'오류가 발생했습니다. 위에서 수정되었습니다.
CDN 오리진 풀(origin-pull) 트래픽 비용은 월 약 ¥3–5 정도입니다. 말도 안 되게 저렴합니다.
5. CI/CD 및 배포: Jenkins 대신 GitHub Actions
혼자 일하는 사람에게 Jenkins는 필요 없습니다. GitHub Actions의 무료 티어는 1인 기업(OPC)에게 충분하고도 남습니다 — 다 쓰는 것조차 불가능할 정도입니다.
나의 배포 파이프라인(deployment pipeline):
# .github/workflows/deploy.yml
name: Deploy
on:
...
전체 흐름: git push → GitHub Actions가 테스트 실행 → 이미지를 빌드하고 서버로 SCP 전송 → docker compose를 통해 핫 리로드됩니다. 푸시부터 라이브까지 평균 47초입니다. 아무도 이 과정을 지켜볼 필요가 없습니다.
6. 모니터링은 어떨까요?
모두 무료인 세 가지 도구:
| 도구 | 용도 | 무료 등급 |
|---|---|---|
| Sentry | 오류 추적 | 월 5,000 이벤트 — 솔로 프로젝트가 사용하기에 충분함 |
| ... | ||
| 월별 총 비용: ¥0. |
7. 연간 청구서: 모든 위안화 공개
많은 사람이 기술 제품을 구축하려면 돈을 많이 써야 한다고 생각합니다. 제가 실제로 지출한 금액(연간 가격, CNY)은 다음과 같습니다:
| 항목 | 사양 | 년 | 월 |
|---|---|---|---|
| 경량 서버 | 2C4G, 40GB SSD | ¥1,008 | ¥84 |
| ... | |||
| 연간 ¥2,500 (~$350). 이것이 MoLi AGI를 운영하는 전체 인프라 비용입니다. |
새로운 OPC의 경우 더 저렴하게 할 수 있습니다:
- 모든 서비스를 하나의 경량 서버에 압축 (¥1,008/년으로 충분함)
- MySQL을 SQLite로 대체 (¥0)
- MinIO를 사용하여 오브젝트 스토리지를 자체 호스팅 (디스크가 차는 것만 주의하세요)
극단적인 최소 비용: 연간 ¥1,008 — 월 ¥84.
8. 제가 '구식' 스택을 선택한 이유
아마 눈치채셨겠지만, 서버리스(Lambda/FaaS)도 없고, NoSQL(MongoDB는 괜찮지만 — 저는 그게 필요하지 않습니다), 메시지 큐(Redis의 내장 pub/sub를 넘어서는 것)도 없습니다.
이유는 간단합니다. 1인 기업의 스택은 '아키텍처적 미학'이 아니라 '빠른 배포'에 봉사해야 합니다.
이 스택이 1,000명에서 10,000명 사용자까지 성장하는 것을 견딜 수 있을까요?
- API: Nginx 캐시 레이어 추가
- 데이터베이스: 읽기 복제본(read replica) 추가
- 서버: 코어 4개 8GB로 업그레이드
얼마나 걸릴까요? 주말 하루. 그리고 그 주말이 오기도 전에, 저는 이미 ¥2,500으로 1년 전체를 운영하며 그보다 10배 이상 벌었습니다.
OPC의 기술 선택은 공학적 문제가 아니라 재무적 문제입니다. 서버 시간의 매 순간이 돈을 벌게 해주고 있나요, 아니면 단지 당신의 '기술적 위생'을 만족시키고 있나요?
언제 업그레이드해야 할까요? 여기 간단한 의사 결정 규칙이 있습니다:
- 서버 비용이 월 수입의 1% 미만이라면, 인프라를 건드리지 마세요.
- 운영 (Ops) 시간이 코딩 시간보다 길어진다면, 즉시 업그레이드하세요.
저는 이 규칙을 3개월 동안 테스트해 보았습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기