Skip to content
yisusvii Blog
Go back

Fly.io: Deploy Apps Close to Your Users Worldwide

Suggest Changes

Most PaaS platforms deploy your app to one region and call it a day. Fly.io is different. It takes your Docker container, converts it into a lightweight Firecracker micro-VM, and runs it in any of 30+ regions worldwide — getting your app physically close to your users.

If latency matters to your product (and it almost always does), Fly.io deserves serious consideration.

Table of Contents

Open Table of Contents

What Is Fly.io?

Fly.io is a global application platform that runs full-stack apps and databases on Firecracker micro-VMs across a distributed network of bare-metal servers. Unlike traditional PaaS offerings that abstract away the machine entirely, Fly.io gives you a real (micro) VM with its own IP address, persistent volumes, and WireGuard-based private networking.

Official page: https://fly.io

Key Features

Getting Started — How to Install and Deploy

Fly.io is CLI-first — the flyctl tool is the primary interface.

Step 1: Install flyctl

# macOS
brew install flyctl

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

# Windows (PowerShell)
powershell -Command "irm https://fly.io/install.ps1 | iex"

Step 2: Sign Up and Authenticate

fly auth signup   # Opens browser for signup
# or
fly auth login    # If you already have an account

Step 3: Launch an App

# Navigate to your project directory
cd my-app

# Initialize a Fly app (auto-detects framework/Dockerfile)
fly launch

# This generates a fly.toml config and optionally:
# - Creates a Postgres cluster
# - Sets up a Redis instance
# - Configures health checks

Step 4: Deploy

fly deploy

That is it. Fly.io builds your Docker image remotely, pushes it to its registry, and starts micro-VMs in your selected regions.

fly.toml Configuration

app = "my-startup-api"
primary_region = "iad"

[build]
  dockerfile = "Dockerfile"

[env]
  NODE_ENV = "production"

[http_service]
  internal_port = 3000
  force_https = true
  auto_stop_machines = "stop"
  auto_start_machines = true
  min_machines_running = 1

[[vm]]
  size = "shared-cpu-1x"
  memory = "512mb"

Adoption Level (2025–2026)

Fly.io has carved out a unique niche in the platform market — it appeals to developers who care about latency, edge computing, and global distribution.

MetricValue (as of early 2026)
Regions35+ worldwide
Funding$120M+ raised (Series C)
Active appsHundreds of thousands
Notable usersSupabase (edge functions), Tigris Data, Stytch
GitHub Stars (flyctl)~5,000+

Why developers choose Fly.io:

Where Fly.io falls short:

Best Examples for Implementing

1. Global API with Regional Read Replicas

                     ┌──────────────┐
                     │  Fly Postgres │
                     │  Primary (iad)│
                     └──────┬───────┘
                            │ replication
              ┌─────────────┼─────────────┐
              │             │             │
     ┌────────▼──┐  ┌──────▼───┐  ┌──────▼───┐
     │ Read-only │  │ Read-only │  │ Read-only │
     │ (lhr)     │  │ (nrt)    │  │ (syd)    │
     └───────────┘  └──────────┘  └──────────┘
# Create a Postgres cluster with replicas
fly postgres create --name my-db --region iad
fly postgres create --name my-db-replica --region lhr --replica

Your app reads from the nearest replica and writes to the primary.

2. Edge-Rendered Web App (Remix / Next.js)

Fly.io is particularly popular with Remix apps because of its multi-region model:

fly launch --from https://github.com/remix-run/indie-stack

This deploys a full Remix app with SQLite (via LiteFS for distributed reads) or Postgres.

3. AI Inference Service with GPU

# Create a GPU-enabled machine
fly machine run my-inference-app \
  --vm-size performance-8x \
  --vm-gpu-kind a100-pcie-40gb \
  --region ord

Run LLM inference on A100 GPUs without managing CUDA drivers or Kubernetes.

4. Scale-to-Zero Microservices

# fly.toml
[http_service]
  auto_stop_machines = "stop"
  auto_start_machines = true
  min_machines_running = 0

Machines automatically stop when idle and restart on the next request (~300ms cold start). You only pay for active usage.

5. Multi-Region Phoenix/Elixir Cluster

Fly.io has first-class Elixir support — Phoenix apps can form Erlang clusters across regions:

fly launch --from https://github.com/fly-apps/hello_elixir
fly scale count 3 --region iad,lhr,nrt

Nodes discover each other via DNS and form a distributed cluster.

Cost Analysis

Fly.io uses a resource-based pricing model — you pay for VM size, memory, storage, and bandwidth.

ResourceFree AllowancePrice
Shared CPU VMsUp to 3 shared-cpu-1x VMs$1.94/month per VM (256 MB)
Dedicated CPU VMsFrom $31/month (1 vCPU, 2 GB)
MemoryIncluded with VM$0.015/GB/hour
Persistent Volume3 GB free$0.15/GB/month
Bandwidth100 GB/month outbound$0.02/GB after
Fly PostgresFree for single-node devRuns on VMs (same pricing)
GPU (A100 40GB)~$2.50/hour

Real-World Estimate for a Startup

A typical early-stage deployment:

Total: ~$8–15/month — one of the cheapest managed options available.

When Fly.io Gets Expensive

Fly.io vs. Railway vs. Render

FeatureFly.ioRailwayRender
Multi-region✅ Native❌ Single region❌ Single region
GPU support✅ A100, L40S
Managed Postgres⚠️ Self-managed on VMs✅ Fully managed✅ Fully managed
Auto-scaling✅ Scale-to-zero⚠️ Limited⚠️ Limited
Learning curveMediumLowLow
Best forGlobal apps, edgeFull-stack SaaSSimple web apps

Verdict

Fly.io is the right choice when latency and global distribution matter. It is more complex than Railway or Render, but it gives you capabilities that no other PaaS offers — true multi-region, micro-VMs, GPU access, and scale-to-zero. For startups building real-time apps, APIs with a global user base, or AI inference services, Fly.io is hard to beat.

TL;DR: Fly.io is the platform for developers who want global reach without the complexity of Kubernetes. If your users are worldwide and milliseconds matter, Fly.io is your best bet.


Follow my blog for more reviews of modern deployment platforms for startups.


Suggest Changes
Share this post on:

Previous Post
Northflank: The Full-Stack Cloud Platform for Modern Teams
Next Post
Render: The Modern Cloud Platform for Developers and Startups