코드가 살 수 있는 다섯 곳
지구상의 거의 모든 호스팅 제품은 이 다섯 범주 중 하나의 변형이다. 이것들을 익히면 마케팅 페이지가 더 이상 헷갈리지 않는다.
- 정적 호스팅 — 순수 파일(HTML(HyperText Markup Language, 페이지의 뼈대), CSS(Cascading Style Sheets, 꾸미는 스타일), JavaScript, 이미지)을 브라우저에 곧장 제공한다. 어떤 서버도 당신의 코드를 "실행"하지 않는다. 그저 파일을 넘겨줄 뿐이다. 인터넷에 올려둔 폴더라고 생각하라. 망가질 것도, 패치할 것도 없기에, 인터넷에 올릴 수 있는 가장 안정적인 것이다. 예: GitHub Pages, Cloudflare Pages, Netlify, Vercel(정적 모드).
- 엣지 함수 — 사용자와 물리적으로 가까운, 전 세계 곳곳의 서버에서 돌아가는 작은 코드 조각들. 거의 즉시 시작되며 가벼운 로직에 훌륭하다: 인증 확인, 리다이렉트, 작은 (애플리케이션 프로그래밍 인터페이스 — 한 프로그램이 다른 프로그램과 대화하는 통로) 호출. 함정: 기능이 축소된 환경에서 돌아가기에, 모든 라이브러리가 거기서 작동하지는 않는다. 예: Cloudflare Workers, Vercel Functions, Deno .
- 서버리스 함수 — 요청 시에 실행되고 유휴 상태가 되면 사라지는 코드. 시간당이 아니라 요청당 과금된다. 당신은 함수를 작성하고, 플랫폼이 기계를 처리한다. 단일 요청이 몇 분을 돌아야 하기 전까지는 훌륭하다 — 대부분의 플랫폼은 타임아웃(흔히 10~60초) 후에 함수를 끊어버린다. 예: AWS Lambda, Google Cloud Functions, Vercel Functions.
- 컨테이너 — 당신의 앱과 그 환경 전체(올바른 언어 버전, 라이브러리, 시스템 도구)를 컨테이너라 불리는 휴대 가능한 상자에 담은 것. 플랫폼이 그 상자를 계속 돌려준다. 제어권이 더 많고, 설정은 살짝 더 든다. 그 상자를 정의하는 단 하나의 파일이
Dockerfile이고, AI는 그것을 잘 쓴다. 예: Fly.io, Railway, Render, Google Cloud Run. - 가상 머신() — 데이터센터에서 빌리는 컴퓨터 한 대 전체. 모든 것 — 운영체제, 보안 업데이트, 웹 서버, 전부 — 을 직접 설치하고 관리한다. 최대의 제어권, 최대의 책임. 예: AWS EC2, DigitalOcean Droplets, Hetzner.
다섯 범주를 나란히 놓고 보면, 아래로 갈수록 관리할 것이 적음을 제어권이 많음과 맞바꾼다:
관리 적음 ◀────────────────────────────▶ 관리 많음
유휴 시 저렴 제어 많음
┌──────────┐ ┌──────────┐ ┌────────────┐ ┌───────────┐ ┌──────────┐
│ STATIC │ │ EDGE │ │ SERVERLESS │ │ CONTAINER │ │ VM │
│ 파일 │ │ 함수 │ │ 함수 │ │ 내 박스 │ │ 전체 PC │
├──────────┤ ├──────────┤ ├────────────┤ ├───────────┤ ├──────────┤
│ 코드 │ │ 엣지에서 │ │ 요청 시 │ │ 계속 │ │ 전부 │
│실행 안 함│ │ 실행 │ │ 실행 │ │ 실행 중 │ │직접 실행 │
└──────────┘ └──────────┘ └────────────┘ └───────────┘ └──────────┘
Pages Workers Lambda Railway EC2
비용에 관한 대략의 어림 규칙: 플랫폼이 당신을 위해 더 많이 관리할수록, 아무도 앱을 쓰지 않을 때 더 저렴하고, 모두가 쓸 때 더 많은 걱정을 대신해 준다.