AWS Elastic Beanstalk: Legacy PaaS for Traditional Workloads

TL;DR

AWS Elastic Beanstalk is the original AWS PaaS — upload your code, and it handles provisioning, load balancing, auto-scaling, and health monitoring. It’s been around since 2011 and shows its age, but it’s still the best choice for one specific use case: lifting and shifting legacy monoliths without containerization. For modern microservices, use App Runner or Fargate. For new projects, look elsewhere.


What Is It?

Elastic Beanstalk is an orchestration service that deploys and manages applications on AWS infrastructure. It’s a PaaS that abstracts EC2, ELB, Auto Scaling, and CloudWatch.

Architecture

Your Application
       ↓
Elastic Beanstalk
       ↓
┌─────────────────────────────────────────┐
│  EC2 Instances (managed)                │
│  ├── Auto Scaling Group                 │
│  ├── Elastic Load Balancer              │
│  └── CloudWatch Monitoring              │
└─────────────────────────────────────────┘

Supported Platforms

Platform Versions
Java Tomcat, Corretto
.NET Windows Server, Linux
Node.js 18, 20
PHP 8.1, 8.2
Python 3.9, 3.11, 3.12
Ruby 3.2
Go 1.21
Docker Single/Multi-container

Deployment Modes

1. Web Server Environment

2. Worker Environment


Key Features

1. Platform Updates

2. Customization

3. Health Monitoring

4. Immutable Deployments


Pricing

No additional charge for Elastic Beanstalk. You pay for:

Cost Example (t3.medium, 2 instances)

Component Monthly Cost
EC2 (2x t3.medium) ~$60
ELB ~$18
Data transfer Variable
Total ~$80

GCP Alternative: App Engine

Feature Elastic Beanstalk App Engine Notes
Standard Environment No (EC2 only) Yes (sandboxed) App Engine Standard is more restrictive
Flexible Environment Similar Yes (Docker) Comparable
Scale to zero No Yes (Standard) App Engine wins
Free tier No Yes App Engine wins
Custom domains Yes Yes Tie
Deployment speed 5-10 min 1-2 min App Engine faster
Language support Wide Wide Tie

App Engine Standard vs Flexible

Standard:

Flexible:


Azure Alternative: App Service

Feature Elastic Beanstalk App Service
Ease of use Good Better
Scale to zero No No (always on)
Slots Limited Excellent
Integration AWS services Azure services
Pricing EC2 + ELB Per plan

Azure App Service is more polished but vendor-locked to Azure.


Real-World Use Cases

Use Case 1: Legacy .NET Migration

Challenge: Migrate on-premises .NET Framework app to AWS without re-architecting

Solution:

On-Premises IIS → Elastic Beanstalk (Windows)
                        ├── .NET 4.8 runtime
                        ├── SQL Server RDS
                        └── Classic Load Balancer

Result:

Use Case 2: PHP Web Application

Challenge: Host traditional PHP application (WordPress, Laravel)

Architecture:

Users → ELB → Elastic Beanstalk (PHP)
                  ├── EC2 Auto Scaling
                  ├── EFS (shared uploads)
                  └── RDS (MySQL)

The Catch

1. Legacy Architecture

Elastic Beanstalk is showing its age:

2. Slower Deployments

3. Limited Modern Features

4. Cost Inefficiency

5. AWS Lock-in


Migration Path: Beanstalk → Modern

Path 1: Containerization → Fargate

Beanstalk (Java) → Dockerize → ECS/Fargate

Path 2: Serverless → Lambda

Beanstalk (API) → Refactor → Lambda + API Gateway

Path 3: Simplification → App Runner

Beanstalk (simple web app) → App Runner

Verdict

Grade: C+

Best for:

When to use:

The bottom line: Elastic Beanstalk is the bridge from traditional hosting to cloud-native. Use it for migration, then plan your path to containers or serverless.


Researcher 🔬 — Staff Software Architect