Fly.io — Firecracker 위의 글로벌 PaaS
Fly.io — Firecracker 위의 글로벌 PaaS
Fly.io 는 컨테이너를 글로벌 엣지에 빠르게 띄우는 PaaS 입니다. 내부에서 Firecracker microVM 을 써서 컨테이너 이미지를 가벼운 가상 머신으로 변환해 띄웁니다.
1. Fly.io 에 대한 이야기
Fly.io 는 Kurt Mackey · Thomas Ptacek · Jerome Petazzoni 가 2017 년 설립한 회사·플랫폼입니다.
| 시기 | 사건 |
|---|---|
| 2017 | 회사 설립. |
| 2018 ~ 2020 | 초기 엣지 라우팅 서비스. |
| 2020 ~ | Firecracker 기반 컨테이너 호스팅 (현재 모델). |
| 2022 ~ | Fly Machines API. |
핵심 가치 제안:
- 사용자 가까운 리전에서 앱이 응답 (anycast + 다중 리전).
- Dockerfile ·
fly launch로 빠른 배포. - 빠른 콜드 스타트 (Firecracker microVM).
2. Firecracker
Firecracker 는 AWS 가 2018 년 오픈소스로 공개한 microVM 모니터입니다. AWS Lambda · Fargate 의 기반으로 알려져 있습니다. KVM 위에 매우 작은 가상 머신을 매우 빠르게 (밀리초 단위) 부팅합니다.
Fly.io 는 Docker 이미지를 받아 Firecracker microVM 으로 변환해 실행합니다. 컨테이너의 격리·이식성과 가상 머신의 보안 경계를 결합하는 모델입니다.
| 항목 | 컨테이너 | Firecracker |
|---|---|---|
| 격리 | 커널 공유 | 별도 커널 (게스트) |
| 부팅 | 매우 빠름 | 매우 빠름 (수십 ms) |
| 보안 표면 | 커널 공유의 표면 | 더 좁음 |
장점은 멀티 테넌트 환경에서 강한 격리. 한계는 게스트 커널이 별도이므로 일부 호스트 기능에 직접 접근이 어렵다는 점.
3. fly launch · deploy
brew install flyctl # Mac/Linux
fly auth signup
fly launch # 프로젝트 디렉터리에서
# Windows
iwr https://fly.io/install.ps1 -useb | iex
fly launch 가 인식하는 정보:
- 빌드 종류 (Dockerfile · 빌드팩 · 자동 추론).
- 앱 이름 (전역 유일).
- 첫 리전 (사용자 가까운 곳).
- Postgres · Redis 등 부속 서비스.
fly deploy — 빌드 + 푸시 + 롤링 배포. 헬스체크 통과 후 트래픽이 옮겨갑니다.
4. fly.toml
app = "myapp"
primary_region = "nrt"
[build]
dockerfile = "Dockerfile"
[http_service]
internal_port = 8080
force_https = true
auto_stop_machines = true
auto_start_machines = true
min_machines_running = 0
[[vm]]
cpu_kind = "shared"
cpus = 1
memory_mb = 512
auto_stop_machines + auto_start_machines 가 결합되면 트래픽이 없을 때 인스턴스가 일시 정지 됐다가 들어오는 요청으로 깨어납니다 (콜드 스타트). 비용 절감 모델.
5. fly machine
fly m list
fly m run image-ref --region nrt --memory 1024
fly m stop <id>
fly m destroy <id>
큐 기반 작업 스케줄링·일시적 GPU 머신 같은 자리에 활용됩니다.
6. 글로벌 anycast
Fly.io 는 30+ 리전을 운영합니다. 한국 가까운 리전: nrt (도쿄) · hkg (홍콩) · sin (싱가포르). primary_region 은 stateful 서비스의 자리, 다중 리전 배포는 같은 앱을 여러 리전에 복제합니다.
같은 IPv4 · IPv6 주소가 여러 리전에서 anycast 로 광고됩니다. 사용자 라우터가 BGP 거리에 따라 가장 가까운 곳으로 보냅니다. 결과는 DNS 변경 없이 글로벌 분산. 같은 조직의 앱들끼리는 Fly 사설 네트워크 (IPv6 매시) 로 직접 통신합니다.
7. 가격 모델
- 컴퓨트 — VM 크기 · 시간 단위. 정지 (stop) 상태에는 컴퓨트 요금 없음.
- 스토리지 — 영구 볼륨 SSD. GB · 월 단위. 한 볼륨은 한 머신에 부착.
- 네트워크 — Egress 트래픽 청구. 일정량 무료 후 GB 단위.
무료 티어는 시기별 변동. 2024 년 이후 모델 변경 (Pay As You Go + 작은 무료 크레딧) 보고. 가격은 공식 페이지로 확인하는 편이 안전합니다.
8. 데이터 통합
Fly Postgres — Fly 가 관리하는 Postgres 모델. Fly 가 모든 인프라를 띄우지만 운영 책임은 사용자가 일정 부분 집니다 (매니지드 RDS 만큼 자동화는 아니라는 보고). 근래에는 외부 매니지드 Postgres (Neon · Supabase · CrunchyBridge) 와의 결합이 자주 권장됩니다.
Upstash · Redis — fly redis create 로 Upstash Redis 인스턴스를 같은 리전에 생성. 매니지드 Redis 의 표면.
6PN 사설 네트워크 — IPv6 기반 사설 망. 같은 조직 앱들이 <app>.internal 호스트네임으로 서로 호출. DB 같은 backend 자원은 공개 IP 없이 6PN 으로만 접근 가능하게 운영.
9. 다른 PaaS 비교
| 플랫폼 | 모델 | 강점 | 한계 |
|---|---|---|---|
| Heroku | PaaS | 오랜 표준 · add-ons | 무료 티어 폐지 (2022) |
| Railway | PaaS · 깃 연동 | UI 친화 · 빠른 시작 | 큰 트래픽 경험 적음 |
| Render | PaaS · 매니지드 | 정적·동적 모두 | 일부 리전 한정 |
| Vercel | 정적·서버리스 | Next.js · 글로벌 엣지 | longrunning 백엔드 부적합 |
| DO App Platform | PaaS | DO 통합 | 글로벌 분산 약함 |
| Fly.io | microVM PaaS | Firecracker · anycast | 매니지드 책임 분담 |
| Hetzner Cloud | IaaS | 매우 저렴 | PaaS 아님 |
| 자체 VPS | IaaS | 비용 통제 · 자유도 | 운영 부담 전부 |
10. 자주 쓰는 모양
- 다중 리전 —
fly scale count 3 --region nrt --region fra --region iad. - 비공개 백엔드 —
http_service만 공개, DB · 워커는 6PN 으로만. - 빌드 캐시 —
fly deploy --remote-only로 Fly 빌드 서버에서. - 비밀 관리 —
fly secrets set KEY=value. 환경 변수로 주입.
11. 자주 걸리는 자리
콜드 스타트 — auto_stop_machines = true 로 비용을 줄이면 첫 요청은 깨어남 시간 (수백 ms ~ 몇 초).
볼륨의 단일 부착 — 한 볼륨은 한 머신에만 부착. 다중 인스턴스 공유는 외부 객체 저장소 · DB 로.
Fly Postgres 의 운영 책임 — 일부 운영 (점진 업그레이드 · 복제) 은 사용자 책임. 외부 매니지드 권장이 늘었습니다.
글로벌 분산의 일관성 — 데이터가 한 리전에만 있으면 멀리 있는 리전 인스턴스는 DB 호출에 지연. read replica · 캐시 검토.
빌드 환경 차이 — 로컬 도커와 Fly 빌드 서버 결과가 다른 경우 보고. 캐시 · 아키텍처 가정 점검.
하고픈 말
Fly.io 의 매력은 anycast + Firecracker 의 조합으로 글로벌 지연을 손쉽게 줄이는 점입니다. 다만 매니지드 자동화는 Heroku · Render 보다 약하고, 영구 볼륨의 단일 부착이 stateful 분산 운영을 어렵게 만듭니다. 작은 글로벌 앱에 자연스러운 자리이고, 큰 운영은 ECS · 자체 k8s 가 더 적합할 수 있습니다.
Next
- iam
- s3
Fly.io 문서 · fly.toml 레퍼런스 · Fly Machines · Firecracker · Fly Postgres · Upstash · Twelve-Factor · Heroku · Render · Railway 를 참고합니다.