왜 Fly.io가 당신이 사용하지 않는 최고의 무료 Docker 호스팅인가

Fred· Full-Stack Developer6 min read

플랫폼: Fly.io | 제공자: Fly.io | 무료 티어: 매월 $5 크레딧 영구 제공

아무도 말하지 않는 비밀

Fly.io가 특별한 이유는 다음과 같습니다: 매달 5달러의 무료 크레딧을 영원히 줍니다. 체험판이 아니고, 기간 한정 제안이 아닙니다—Docker 컨테이너를 위한 영구 무료 호스팅입니다. 사용량이 5달러 미만이면(스포일러: 대부분의 프로젝트에서 그럴 것입니다), 아무것도 지불하지 않습니다.

더 좋은 점? "무료"라고 주장하는 다른 모든 플랫폼과 달리 Fly.io는 Docker 컨테이너를 실제 VM으로 실행합니다. 5분 후에 앱이 잠드는 서버리스가 아닙니다. 컨테이너가 24/7 계속 실행되며 요청에 즉시 응답합니다.

저는 1년 넘게 Fly.io에서 3개의 프로덕션 API를 실행하고 있습니다. 총 비용? 0달러. 정확히 어떻게 하는지 알려드립니다.

무료로 얻는 것

월 5달러 크레딧은 심각한 인프라로 변환됩니다:

256MB RAM의 VM 3개를 전 세계 어디서나 실행할 수 있습니다. 1GB 스토리지의 PostgreSQL 데이터베이스를 추가하세요. 160GB의 아웃바운드 대역폭을 더하세요. 이 모든 것이 무료 허용량 내에 편안하게 들어가며 여유가 있습니다.

수학은 간단합니다: 단일 256MB VM은 월 약 $1.94입니다. 3개와 작은 데이터베이스를 합하면 약 5달러입니다. 이 한도 내에 있는 한 Fly.io의 월별 크레딧이 모든 것을 커버합니다.

시작하는 데 5분이면 충분합니다

먼저 Fly CLI를 설치하세요. Mac에서는 단일 brew 명령입니다. Linux에서는 설치 스크립트를 curl합니다. Windows 사용자는 PowerShell을 사용합니다. 전체 과정은 30초 걸립니다.

# macOS
brew install flyctl

# Linux
curl -L https://fly.io/install.sh | sh

# Windows
pwsh -Command "iwr https://fly.io/install.ps1 -useb | iex"

이메일만으로 가입하세요—나중에 카드를 요청하겠지만 처음 몇 개의 앱은 카드 없이 배포할 수 있습니다:

flyctl auth signup

첫 번째 배포 (믿기 어려울 정도로 쉽습니다)

여기서 Fly.io가 빛납니다. Dockerfile이 있나요? 좋습니다, 작동할 것입니다. 없나요? Fly.io가 알아서 합니다. 진심입니다—프레임워크를 감지하고 모든 것을 자동으로 생성합니다.

실제 예시를 보여드리겠습니다. 지난주에 배포한 Node.js API입니다:

// index.js
const express = require('express');
const app = express();
const port = process.env.PORT || 3000;

app.get('/', (req, res) => {
  res.json({
    message: 'This API runs 24/7 for free',
    timestamp: new Date().toISOString()
  });
});

app.get('/health', (req, res) => {
  res.json({ status: 'healthy' });
});

app.listen(port, '0.0.0.0', () => {
  console.log(`Running on port ${port}`);
});

이것을 배포하려면 문자 그대로 이것만 실행했습니다:

flyctl launch

그게 전부입니다. Fly가 Node.js를 감지하고, Dockerfile을 생성하고, 이미지를 빌드하고, 전역으로 배포했습니다. 전체 과정은 약 2분 걸렸습니다. 제 API는 *.fly.dev URL에서 라이브가 되었고, 자동 HTTPS와 함께 가장 가까운 데이터 센터에서 요청에 응답합니다.

아무도 언급하지 않는 Docker 장점

Fly.io를 Vercel, Netlify 등과 구분하는 것은: 실제 Docker 컨테이너를 배포한다는 것입니다. 이는 문자 그대로 무엇이든 실행할 수 있다는 의미입니다—Python 스크립트, Go 바이너리, Rust 서버, PHP 애플리케이션, Ruby on Rails 등.

저는 웹훅을 처리하는 Python Flask API, 예약된 작업을 실행하는 Node.js 봇, 이미지 리사이징을 처리하는 Go 서비스를 가지고 있습니다. 모두 무료 티어에서 실행됩니다. Vercel의 취미 플랜에서 이것을 해보세요.

컨테이너는 Amazon이 Lambda에 사용하는 것과 동일한 기술인 Firecracker microVM으로 실행됩니다. 밀리초 단위로 부팅하지만 실제 서버처럼 작동합니다. 콜드 스타트 없음, 10초 타임아웃 없음, 서버리스 제한 없음. 그냥 예상대로 실행되는 코드입니다.

256MB를 작동시키기 (생각보다 쉽습니다)

무료 티어는 VM당 256MB RAM을 제공합니다. 무슨 생각을 하는지 압니다—그건 아무것도 아니야! 하지만 놀랄 것입니다. 가벼운 Express.js API는 약 50MB를 사용합니다. 몇 개의 엔드포인트가 있는 Flask 앱은 약 80MB입니다. 조심하면 작은 Rails 앱도 200MB에 들어갈 수 있습니다.

256MB에서 잘 작동하는 것:

  • API 백엔드 (REST 또는 GraphQL)
  • 웹훅 프로세서
  • 예약된 작업 실행기
  • 동적 기능이 있는 정적 사이트
  • Discord/Slack 봇
  • SQLite가 있는 작은 데이터베이스

잘 작동하지 않는 것:

  • Next.js (최소 512MB 필요)
  • 큰 Django 애플리케이션
  • Java Spring Boot 앱
  • 큰 데이터셋을 메모리에 로드하는 모든 것

메모리 제한에 도달하면 두 가지 옵션이 있습니다. 첫째, 코드를 최적화하세요—파일을 메모리에 로드하는 대신 스트리밍하고, 데이터베이스 쿼리에 페이지네이션을 사용하고, 종속성을 지연 로드하세요. 대부분의 "메모리 문제"는 비효율적인 코드일 뿐입니다.

두 번째 옵션: 512MB로 확장하세요. 이것은 무료 티어를 약간 초과하여 월 $2-3 정도 비용이 듭니다. 여전히 커피보다 저렴하고 훨씬 유용합니다.

그냥 작동하는 PostgreSQL

데이터베이스를 추가하는 것은 매우 간단합니다:

flyctl postgres create

프롬프트가 표시되면 "Development" 구성을 선택하세요. 이것은 256MB RAM과 1GB 스토리지의 PostgreSQL 인스턴스를 제공하며 작은 앱에 완벽합니다. 데이터베이스는 최소 지연 시간을 위해 앱과 같은 리전에서 실행됩니다.

앱에 연결하세요:

flyctl postgres attach <database-name>

이것은 자동으로 DATABASE_URL 환경 변수를 설정합니다. 앱은 즉시 연결할 수 있습니다:

const { Pool } = require('pg');
const pool = new Pool({
  connectionString: process.env.DATABASE_URL
});

// 그게 전부입니다. 데이터베이스가 있습니다.

저는 500개 이상의 게시물이 있는 블로그, 1000개 이상의 계정이 있는 사용자 시스템, 50k 이벤트를 추적하는 분석 대시보드를 무료 티어 데이터베이스에서 실행하고 있습니다. 다음 Twitter를 만들지 않는 한 1GB면 충분합니다.

시도하지 않고도 글로벌

하나의 명령으로 여러 리전에 배포하세요:

flyctl regions add lhr  # 런던
flyctl regions add nrt  # 도쿄
flyctl regions add syd  # 시드니

Fly.io는 자동으로 사용자를 가장 가까운 인스턴스로 라우팅합니다. 유럽 사용자는 런던을, 아시아 사용자는 도쿄를 방문하고 모든 것이 그냥 작동합니다. 구성 없음, CDN 설정 없음, 아무것도 없음.

3개의 무료 VM으로 각 리전에 하나씩 배치하여 진정한 글로벌 커버리지를 가질 수 있습니다. 또는 중복성을 위해 3개 모두 하나의 리전에 유지하세요—하나가 충돌하면 다른 것들이 계속 요청을 처리합니다.

제한 사항 (많지 않습니다)

제한 사항에 대해 솔직해지겠습니다. 5달러 크레딧은 월에서 월로 이월되지 않습니다. 사용하거나 잃습니다. 하지만 솔직히 3개의 작은 VM을 24/7 실행하면 전체 크레딧을 사용합니다.

커스텀 도메인 같은 특정 기능을 잠금 해제하고 한도를 초과할 경우 서비스 중단을 방지하려면 결국 신용카드를 추가해야 합니다. 하지만 여기서 중요한 점은—Fly.io는 청구하기 전에 이메일을 보냅니다. 테스트 서버를 끄는 것을 잊어서 갑자기 500달러 청구서가 나오는 일은 없습니다.

256MB RAM 제한은 실제입니다. 비효율적인 코드를 던지고 기적을 기대할 수 없습니다. 하지만 이 제약이 더 나은 코드를 작성하도록 강제하고, 그건 나쁜 일이 아닙니다.

Fly.io vs 다른 모든 것을 언제 사용할지

잠들지 않는 실제 서버를 원할 때 Fly.io를 사용하세요. API, 웹훅, 봇, 즉시 응답해야 하는 모든 것에 완벽합니다. Docker 지원은 모든 언어나 프레임워크를 실행할 수 있다는 의미입니다.

Next.js 사이트를 만들고 완벽한 개발자 경험을 원할 때 Vercel을 사용하세요. 그들의 프리뷰 배포는 타의 추종을 불허합니다.

50개 이상의 위치에서 콜드 스타트 없이 실행해야 하는 엣지 함수에 Cloudflare Workers를 사용하세요.

더 예쁜 UI를 원하고 처음부터 지불해도 괜찮다면 Railway를 사용하세요.

하지만 무료로 계속 실행되는 실제 앱을 온라인에 올리려면? Fly.io가 매번 이깁니다.

배포할 차례입니다

읽기를 멈추고 시도해보세요. 진지하게, 5분이면 됩니다:

  1. CLI 설치
  2. 간단한 앱 만들기 (또는 이미 있는 것 사용)
  3. flyctl launch 실행
  4. 앱이 라이브가 되는 것을 지켜보기

그게 전부입니다. 복잡한 구성 없음, yaml 지옥 없음, 청구 놀라움 없음. 그냥 실제 인프라에서 실행되는 코드입니다.

배포할 무언가 만들기

Fly.io에 첫 번째 앱을 배포할 준비가 되셨나요? 실습 튜토리얼로 실제 프로젝트를 빌드하는 것부터 시작하세요:

각 튜토리얼에는 Docker 구성과 배포 단계가 포함되어 있어 Fly.io의 무료 티어에서 개발에서 프로덕션으로 프로젝트를 쉽게 가져갈 수 있습니다.

이미 Flask 앱이 있으신가요? Flask 애플리케이션을 PostgreSQL로 컨테이너화하고 무중단 마이그레이션으로 Fly.io에 배포하는 단계별 지침은 **완전한 Docker 및 Fly.io 배포 튜토리얼**을 따르세요.


기술 세부사항

플랫폼: Fly.io 월별 크레딧: $5 (VM 3개 + 데이터베이스 커버) 배포: microVM으로서의 Docker 컨테이너 리전: 전 세계 30개 이상 VM당 RAM: 256MB (업그레이드 가능) 데이터베이스: 1GB 스토리지의 PostgreSQL 대역폭: 월 160GB 포함

참고: 초기 테스트 후 신용카드가 필요하지만 월 5달러 미만 사용량을 유지하면 청구되지 않습니다.

Fred

Fred

AUTHOR

Full-stack developer with 10+ years building production applications. I've deployed applications to every major cloud platform and lived to tell the tale.

Need a developer who gets it?

POC builds, vibe-coded fixes, and real engineering. Let's talk.

Hire Me →