<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Paas on ICE-ICE-BEAR-BLOG</title><link>https://ice-ice-bear.github.io/tags/paas/</link><description>Recent content in Paas on ICE-ICE-BEAR-BLOG</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Mon, 13 Apr 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://ice-ice-bear.github.io/tags/paas/index.xml" rel="self" type="application/rss+xml"/><item><title>Micro-PaaS Reality Check 2026 — Fly.io, Heroku, and Render</title><link>https://ice-ice-bear.github.io/posts/2026-04-13-micro-paas-comparison/</link><pubDate>Mon, 13 Apr 2026 00:00:00 +0900</pubDate><guid>https://ice-ice-bear.github.io/posts/2026-04-13-micro-paas-comparison/</guid><description>&lt;img src="https://ice-ice-bear.github.io/" alt="Featured image of post Micro-PaaS Reality Check 2026 — Fly.io, Heroku, and Render" /&gt;&lt;h2 id="overview"&gt;Overview
&lt;/h2&gt;&lt;p&gt;For the small CPU-bound side of an app — the API server, the worker queue, the Postgres database — is a micro-PaaS still cheaper than rolling EC2? In 2026, the answer is &amp;ldquo;almost always, until you cross $200/month.&amp;rdquo; This post compares Fly.io, Heroku, and Render, and gives a decision framework for when to walk away from PaaS entirely.&lt;/p&gt;
&lt;h2 id="the-three-platforms-at-a-glance"&gt;The Three Platforms at a Glance
&lt;/h2&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;graph TD
 A[App needs hosting] --&gt; B{Need global edge?}
 B --&gt;|Yes| C[Fly.io &amp;lt;br/&amp;gt; Firecracker microVMs]
 B --&gt;|No| D{Need managed Postgres &amp;lt;br/&amp;gt; + add-on ecosystem?}
 D --&gt;|Yes| E[Heroku &amp;lt;br/&amp;gt; classic PaaS]
 D --&gt;|No, want simplicity| F[Render &amp;lt;br/&amp;gt; modern Heroku alt]
 A --&gt; G[Heavy traffic &amp;lt;br/&amp;gt; or specialized infra?]
 G --&gt;|Yes| H[EC2 + Terraform]&lt;/pre&gt;&lt;h2 id="flyio"&gt;Fly.io
&lt;/h2&gt;&lt;p&gt;Fly runs your Docker images on Firecracker microVMs across &lt;strong&gt;35+ global regions&lt;/strong&gt;. Pricing is roughly &lt;code&gt;$0.0000022/sec&lt;/code&gt; per shared-cpu-1x VM (~&lt;code&gt;$1.94/mo&lt;/code&gt; if always-on for a 256MB instance), and you can scale to zero on certain plans. The killer feature is &lt;code&gt;fly.toml&lt;/code&gt; plus &lt;code&gt;flyctl deploy&lt;/code&gt; — git-push-style deploys without CI/CD pipelines.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-toml" data-lang="toml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c"&gt;# fly.toml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;my-api&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;primary_region&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;nrt&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;http_service&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;internal_port&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;force_https&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;auto_stop_machines&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;auto_start_machines&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="nx"&gt;min_machines_running&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Postgres is unmanaged-by-Fly (you run their image yourself); for a managed alternative they now point users to Supabase or Neon.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; geographically distributed apps, anyone who wants Firecracker isolation, projects where TCP/UDP (not just HTTP) matters.&lt;/p&gt;
&lt;h2 id="heroku"&gt;Heroku
&lt;/h2&gt;&lt;p&gt;The granddaddy of PaaS, now under Salesforce. The 2026 platform has two foundations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cedar&lt;/strong&gt; — the classic dyno (LXC-based, broad add-on compatibility)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fir&lt;/strong&gt; — Kubernetes-powered, more observability and finer control&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Tier&lt;/th&gt;
 &lt;th&gt;Price&lt;/th&gt;
 &lt;th&gt;Use case&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Eco dyno&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;$5/mo&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Hobby / staging&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Basic&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;$7/mo&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Small production apps&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Standard-1X&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;$25/mo&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;Real production&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Heroku Postgres essentials&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;$5/mo&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;10K rows&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Add-ons go through the Elements Marketplace where 1 enterprise credit = &lt;code&gt;$1&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The new bet is &lt;strong&gt;Heroku Managed Inference and Agents&lt;/strong&gt; — a curated set of LLMs (text-to-text, embedding, image generation) plus MCP server hosting on pay-as-you-go dynos. This is Heroku trying to be the &amp;ldquo;easy AI app deployment&amp;rdquo; platform. Whether it competes with Vercel AI SDK + Modal-style stacks is an open question, but Heroku has the deployment ergonomics to make it credible.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; apps that need a real managed Postgres, teams with low ops budget, anyone who wants &lt;code&gt;git push heroku main&lt;/code&gt; with zero config.&lt;/p&gt;
&lt;h2 id="render"&gt;Render
&lt;/h2&gt;&lt;p&gt;The Heroku alternative everyone migrated to during the free-tier shutdown of 2022. Render advertises Heroku migration credits up to &lt;code&gt;$10K&lt;/code&gt;. Pricing is competitive:&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Service&lt;/th&gt;
 &lt;th&gt;Price&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Static sites&lt;/td&gt;
 &lt;td&gt;Free tier&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Web services&lt;/td&gt;
 &lt;td&gt;From &lt;code&gt;$7/mo&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Managed Postgres&lt;/td&gt;
 &lt;td&gt;From &lt;code&gt;$7/mo&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Background workers&lt;/td&gt;
 &lt;td&gt;From &lt;code&gt;$7/mo&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cron jobs&lt;/td&gt;
 &lt;td&gt;Free&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Native support for cron jobs, background workers, and preview environments. Render Workflows is their newer orchestration layer for multi-service deploys.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Best for:&lt;/strong&gt; former Heroku users, teams who want preview environments out of the box, projects that need Docker support without the Fly.io geo-distribution complexity.&lt;/p&gt;
&lt;h2 id="side-by-side"&gt;Side-by-Side
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Capability&lt;/th&gt;
 &lt;th&gt;Fly.io&lt;/th&gt;
 &lt;th&gt;Heroku&lt;/th&gt;
 &lt;th&gt;Render&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Global edge&lt;/td&gt;
 &lt;td&gt;✅ 35+ regions&lt;/td&gt;
 &lt;td&gt;❌ US/EU only&lt;/td&gt;
 &lt;td&gt;❌ US/EU only&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Managed Postgres&lt;/td&gt;
 &lt;td&gt;❌ (Supabase/Neon)&lt;/td&gt;
 &lt;td&gt;✅ first-party&lt;/td&gt;
 &lt;td&gt;✅ first-party&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Scale-to-zero&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;td&gt;❌ (Eco can sleep)&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Docker native&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;td&gt;✅ (Fir)&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Preview envs&lt;/td&gt;
 &lt;td&gt;⚠️ via flyctl&lt;/td&gt;
 &lt;td&gt;✅ Pipelines&lt;/td&gt;
 &lt;td&gt;✅ Workflows&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cron / workers&lt;/td&gt;
 &lt;td&gt;⚠️ separate machines&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;td&gt;✅&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;AI/LLM hosting&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;td&gt;✅ Managed Inference&lt;/td&gt;
 &lt;td&gt;❌&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Cheapest always-on tier&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;~$2/mo&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;$5/mo&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;$7/mo&lt;/code&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="decision-framework"&gt;Decision Framework
&lt;/h2&gt;&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart LR
 A[Monthly bill projection?] --&gt;|&lt;$25| B[Take any PaaS &amp;lt;br/&amp;gt; happily]
 A --&gt;|$25-$200| C[Pick by feature fit]
 A --&gt;|&gt;$200| D[Consider EC2 + Terraform &amp;lt;br/&amp;gt; if team has ops bandwidth]
 C --&gt; E[Postgres-heavy: Heroku/Render]
 C --&gt; F[Global users: Fly.io]
 C --&gt; G[Heroku migration: Render]&lt;/pre&gt;&lt;p&gt;A useful heuristic: &lt;strong&gt;if your app fits in &lt;code&gt;$25/mo&lt;/code&gt;, take the managed PaaS happily.&lt;/strong&gt; The hour you save not configuring Terraform and Nginx is worth more than the platform markup. Once you cross &lt;code&gt;$200/mo&lt;/code&gt; of PaaS billing, EC2 + a thin Terraform module starts being the cheaper path — but only if someone on the team enjoys ops.&lt;/p&gt;
&lt;h2 id="what-about-vercel-and-railway"&gt;What About Vercel and Railway?
&lt;/h2&gt;&lt;p&gt;Worth naming them as adjacent options:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Vercel&lt;/strong&gt; dominates the Next.js / frontend deployment niche. For an SSR React app, it&amp;rsquo;s the default. For a Python API or Go service, you&amp;rsquo;re better off elsewhere.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Railway&lt;/strong&gt; is the slickest DX of the bunch, but pricing has shifted upward post-pivot; it&amp;rsquo;s no longer the &amp;ldquo;obvious cheap&amp;rdquo; option it was in 2023.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="insights"&gt;Insights
&lt;/h2&gt;&lt;p&gt;The cloud-cost narrative of 2024-2025 (&amp;ldquo;everyone&amp;rsquo;s moving back to bare metal!&amp;rdquo;) is mostly noise for small teams. &lt;strong&gt;At small scale, the markup of managed platforms is lower than the engineering cost of replacing them.&lt;/strong&gt; Fly.io continues to be the developer-experience benchmark, Heroku is genuinely back from the dead with Fir + Managed Inference, and Render is the boring-correct choice for most CRUD apps. The right framing isn&amp;rsquo;t &amp;ldquo;PaaS vs EC2&amp;rdquo; — it&amp;rsquo;s &amp;ldquo;PaaS until your bill or your scale forces a migration.&amp;rdquo; For most small apps that day never comes.&lt;/p&gt;
&lt;h2 id="quick-links"&gt;Quick Links
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://fly.io/docs/about/pricing/" target="_blank" rel="noopener"
 &gt;Fly.io Pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.heroku.com/pricing" target="_blank" rel="noopener"
 &gt;Heroku Pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://render.com/pricing" target="_blank" rel="noopener"
 &gt;Render Pricing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>