
Platform as a Service (PaaS) is a cloud model where the provider runs everything below your application code: the operating system, runtime, deploy pipeline, scaling, and exposed URL. You bring code, the platform brings the rest. PaaS sits between Infrastructure as a Service (where you manage the OS) and Backend as a Service (where the provider also gives you a backend), and it's the right default for most web applications until something specific pushes you elsewhere.
This guide covers what PaaS actually means in 2026, the current provider landscape (which has changed substantially in the last few years), the real tradeoffs, and the direction PaaS itself is moving as infrastructure-from-code emerges as a fifth model.
A PaaS hides the operating system, the runtime, and the deployment plumbing. You push code (git push, a CLI command, or a CI hook), the platform builds it, runs it, and gives you a URL. Logs, metrics, autoscaling, TLS, and rollbacks are typically built in.
The simplest mental model: PaaS is "I want to run this app, I don't want to think about the box it runs on."
What's included varies. Most PaaS platforms in 2026 ship with:
What you typically don't get from a pure PaaS:
The PaaS market in 2026 is in a different shape than five years ago. Heroku, the original PaaS, has been hollowed out by Salesforce ownership and the end of its free tier; a generation of replacements has filled the space. Hyperscaler-native PaaS (App Engine, Beanstalk, App Service) still exists but feels dated. The interesting work is happening at the modern PaaS and edge-PaaS layer.
The model boundaries blur in 2026. Here's how PaaS compares to the things often confused with it.
| Model | What you control | What's hidden | When it fits |
|---|---|---|---|
| PaaS | App code, env vars | OS, runtime, scaling | Standard web services |
| Serverless / FaaS | Function code | Runtime, scaling, invocation | Event handlers, glue |
| BaaS | Frontend, business logic in client | Auth, database, storage, push | Mobile / SPA-first apps |
| Container-as-a-Service | Container image, networking | Host OS | Containerized apps with networking control |
| IFC | App code (infra inferred from it) | Provisioning, scaling, environments | Backends where code is the source of truth |
Serverless functions and PaaS are converging. Vercel and Cloudflare both run "PaaS" workloads as serverless functions under the hood. The user-visible distinction is mainly about per-request scaling and pricing.
Pros
Cons
PaaS is the right default when:
PaaS is the wrong fit when:
Evaluating a PaaS in 2026 comes down to:
Two pressures are reshaping PaaS in 2026.
The first is AI tooling. Cursor, Claude Code, and Copilot generate application code quickly, and the bottleneck for getting that code into production is no longer typing speed: it's the configuration sprawl around the application. PaaS hides some of that sprawl, but only the surface layer. Anything beyond a single service (databases, queues, scheduled jobs, secrets) usually still requires a separate dashboard or YAML file that the AI can't see.
The second is cost and control. As workloads grow, the gap between platform pricing and the underlying cloud cost becomes visible. Teams that were happy on PaaS at $200/month start asking questions at $20,000/month, especially when compliance also wants the workload in a specific cloud account.
Both pressures point in the same direction: a model where infrastructure is described in the same place as the application code, and the description provisions real cloud services in your own account. This is infrastructure from code (IFC), and it's the closest thing to a successor model emerging.
Encore is the open-source IFC framework for TypeScript and Go. It's positioned differently from a typical PaaS in a few ways that matter:
encore eject command. If you stop using Encore, your services migrate to plain AWS or GCP without a rewrite.import { api } from "encore.dev/api";
import { SQLDatabase } from "encore.dev/storage/sqldb";
// Encore provisions managed Postgres (RDS on AWS, Cloud SQL on GCP, Docker locally).
const db = new SQLDatabase("users", { migrations: "./migrations" });
export const get = api(
{ method: "GET", path: "/users/:id", expose: true },
async ({ id }: { id: number }) => {
return await db.queryRow`SELECT id, email FROM users WHERE id = ${id}`;
},
);
The same code runs locally with encore run (Postgres in Docker, infrastructure spun up automatically), in preview environments per pull request, and in production AWS or GCP. The framework has over 11,000 GitHub stars and is used in production at companies including Groupon.
This isn't a wholesale replacement for PaaS. PaaS still wins for static sites, frontend apps, and simple single-service backends. Where Encore tends to win is multi-service backends, teams that need workloads in their own cloud, and workflows that include AI-assisted code generation, since the infrastructure declarations are visible to the same tools writing the application code.
PaaS in 2026 is healthier than its critics claim and weaker than its boosters do. The modern PaaS layer (Vercel, Railway, Render, Fly.io) does what Heroku did, better, for most teams. The hyperscaler-native PaaS still exists but rarely wins new projects.
The model's limits show up at scale and at complexity. Once you have multiple services, want workloads in your own cloud, or have AI tools generating both application and infrastructure code, IFC frameworks start to make more sense than a traditional PaaS. Below that threshold, a modern PaaS remains the right default and the fastest path to production.
Deploy a TypeScript backend to your own AWS or GCP account in minutes.