매년 블랙프라이데이가 되면 포럼에는 「1코어 1GB, 연간 요금이 커피 한 잔보다 싼」 KVM 저가 VPS가 쏟아집니다. 사놓고 방치하는 사람도 있고, 블로그·리버스 프록시·WireGuard·RSS·크론 작업까지 돌리는 사람도 있습니다——같은 사양인데 차이가 나는 이유는 하드웨어가 아니라 저가 VPS 활용법, 즉 기본 풀스택을 경량 컴포넌트로 바꾸고 커널 파라미터로 1MB 메모리와 컨텍스트 스위치 한 번까지 계산하는 능력에 있습니다.
이 글은 「더 큰 머신을 사라」는 이야기가 아닙니다. 한 가지 질문에만 답합니다: 1코어 1GB로 사이트 구축과 서비스 운영을 할 때 한계는 어디이고, 그 선에 어떻게 닿을 수 있을까?
현실 직시: 1코어 1GB로 할 수 있는 일
KVM에서 1코어는 보통 물리 코어 독점이 없다는 뜻이며, 버스트 연산력은 제한적입니다. 1GB 메모리는 OS, 캐시, 앱, 연결 사이에서 나눠 써야 합니다. 「아무것도 못 돌린다」는 뜻은 아니고, 한 가지를 잘 돌리는 것이 전제이며 나머지는 통합하거나 외부로 빼야 합니다.
| 시나리오 | 실현 가능성 | 핵심 전제 |
|---|---|---|
| 개인 블로그 / 문서 사이트 | ✅ 매우 적합 | 정적 생성 또는 SQLite, 리버프록시는 Caddy |
| API 리버스 프록시 / 엣지 노드 | ✅ 매우 적합 | 무상태, 연결 수 제어, BBR 활성화 |
| WireGuard / 경량 VPN | ✅ 적합 | 사용자 < 10명, 추가 터널 프로토콜 비활성화 |
| Git / 프라이빗 npm 캐시 | ⚠️ 간신히 | 저장소 작게, Web UI 무거운 기능 끄기 |
| WordPress + MySQL | ❌ 비추천 | DB만 300MB+, OOM 위험 높음 |
| Docker로 3개 이상 컨테이너 | ❌ 비추천 | dockerd 자체가 메모리 소비, 한도에 빨리 도달 |
메모리 장부: 1MB마다 역할을 정하라
Debian 12 최소 설치에 SSH만 켠 상태라면 시스템 상주 메모리는 약 150~200MB입니다. 앱에 쓸 「실제 예산」은 400MB 전후——페이지 캐시와 급증 연결은 아직 포함되지 않았습니다.
- 시스템 + systemd + sshd: 약 150~180MB, 불필요한 unit 비활성화 시 30~50MB 추가 절약.
- Web 리버프록시 (Caddy / nginx): 약 15~40MB, 정적 사이트 모드에서는 nginx가 더 가볍습니다.
- 앱 런타임: Go 바이너리는 보통 10~30MB. Node.js는 빈 프로세스만 50MB+——저가 VPS에서는 신중히.
- 데이터베이스: SQLite는 상주 거의 0. MySQL 8 기본 설정은 쉽게 400MB 소비.
- Swap / zram: 512MB~1GB 가상 메모리를 버퍼로 두는 것을 권장. 다만 「진짜 메모리」 대용으로 쓰지 마세요.
⚠️ 경험상:
free -h에서free열만 보지 말고available열을 보세요. Linux는 여유 메모리를 캐시에 쓰므로, 앱이 실제로 확보할 수 있는 양은 available입니다.
1코어 1GB 사이트 구축: 경량 컴포넌트 대안
전통적인 LAMP/LNMP 스택은 저가 VPS에서 메모리 킬러입니다. 아래 조합은 실전에서 일 수천 PV 개인 사이트를 안정적으로 버텨 왔습니다:
| 계층 | 무거운 기본 선택 | 저가 VPS 대안 | 메모리 절약 |
|---|---|---|---|
| Web 서버 | Apache httpd | Caddy 또는 nginx | ~50~100 MB |
| 앱 | WordPress (PHP-FPM) | Hugo / Zola 정적 생성 | ~200 MB+ |
| 데이터베이스 | MySQL / MariaDB | SQLite 또는 순수 정적 JSON | ~300 MB+ |
| 동적 댓글 | 자체 호스팅 댓글 시스템 | Giscus / Utterances (GitHub 호스팅) | ~100 MB |
| 인증서 | certbot + cron | Caddy 자동 HTTPS | 상주 프로세스 1개 감소 |
동적 콘텐츠가 꼭 필요하다면 Go 단일 바이너리(PocketBase, miniBlog류)나 Python FastAPI + SQLite를 우선 검토하고 worker 수는 1로 고정하세요.
바로 쓸 수 있는 Caddy 정적 사이트 설정
example.com {
root * /var/www/site
file_server
encode gzip zstd
header Cache-Control "public, max-age=3600"
}
사이트 전체 메모리 사용량은 보통 < 30 MB. HTTPS 자동 갱신까지 되므로 certbot이 필요 없습니다. 빌드는 로컬이나 CI에서 끝내고 저가 VPS는 「파일만 서빙」——1코어 1GB 사이트 구축에서 가장 안정적인 경로입니다.
KVM 성능 최적화: 커널·시스템 계층 튜닝
KVM 가상머신의 네트워크·I/O 성능은 호스트에 크게 좌우되지만, 게스트 측에도 충분한 튜닝 여지가 있습니다. 아래 파라미터는 대부분의 Debian / Ubuntu 저가 VPS에서 검증되었습니다:
1. BBR 혼잡 제어 활성화
net.core.default_qdisc = fq net.ipv4.tcp_congestion_control = bbr net.ipv4.tcp_fastopen = 3
해외 회선 저가 VPS에서는 BBR이 기본 cubic보다 대역을 「채우기」 쉽고 체감 지연도 줄이는 경우가 많습니다.
2. 기존 Swap 파티션 대신 zram 사용
디스크 Swap은 VPS에서 I/O 지연이 높아 머신 전체를 멈추게 하기 쉽습니다. zram은 메모리 압축으로 Swap을 흉내 내 작은 스파이크에 유리합니다:
apt install zram-tools # /etc/default/zramswap 에서 설정: # ALGO=lz4 # PERCENT=50
3. swappiness 낮춰 핫 데이터 보호
vm.swappiness = 10 vm.vfs_cache_pressure = 50
4. 연결 수·파일 디스크립터
net.core.somaxconn = 1024 net.ipv4.tcp_max_syn_backlog = 2048 fs.file-max = 65535
5. systemd 서비스 정리
쓰지 않는 서비스를 확인해 비활성화하세요. 자주 끄는 항목: bluetooth, avahi-daemon, ModemManager, 패널 기본 모니터링 에이전트(외부 모니터링이 있다면).
ab나 hey로 부하 테스트해 「최적화했는데 효과 모름」을 피하세요.
저가 VPS 활용 목록: 믿을 만한 7가지 용도
1코어 1GB를 전용 엣지 노드로 보고 미니 데이터센터로 쓰지 않으면, 아래를 안정적으로 돌릴 수 있습니다:
- 개인 블로그 / 기술 문서: Hugo + Caddy, 로컬 빌드 후 rsync 배포.
- 리버스 프록시 진입점: 앞에 Cloudflare, 뒤에서 내부망이나 오브젝트 스토리지 오리진으로 전달.
- WireGuard 점프 호스트: 3~5대 기기 연결, CPU 부담 극소.
- Webhook / Bot 상주: Telegram, Slack, Discord Bot 등 Go 또는 Python 단일 프로세스.
- DNS 또는 AdGuard Home: 쿼리 로그 크기 제한과 정기 로테이션 필수.
- 경량 모니터링 프로브: Uptime Kuma나 커스텀 curl 스크립트로 외부 대시보드에 보고.
- 프라이빗 Git 미러:
git daemon이나 Gitea 미니멀 모드, 저장소는 GB 단위 이내.
AI 추론, 대형 프로젝트 컴파일, 보안 스캔 파이프라인에는 저가 VPS가 부족합니다——이런 작업은 전용 개발 머신이 맞습니다. 코드 보안 검토 도구 체인을 검토 중이라면 GitHub Copilot App /security-review 사용법을 참고해 무거운 작업은 로컬이나 클라우드 Mac에서 처리하세요.
레드라인: 저가 VPS에서 절대 하지 말 것
- Elasticsearch / ClickHouse: 공식 최소 메모리 권장이 1G를 훨씬 넘어, 기동 즉시 OOM.
- 기본 설정 MySQL 8:
innodb_buffer_pool_size를 64M까지 낮추고 극도로 느린 쿼리를 감수하는 경우가 아니면 비추천. - 패널 + LNMP 일괄 설치: 패널 + Nginx + MySQL + PHP로 상주 800MB 넘기기 쉬움.
- Kubernetes (k3s 단일 노드): 컨트롤 플레인 자체가 저가 VPS용이 아님.
- Docker 풀스택 동시 가동: dockerd + compose 다중 서비스로 메모리 단편화 심각.
- 저가 VPS를 NAS 대신 BT 다운로드 24시간: 디스크 I/O와 메모리 이중 타격, 상업 회선 속도 제한도 흔함.
oom_score로 프로세스를 고릅니다——보통 systemd가 아니라 nginx나 앱이 표적입니다. 증상은 「SSH는 되는데 사이트 502」——먼저 dmesg | grep -i kill을 확인하세요.
모니터링·장애 대응: OOM 5분 전
저가 VPS에는 여유가 없습니다. 모니터링은 가볍고, 정확하고, 알림 가능해야 합니다:
- node_exporter: 지표는 풍부하지만 다소 무거움 (~20 MB), 여유 있는 머신에 적합.
- glances: 터미널 친화적,
glances -w로 간이 Web 패널 가능. - 커스텀 스크립트: cron으로 5분마다
MemAvailable확인, 80MB 미만이면 Telegram으로 curl 알림. - 로그 로테이션:
logrotate필수. access.log가 디스크를 채우는 일이 OOM보다 흔합니다.
부하 테스트 시 세 가지 지표: load average(1코어면 1.5 초과 장기 유지 금지), MemAvailable(100MB 이상 유지 권장), iowait(Swap 스래싱 시 급등).
언제 「졸업」해서 더 큰 머신으로 갈아타야 할까?
아래 중 하나라도 해당하면 저가 VPS 수명이 다 된 것입니다:
- 주 1회 이상 OOM이 나고, 이 글의 모든 최적화를 이미 적용함.
- Web + DB + 백그라운드 작업을 동시에 돌려야 하고, 어느 것도 외부로 뺄 수 없음.
- 일일 UV가 안정적으로 1만 넘고, CDN 캐시 후에도 오리진 CPU가 계속 풀가동.
- 작업이 「페이지 호스팅」에서 「컴파일, 테스트, AI 추론」으로 바뀜——클라우드 Mac이나 상위 VPS를 검토할 시점.
모델 선택, 프록시 아키텍처처럼 연산에 민감한 작업은 Gemini 4 기다릴 만할까? 2026 선택 가이드를 참고해 추론과 평가는 여유 있는 환경에서 하세요.
저가 VPS로 부족할 때: 클라우드 Mac이 「무거운 일」을 맡는다
1코어 1GB KVM이 잘하는 것은 엣지 호스팅, 리버프록시, 경량 상주——저렴하고 버리기 쉬워 실험에 딱 맞습니다. 반면 Xcode 빌드, Docker 멀티스테이지 빌드, 로컬 LLM 평가, 안정적인 GUI가 필요한 원격 개발에는 Apple Silicon 통합 메모리와 macOS 네이티브 툴체인이 환경 구축 시간을 크게 줄여 줍니다. M4 Mac mini 대기 전력은 약 4W, 7×24 CI나 개발 샌드박스면 VPS 플랜을 반복 업그레이드하는 것보다 장기적으로 저렴할 수 있습니다.
현실적인 분업: 저가 VPS가 트래픽 입구와 정적 사이트, 클라우드 Mac이 빌드와 테스트. Gatekeeper, SIP, FileVault는 장기 무인 개발 노드에 시스템 수준 보호를 더해, 저가 VPS에서 무거운 컨테이너를 억지로 돌리는 것보다 안심됩니다.
KVM 성능 최적화를 끝까지 다듬었다면, 다음은 컴파일과 AI 실험을 적절한 연산력으로——Kvmzen 클라우드 Mac 요금제 알아보기. 필요한 기간만 구독하고 끝나면 중지, 피크용으로 하드웨어를 상시 비축할 필요가 없습니다.