In this course we learn to recognize and explain AWS compute and storage fundamentals, and to recognise and explain the family of AWS services relevant to the certified developer exam. This course provides you with snapshots of each service, and covering just what you need to know, gives you a good, high-level starting point for exam preparation. It includes coverage of:
Amazon Simple Queue Service (SQS)
Amazon Simple Notification Service (SNS)
Amazon Simple Workflow Service (SWF)
Amazon Simple Email Service (SES)
Amazon API Gateway
Amazon Data Pipeline
AWS Elastic Beanstalk
Storage and database
Amazon Simple Storage Service (S3)
Amazon Elastic Block Store (EBS)
AWS Relational Database Service (RDS)
Other Database Services
Elastic Cloud Compute (EC2)
Elastic Load Balancing (ELB)
If you have thoughts or suggestions for this course, please contact Cloud Academy at firstname.lastname@example.org.
Hello, and welcome to this lecture on AWS Elastic Beanstalk. Along with the EC2 Container service, which helps to install, distribute and deploy applications, AWS Elastic Beanstalk does much the same.
However, it is just for web applications and via a different deployment mechanism, than that of a cluster of EC2 instances. So let's take a look at the service in greater detail.
AWS Elastic Beanstalk is an AWS managed service, that will take your uploaded web application code and automatically provision and deploy the appropriate and necessary resources within AWS to make the web application operational. These resources can include other AWS services and features, such as EC2 Auto Scaling, application health-monitoring and Elastic Load Balancing.
This is perfect for engineers, who may not have the familiarity or skills with AWS, that they need to deploy, monitor and scale the correct environment themselves to run their developed applications. Instead, this responsibility is passed on to AWS Elastic Beanstalk to deploy the correct infrastructure to run the uploaded code. This provides a simple, effective and quick solution to the application deployment rollout.
One important point to note is that the service itself is free to use. There is no cost associated with Elastic Beanstalk, however, any resources that are created on your application's behalf, such as EC2 instances, you will be charged for as per the standard pricing policies at the time of deployment.
So now we know what AWS Elastic Beanstalk is and does, let me run through some of its architecture.
There are a number of components that make up Elastic Beanstalk, these being
- Applications. Within the Elastic Beanstalk, an application is a collection of different elements, such as environments, environment configurations and application versions. In fact, you can have multiple application versions held within an application.
- Application Versions, an application version is a very specific reference to a section of deployable code. The application version will point typically to S3, simple storage service to where the deployable code will reside.
- Environment, an environment refers to an application version that has been deployed on AWS resources. These resources are configured and provisioned by AWS Elastic Beanstalk. This is where the application comes to life and becomes a deployed solution.
- Environment Configurations, an environment configuration is a collection of parameters and settings, that dictate how an environment will have its resources provisioned by Elastic Beanstalk and how these resources will behave.
- Configuration Template, this is the template that provides the baseline for creating a new, unique, environment configuration
Now you are aware of some of the terminology and components, we can look at how AWS Elastic Beanstalk operates a very simple workflow process for your application deployment and ongoing management in what can be defined in four simple steps.
- Firstly, you Create an Application.
- Next, you must upload your application version of the application to Elastic Beanstalk, along with some additional configuration information regarding the application itself. This creates the Environment Configuration.
- The environment is then created by Elastic Beanstalk with the appropriate resources to run your code.
- Any management of the application can then take place, such as deploying new versions of your application. If the management of your applications have altered the environment configuration, then your environment will be automatically updated to affect the new code, should additional resources be required.
During the creation of your application, which as we now know is comprised of environments, environment configurations and application versions, you will be required to make an architectural decision for the deployment of your web application. You need to decide if you want either a Web Server Environment here, or a Worker Environment here.
Each of these tiers are architecturally different and will require a different configuration of AWS resources. The Web Server Environment is typically used for standard web applications, that operate and serve requests over HTTP port 80. This tier will typically use the following AWS resources in the environment. Route 53 for DNS, Elastic Load Balancing, Auto Scaling, EC2 and Security Groups.
The Worker Environment is slightly different and are used by applications that will have a back-end processing task, that will interact with AWS SQS, Simple Queue Service. This tier typically uses the following AWS resources in the environment. SQS, Simple Queue Service, which is a highly scalable messaging system designed to allow communication between distributed applications and services. EC2, IAM Roles, which are used to grant permissions on the EC2 instances and Auto Scaling.
As you can see, there are clear differences between the two tiers. It is likely that you will use the two tiers in conjunction with each other, decoupled by the use of the Simple Queue Service, allowing each environment to scale independently of one another, depending on demand through Auto Scaling and Elastic Load Balancing.
Following this step, you will be presented with a number of configuration options, that dictate how the environment will have its resources provisioned and how these resources will behave, so essentially creating the environment configuration. I won't analyze all the specifics of configuration through this stage, as it's out of scope for this course. However, I have included a few points to highlight some of the requirements asked, such as the Platform selection for your application, such a Python, Ruby, Tomcat etc. or if you require your application to comprise of a single EC2 instance or multiple instances, which are then laid, balanced and auto scaled or your preference of Deployment policy. For example, you can choose to have the environment all created at once or rolled out in batches. If you want to define a URL for your application, if you want to add Additional resources, such as an RDS database, the Instance details, such as the instance type and size, along with any storage following requirements and Permissions through the use of IAM, allowing EC2 instances to access other AWS resources, as required and for Elastic Beanstalk to perform its own monitoring.
Once all this configuration has been entered, your application is ready and the version can be deployed and Elastic Beanstalk will create the environment, based upon your environment configuration.
So to reiterate, AWS Elastic Beanstalk is an AWS managed service, that will take your uploaded web application code and automatically provision and deploy the appropriate and necessary resources within AWS to make the web application operational.
For your own hands-on experience with AWS Elastic Beanstalk, to deploy an application, take a look at our two Labs, which will guide you through the steps and process we have discussed. You can deploy a PHP application using Elastic Beanstalk or run a controlled deploy with Elastic Beanstalk.
That now brings us to the end of this lecture. Coming up next, I want to introduce you to AWS Lambda.
Stuart has been working within the IT industry for two decades covering a huge range of topic areas and technologies, from data center and network infrastructure design, to cloud architecture and implementation.
To date, Stuart has created 150+ courses relating to Cloud reaching over 180,000 students, mostly within the AWS category and with a heavy focus on security and compliance.
Stuart is a member of the AWS Community Builders Program for his contributions towards AWS.
He is AWS certified and accredited in addition to being a published author covering topics across the AWS landscape.
In January 2016 Stuart was awarded ‘Expert of the Year Award 2015’ from Experts Exchange for his knowledge share within cloud services to the community.
Stuart enjoys writing about cloud technologies and you will find many of his articles within our blog pages.