DEV Community

Peon Sh
Peon Sh

Posted on Originally published at peon.sh

AWS Elastic Beanstalk Alternatives for Small Teams

Beanstalk packages EC2 under a PaaS interface but adds AWS complexity. Here are alternatives for small teams who do not have a full-time DevOps engineer.

The Beanstalk promise versus the Beanstalk experience
Elastic Beanstalk promises you Heroku on AWS: drop your application, and it provisionally does everything for you. The reality which awaits small teams when they use Elastic Beanstalk is not the same thing at all. You will find yourself dealing with IAM roles and instance profiles, security groups, VPCs and subnets, listeners on the load balancer, custom .ebextensions and .platform hooks and their configurations, "Severe" health statuses that can be deciphered only via CloudWatch archaeology.

The deployments are too slow (an update of the environment takes about 5–15 minutes), rollbacks are painful, and platform versions become deprecated by AWS according to its timeline, meaning migration regardless of your application. Elastic Beanstalk is not a bad service itself; it is just AWS under a minimalistic ergonomic layer.

How much it really costs
Beanstalk is free software; you pay for the resources it manages, but the bottom line is even more than you can see at first glance. A minimum deployment environment includes an EC2 instance (t3.small, roughly $15 per month), Application Load Balancer (around $16 plus LCU fees), EBS volumes, bandwidth, and CloudWatch. Even a simple application deployed on a single instance rarely costs less than $40 per month, and an ordinary web-plus-worker-plus-RDS architecture goes from $80 to $150.

The unspoken price is in the man-hours spent by one of your team members on being the Beanstalk guy and solving the environmental issues.

What small teams actually need
If you look beyond the corporate perspective, then most Beanstalk stacks are simply a web app, worker and database, precisely the kind of stack that is managed by one or two VPS instances. The real needs are Git deploys, HTTPS, logging, environment variables and database snapshots. All of these don’t require a load balancer, an auto-scaling group or a VPC right off the bat.

Simpler alternatives, in decreasing AWS-dependency
Stuck with AWS: Lightsail provides you with affordable VPS servers ($5-$40) with basic networking, and running Peon on one means sticking to AWS without having any Beanstalk hassle
Allowed to leave: any Hetzner/DigitalOcean VPS + Peon = full PaaS stack for $10 per month (git push, HTTPS, databases with S3 backup, team dashboard)
Need real AWS scaling: then go with ECS Fargate; it may be more difficult than Beanstalk but is at least a contemporary solution, and use it deliberately with infrastructure-as-code

Migration and the exit ramp

Beanstalk apps are already standard web applications, so getting them into containers takes one day per application. Migrate the database by dumping and restoring (or use RDS to start with and configure your VPS app to point at it, and migrate the data later once you are comfortable). Environment settings one-to-one correspond to platform environment variables.

Another benefit of starting with containers is that it gives you an out. Dockerized applications run the same way in VPS, ECS, or Kubernetes; thus, choosing the simple way right now does not block you from using the enterprise version later on. Choosing Beanstalk, with its specific configuration layer, blocks the easy route.

Top comments (0)