Oct 23, 20269 min read

Elastic Beanstalk Alternatives in 2026

Options for teams that want a simple deploy workflow on AWS without managing Beanstalk environments.

Elastic Beanstalk is the AWS service many teams used to get their first app running without managing EC2 by hand, and for a single web app it still does that job. It gets harder when a second service shows up, or a worker that reads from SQS, because each one needs its own environment and its own IAM setup, and the only real way to test an .ebextensions change is to deploy it and watch the logs. This article covers what teams usually move to from there, mostly ECS Express Mode, Render, Ravion (formerly Flightcontrol) and Encore.

Reasons teams look for Elastic Beanstalk alternatives:

  • Each Standard Mode environment is one application, so several services that scale independently mean several environments to configure, deploy and keep in sync.
  • Queues, buckets and caches live outside Beanstalk, so they are set up by hand or in CloudFormation or Terraform, with IAM wired up separately.
  • Custom configuration lives in .ebextensions and platform hooks, which are hard to test before a deploy.
  • There is no local equivalent of a Beanstalk environment, so developers approximate it with Docker Compose.
  • In 2026 App Runner closed to new customers and the Copilot CLI reached end of support, which has many teams rethinking what they standardize on for AWS.

Elastic Beanstalk alternatives at a glance

AlternativeApproachBest fit
EncoreServices and infrastructure declared in application code, run locally and provisioned in your AWS or GCP accountTeams with several services, queues, and cron jobs that want them in their own AWS account without writing Terraform
Amazon ECS Express ModeAWS-native container deploys: one call creates a Fargate service, ALB, and auto scalingSingle containerized web apps and APIs that should stay fully AWS-native
Ravion (formerly Flightcontrol)PaaS dashboard and config file that deploys into your AWS accountTeams that want a Heroku-style dashboard on top of their own AWS account
AWS LambdaFunctions triggered by HTTP, queues, and events, billed per invocationEvent-driven or spiky workloads that suit short-lived functions
RenderManaged platform for web services, workers, cron jobs, and PostgresTeams willing to run outside their AWS account for a simpler managed workflow
Compare features across all five alternatives
CapabilityEncoreECS Express ModeRavionAWS LambdaRender
Where it runsYour AWS or GCP account (ECS Fargate or EKS on AWS)Your AWS account (ECS on Fargate)Your AWS account (ECS on Fargate or EC2, Lambda)Your AWS accountRender's infrastructure
Deploy inputApplication code, built by EncoreContainer imageGit repo or image, plus flightcontrol.json or dashboard configFunction code or container imageGit repo or image, plus Blueprint or dashboard config
Multiple services, scaled independentlyYeseach service deploys separatelyOne Express service per app; more via ECSYesPer functionYes
Queues / Pub/SubDeclared in code; SNS/SQS provisionedNot included; add SQS yourselfNot built in; configure SQS in your accountNative SQS/SNS/EventBridge triggersNo managed broker; use Render Key Value or an external service
DatabasesDeclared in code; RDS provisioned, or import existingNot includedRDSNot includedManaged Postgres
Cron jobsDeclared in codeNot included; use EventBridge SchedulerScheduler service typeEventBridge SchedulerCron jobs
Local developmentencore run starts services plus local Postgres, Pub/Sub, buckets, and cachesRun the container yourselfRun the app yourselfSAM CLI or emulatorsRun the app yourself
IAMLeast-privilege role per service, generated from codeTask execution and infrastructure roles you provideManaged by RavionExecution role per functionNot applicable
Billing modelEncore Cloud plan, with AWS billing your account for resourcesAWS bills for the resources Express Mode createsRavion plan, with AWS billing your account for resourcesPer request and durationRender plan and usage

Encore: services, queues and databases from code, in your AWS account

Encore

Encore combines the application code and the AWS setup that Beanstalk keeps apart, because you define the services, the Postgres database and the Pub/Sub topic in your TypeScript or Go code, encore run starts them locally (Postgres runs in Docker), and a deploy creates the same resources in your own AWS account. You can also start with just the new worker on Encore and leave the Beanstalk app where it is.

Application code passes through Encore and infrastructure guardrails to resources provisioned in your own AWS or GCP account.
Encore provisions the infrastructure your application needs in your own AWS or GCP account.
import { api } from "encore.dev/api"; import { SQLDatabase } from "encore.dev/storage/sqldb"; import { Topic, Subscription } from "encore.dev/pubsub"; const db = new SQLDatabase("orders", { migrations: "./migrations" }); export const orderPlaced = new Topic<{ orderId: number }>("order-placed", { deliveryGuarantee: "at-least-once", }); export const place = api({ method: "POST", path: "/orders", expose: true }, async (req: { item: string }): Promise<{ id: number }> => { const row = await db.queryRow<{ id: number }>` INSERT INTO orders (item) VALUES (${req.item}) RETURNING id`; await orderPlaced.publish({ orderId: row!.id }); return { id: row!.id }; }); // receipts/receipts.ts, a separate service that deploys and scales on its own. new Subscription(orderPlaced, "send-receipt", { handler: async (event) => { /* send the receipt */ }, });
An API, a database and a queue consumer, which run locally with encore run and become ECS services, RDS and SNS/SQS on AWS.

Key features

Good to know

Encore is not a drop-in host for an existing Beanstalk bundle, because APIs and infrastructure go through Encore's SDKs for TypeScript, Go, Python and Rust, so moving is a code change. Most teams start with one new service or worker while the rest stays on Beanstalk.

See how Encore provisions AWS infrastructure.

Get started
brew install encoredev/tap/encore &&
encore app create
Copy

Run in your terminal to get started locally.

Amazon ECS Express Mode: AWS's own simplified container deploys

Amazon ECS Express Mode

ECS Express Mode is the path AWS recommends for teams leaving App Runner, and it fits Beanstalk users who are moving to containers, because you give it a container image and two IAM roles and ECS creates a Fargate service, an Application Load Balancer with TLS, auto scaling and networking in your account.

~/app
$ aws ecs create-express-gateway-service \ --primary-container "image"="123456789012.dkr.ecr.us-east-1.amazonaws.com/api:latest" \ --execution-role-arn arn:aws:iam::123456789012:role/ecsTaskExecutionRole \ --infrastructure-role-arn arn:aws:iam::123456789012:role/ecsInfrastructureRoleForExpressServices
One call creates the ECS service, the load balancer and the scaling policy.

Key features

  • Express Mode has no extra charge, and you pay for Fargate, the ALB and CloudWatch.
  • The resources it creates stay visible and editable as regular ECS resources.
  • Services can share an ALB, and canary deployments are supported.

Good to know

Express Mode covers the compute and the load balancer, so databases, queues, buckets and cron schedules are still separate AWS resources that you create and connect, usually with Terraform or CDK, and local development is up to you. It only takes container images, so an app on a Beanstalk source-code platform needs a Dockerfile first.

Try Amazon ECS →

Ravion (formerly Flightcontrol): a PaaS dashboard on your AWS account

Ravion

Ravion, formerly Flightcontrol, connects to your AWS account and git repository and deploys web servers, workers, schedulers, Lambda functions, static sites, RDS databases and Redis from a dashboard or a flightcontrol.json file.

Key features

  • Services run on ECS with Fargate or EC2, behind load balancers and CloudFront.
  • It provisions RDS (Postgres, MySQL or MariaDB) and ElastiCache for you.
  • Preview environments are included on the Business plan.

Good to know

Ravion suits teams that want a Heroku-style experience in their own AWS account. Pricing is a per-plan fee with a per-service charge beyond the included count, on top of AWS costs, and there is no managed Pub/Sub, so AWS services it does not support are configured in your account and passed in as config. Local development is not part of the product.

AWS Lambda: functions instead of servers

AWS Lambda

AWS Lambda runs functions in response to HTTP requests through function URLs or API Gateway, as well as SQS messages, S3 events and EventBridge schedules, with per-request billing and no instances to manage.

import json def handler(event, context): for record in event["Records"]: # SQS batch order = json.loads(record["body"]) send_receipt(order["order_id"])
A Lambda function consuming an SQS queue, where the queue, the trigger and the IAM role are defined separately.

Key features

  • Functions can be triggered natively from SQS, SNS, S3, DynamoDB Streams and EventBridge.
  • It scales per request and bills per use.
  • Code is deployed as a container image or a zip file.

Good to know

Lambda fits event-driven and spiky workloads, but a long-running API from Beanstalk usually needs reshaping to deal with cold starts, the 15-minute maximum execution time and connection pooling to RDS. Each function, trigger and role is a separate resource to define, so most teams use SAM, CDK or Terraform alongside it.

Try AWS Lambda →

Render: a managed platform outside AWS

Render

Render runs web services, background workers, cron jobs, managed Postgres and Redis-compatible Key Value instances, with git-based deploys and Blueprint files that describe each environment.

Key features

  • It runs web services, private services, workers and cron jobs.
  • Postgres and Key Value are managed for you.
  • Services in the same region share a private network, and Blueprints can create preview environments.

Good to know

Render is simpler than Beanstalk for small teams, but it runs on Render's infrastructure rather than in your AWS account, so an app that depends on RDS, S3, SQS or IAM-scoped access to other AWS services either reaches them over the public internet with long-lived credentials or keeps part of the system on AWS. Render has no managed message broker.

How to choose

  • Encore if you have several services, queues and cron jobs and want them defined in code, running locally and provisioned in your own AWS account.
  • ECS Express Mode for a single containerized app that should stay fully AWS-native, with the rest of the infrastructure managed separately.
  • Ravion for a dashboard-driven PaaS on top of your AWS account.
  • AWS Lambda for event-driven or spiky workloads that fit short-lived functions.
  • Render if leaving your AWS account is acceptable in exchange for a simpler managed platform.

Moving off Beanstalk does not have to happen in one step, because a new service or queue worker can run on Encore in the same AWS account while the existing Beanstalk app keeps running until there is a reason to move it. The quickstart walks through a first service.

Frequently asked questions

What is the best alternative to Elastic Beanstalk?

Encore if you want services, databases, Pub/Sub, and cron jobs defined in code and provisioned in your own AWS account, Amazon ECS Express Mode for AWS's own simplified container deploys, Ravion (formerly Flightcontrol) for a PaaS dashboard on top of your AWS account, AWS Lambda for event-driven or spiky workloads, and Render if leaving AWS for a managed platform is acceptable.

Is Elastic Beanstalk deprecated?

No. Elastic Beanstalk is still supported and added Cluster Mode in September 2026, which runs multiple applications on shared EKS-based infrastructure. AWS App Runner, by contrast, closed to new customers on April 30, 2026, and the AWS Copilot CLI reached end of support on June 12, 2026.

What replaced AWS App Runner?

AWS recommends Amazon ECS Express Mode for new container deployments. You provide a container image and two IAM roles, and ECS provisions a Fargate service, an Application Load Balancer, auto scaling, and networking in your account.

Elastic Beanstalk vs ECS: which should I use?

Elastic Beanstalk manages a whole environment per application (in Standard Mode) and supports source-code platforms like Node.js and Python. ECS runs containers and gives you direct control over services, task definitions, and load balancers. For new container workloads, ECS Express Mode gives you a Beanstalk-like starting point on ECS.

Can I run microservices and scale them independently on Elastic Beanstalk?

In Standard Mode each Beanstalk environment is one application with its own instances and load balancer, so independently scaled services usually mean one environment per service. Cluster Mode runs multiple applications on shared infrastructure. Service-to-service calls, queues between services, and shared databases still have to be wired up separately.

Does Encore deploy to my own AWS account?

Yes. Encore provisions ECS Fargate or EKS, RDS, SNS/SQS, S3, ElastiCache, and Secrets Manager in your AWS account, with a separately scoped IAM role per service. Existing RDS or Aurora databases, S3 buckets, and SNS topics can also be imported.

Deploy to your cloud on AWS and Google Cloud
without managing infrastructure

Encore lets developers and agents define application infrastructure directly in code, then automatically provisions it from local development to production in your AWS or GCP account.

~/orders — claude
Claude Code
Claude Code v2.1.180Opus 5.5~/orders