The course is part of these learning paths
What is Compute?
Understanding the fundamentals of AWS is critical if you want to deploy services and resources within the AWS Cloud. The Compute category of services are key resources that allow you to carry out computational abilities via a series of instructions used by applications and systems. These resources cover a range of different services and features, these being:
- Amazon Elastic Compute Cloud (EC2)
- Elastic Load Balancing
- Auto Scaling
- Amazon EC2 Container Service (ECS)
- AWS Elastic Beanstalk
- AWS Lambda
- AWS Batch
- Amazon Lightsail
This course will provide the fundamental elements of all of these Compute services and features that will allow you to select the most appropriate service for your project and implementations. Each have their advantages by providing something of value that’s different to the others, which will all be discussed.
Topics covered within this course consist of:
- What is Compute: This lecture explains what 'Compute' is and what is meant by Compute resources and services
- Amazon Elastic Compute Cloud (EC2): This lecture discusses and explains what the EC2 service is and does, and provides a demonstration on how to configure, launch and connect to an EC2 instance
- Elastic Load Balancing & Auto Scaling: This lecture explains the differences between Elastic Load Balancing and Auto Scaling and how they can be used to help manage your fleet of EC2 Compute resources
- Amazon ECS: This lecture explains how the Amazon ECS service allows you to run Docker-enabled applications packaged as containers across a cluster of EC2 instances without requiring you to manage a complex and administratively heavy cluster management system
- AWS Elastic Beanstalk: This lecture provides an overview of the AWS Elastic Beanstalk service which helps to install, distribute and deploy web applications
- AWS Lambda: This lecture explains how AWS Lambda lets your run your own code in response to events in a scalable and highly available serverless environment
- AWS Batch: This lecture looks at AWS Batch and how this service is used to manage and run batch computing workloads within AWS
- Amazon Lightsail: This lecture looks at the Amazon Lightsail service which is essentially a Virtual Private Server (VPS) backed by AWS infrastructure
If you want to learn the differences between the different Compute services, then this course is for you!
With demonstrations provided, along with links to a number of our Labs that allow you to gain hands on experience in using many of these services will give you a solid understanding of the Compute services used within AWS.
If you have thoughts or suggestions for this course, please contact Cloud Academy at email@example.com.
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.
About the Author
Stuart has been working within the IT industry for two decades covering a huge range of topic areas and technologies, from data centre and network infrastructure design, to cloud architecture and implementation.
To date Stuart has created over 40 courses relating to Cloud, most within the AWS category with a heavy focus on security and compliance
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.