PaaS Solutions: AWS Elastic Beanstalk vs. Red Hat OpenShift
Two Platform-as-a-Service (PaaS) solutions will be compared: AWS Elastic Beanstalk and Red Hat OpenShift. The original comparison list made also has Heroku and Google App Engine. But due to Heroku’s and GAE’s limitations and cost optimization, I narrowed PaaS solutions to AWS Elastic Beanstalk and Red Hat OpenShift. Why do we use the PaaS solution? We use PaaS in the cloud to reduce the costs and increase the speed of development and deployment. PaaS also allows the developers to quickly develop, host, and scale applications in a cloud environment so the developers can focus on applications’ rapid development with faster and more frequent delivery of functionality. Let’s take a look at each solution.
AWS Elastic Beanstalk
If you’ve just started your applications or you are using AWS for your system, then AWS Elastic Beanstalk will be a straightforward solution. For example, you can simply upload your deployable code (e.g., WAR file), and AWS Elastic Beanstalk does the rest. AWS provides the plug-in Toolkit for Visual Studio and Eclipse. This means that you can deploy your application to AWS Elastic Beanstalk and manage it without leaving your IDE. With other AWS resources, Elastic Beanstalk can automate management tasks; for instance, it can use AWS CloudWatch to monitor the system’s performance, perform health checks, protect your environment through AWS shared security responsibility, receive notifications on applications’ changes with AWS SNS, etc.
What is AWS Elastic Beanstalk?
AWS Elastic Beanstalk is an easy-to-use service for developers to quickly deploy and manage applications in the AWS Cloud. Developers simply upload their application, and Elastic Beanstalk automatically handles the deployment details of capacity provisioning, load balancing, auto-scaling, and application health monitoring. Here is Elastic Beanstalk’s workflow:
Here is an example of Elastic Beanstalk worker environments:
Supported Languages and Stacks
AWS Elastic Beanstalk supports the following languages and development stacks:
- Apache Tomcat for Java applications
- Apache HTTP Server for PHP applications
- Apache HTTP Server for Python applications
- Nginx or Apache HTTP Server for Node.js applications
- Passenger or Puma for Ruby applications
- Microsoft IIS (e.g. 7.5, 8.0, and 8.5 versions) for .NET applications
- Java SE
- Docker (e.g. single container, multi-container, preconfigured docker) web applications
Please check this list of AWS’s supported platforms to learn the current list of supported language and development stacks.
There is no additional charge for Elastic Beanstalk—you only pay for the AWS resources needed to store (e.g. AWS S3, AWS RDS etc.) and run (e.g. AWS EC2, AWS EBS etc.) your applications. You can sign up a free tier AWS account to try Elastic Beanstalk.
Red Hat OpenShift
Red Hat’s OpenShift is another PaaS solution with an open source core. AWS Elastic Beanstalk only supports public cloud deployment; in contrast, OpenShift supports any infrastructure, public or private regardless of your applications’ architecture. Furthermore, you can deploy and support OpenShift anywhere where Red Hat Enterprise Linux is also deployed and supported. This includes Amazon Web Services, Azure, Google Cloud Platform, VMware, and more. OpenShift also provides IDE integration with Eclipse, JBoss Developer Studio, and Visual Studio meaning that developers can stay entirely within the IDE that they are comfortable with when working with OpenShift.
What is OpenShift?
OpenShift is an open source container application platform by Red Hat based on Docker containers and the Kubernetes container cluster manager for enterprise application development and deployment.
Supported Container Images
OpenShift provides a wide range of languages, databases, and services, all deployed in applications through container images. Container images can be web frameworks, databases, monitoring services, or connectors to external backends. For example:
- Application images: Java, Node.js, .NET, Ruby, Python, PHP and more
- Quickstart application templates: Apache HTTP Server, Apache Tomcat, Django, Jenkins, Ruby on Rails and more
- Database images: MariaDB, MySQL, PostgreSQL, MongoDB, Redis, and SQLite
- Red Hat JBoss Middleware images
- Container catalog, docker hub and more
Please check Red Hat’s website to learn the current list of supported container images.
You can try OpenShift Online Starter for free with one project in the public cloud. OpenShift Online Pro starts at fifty dollars per month per region with ten projects in the public cloud. The base package on OpenShift Enterprise is forty-eight thousand dollars per year. Please contact Red Hat’s sales for pricing on OpenShift Enterprise.
To summarize, the common features of the two solutions include:
- Scaling: AWS Elastic Beanstalk and OpenShift support vertical, horizontal, and auto scaling
- Target markets: AWS Elastic Beanstalk and OpenShift target startup, small/medium business, and enterprise
- Learning curve: Both will take some time to learn compared to Docker or Heroku
The differences between them:
- Cloud environments: OpenShift supports any infrastructure whereas AWS Elastic Beanstalk supports public cloud
- Enterprise levels: OpenShift provides more features than AWS Elastic Beanstalk such as allowing you to build your own private cloud, utilize JBoss Middleware, and leverage the extensive Red Hat ecosystem
- Pricing: AWS Elastic Beanstalk itself is free. OpenShift Enterprise base package is forty-eight thousand dollars per year
- Regions: AWS Elastic Beanstalk supports more regions than OpenShift Online