AWS Elastic Beanstalk is an orchestration service offered by Amazon Web Services for deploying applications which orchestrates various AWS services, including EC2, S3, Simple Notification Service, CloudWatch, autoscaling, and Elastic Load Balancers.
- AWS Elastic Beanstalk is an easy-to-use service for deploying and scaling web applications and services developed with Java, . NET, PHP, Node. js, Python, Ruby, Go, and Docker on familiar servers such as Apache, Nginx, Passenger, and IIS.
- The name “Elastic beanstalk” is a reference to the beanstalk that grew all the way up to the clouds in the fairy tale Jack and the Beanstalk.
- AWS Elastic Beanstalk is a compute service which makes it easier for the developers to quickly deploy and manage applications which you upload to the AWS cloud. Developers simply upload their application to the AWS cloud, and then let the
- AWS Beanstalk provision and handle the configuration for you. Your application will be provided with capacity provisioning, load balancing, auto-scaling, and health monitoring.
- There is no additional charge for Elastic Beanstalk – you pay only for the AWS resources needed to store and run your applications.
Amazon Elastic Beanstalk Features:
1. Wide Selection of Application Platforms
AWS Elastic Beanstalk supports web applications written in many popular languages and frameworks. It requires no or minimal code changes to go from development machine to the cloud. You can choose from variety of application platforms such as Java, .NET, Node.js, PHP, Ruby, Python, Go, and Docker to deploy your web applications.
2. Variety of Application Deployment Options
AWS Elastic Beanstalk allows you to deploy your code through the AWS Management Console, Elastic Beanstalk Command Line Interface, Visual Studio, and Eclipse. You can pick from multiple deployment policies – all at once, rolling, rolling with an additional batch, immutable, and blue/green.
AWS Elastic Beanstalk provides a unified user interface to monitor and manage the health of your applications.
Application Health: Elastic Beanstalk collects 40+ key metrics and attributes to determine the health of your application. The Elastic Beanstalk Health Dashboard allows you to visualize overall application health and customize application health checks, health permissions, and health reporting in one unified interface.
Monitoring, Logging, and Tracing: Elastic Beanstalk is integrated with Amazon CloudWatch and AWS X-Ray. You can leverage monitoring dashboard to view key performance metrics such as latency, CPU utilization, and response codes. You can also set up CloudWatch alarms to get notified when metrics exceed your chosen thresholds
4. Management and Updates:
You can choose to have AWS Elastic Beanstalk automatically update to the latest version of your Elastic Beanstalk environment using Managed Platform Updates.
AWS Elastic Beanstalk meets the criteria for ISO, PCI, SOC 1, SOC 2, and SOC 3 compliance along with the criteria for HIPAA eligibility. This means applications running on Elastic Beanstalk can process regulated financial data or protected health information (PHI).
AWS Elastic Beanstalk Benefits:
Fast and simple to begin:
Elastic Beanstalk is the fastest and simplest way to deploy your application on AWS. You simply use the AWS Management Console, a Git repository, or an integrated development environment (IDE) such as Eclipse or Visual Studio to upload your application, and Elastic Beanstalk automatically handles the deployment details of capacity provisioning, load balancing, auto-scaling, and application health monitoring
Elastic Beanstalk provisions and operates the infrastructure and manages the application stack (platform) for you, so you don’t have to spend the time or develop the expertise. It will also keep the underlying platform running your application up-to-date with the latest patches and updates. Instead, you can focus on writing code rather than spending time managing and configuring servers, databases, load balancers, firewalls, and networks.
Impossible to outgrow:
Elastic Beanstalk automatically scales your application up and down based on your application’s specific need using easily adjustable Auto Scaling settings.
Complete resource control:
You have the freedom to select the AWS resources, such as Amazon EC2 instance type, that are optimal for your application. Additionally, Elastic Beanstalk lets you “open the hood” and retain full control over the AWS resources powering your application.
Supports Multi-Tenant Architecture:
AWS Elastic Beanstalk makes it possible for users to share their applications across different devices with high scalability and security. It provides a detailed report of application usage and user profiles.
AWS Elastic Beanstalk Concepts:
In Amazon Elastic Beanstalk, you upload your application as a zip file with all the contents in it. An Elastic Beanstalk application is logically considered an equivalent to a file containing the source code. The file is the application in the Elastic Beanstalk environment.
- Application Version:
Application Version refers to the web application which you have uploaded and will upload it’s next upgraded version. For example, you upload your application to AWS Beanstalk at first and then you have updated the source code of your application. Instead of overwriting your previous version of the application, you can give it a new version name which you could use to compare them both.
Collection of AWS resources is an environment and an environment can only run one application version at a time. You may run multiple applications in multiple environments at the same time. Whenever an environment is created, Amazon Elastic Beanstalk automatically provisions required EC2 instances and S3 buckets. Environment refers to the current version of the application. When you launch an Environment for your application, Beanstalk asks you to choose among two different Environment Tiers i.e, Web Server Environment or Worker Environment.
- Web Server Environment:
Application version which is installed on the Web Server Environment handles HTTP requests from the client. A worker is a separate background process that assists Web Server Tier by handling resource-intensive or time-intensive operations.
- Environment Tier:
You can also mention the tier of your environment. Basically there are two environment tiers available and they are Web Server Environment and Worker Environment.
An application using PHP or requires HTTP requests runs in an Web Server Environment.
An application using Amazon Simple Queue Service (SQS) runs in an Worker Environment.
- Environment Configuration:
The configuration of an environment is a set of parameters like security group, Instance type, and platform version. If you change the configuration, Amazon Elastic Beanstalk implements it dynamically. It either applies the new changes or deletes and deploy new resources.
- Saved Configuration:
You can create a template which contains the basic functionalities and use it as a starting point for your environment configurations. You can also modify the configurations whenever you need and use it while creating new environment.
A platform is a combination of all the AWS Beanstalk components, an Operating system, a programming language runtime, and a web server to run the applications. You can choose your platform while creating your application or environment. You don’t need to update it or include software patches, AWS takes care of that. Just try to make your application as good as possible.
What are the languages supported by Amazon Elastic Beanstalk?
The AWS Elastic Beanstalk offers the deployment service for your application, by which you can run your app on the Amazon Cloud. For this, it supports many languages and development stacks which can be easily seen in the following points mentioned below:
- 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 7.5, 8.0, and 8.5 for .NET applications
- Java SE
These are the languages supported by the AWS Elastic Beanstalk. You can easily use these languages to take advantage of Elastic Beanstalk.