Narrator: Okay, so let's go ahead with learning
what Elastic Beanstalk is about.
So we have seen before that we have
a typical, three-tier web app architecture
in which we have a load balancer,
we had a private subnet that had our EC2 instances
in an auto-scanning group
and they were maybe talking to Amazon RDS
for the database and ElastiCache to cache some information.
So, how can we safely reproduce
this architecture very quickly?
The answer is with Beanstalk.
So, when you are a developer on AWS,
you need to do a lot of things.
You need to manage the infrastructure,
you need to deploy your code,
you need to configure all the databases,
load balancers and all the other things.
You need to be able to auto-scale,
so you have scaling concerns.
But end of the day, all these apps
share the same architecture.
You would have an application balancer
and an auto-scanning group, for example.
And as a developer, all you want to do
is to run your code and you don't want to worry
too much about the rest.
So, possibly, you want to this
across different applications and environments
and programming languages.
So, this is where Elastic Beanstalk comes in.
So, Elastic Beanstalk is a platform, is a service
and it's a developer centric view
of deploying an application on AWS.
So, the beautiful thing is that Elastic Beanstalk
is just a layer but it uses all the components
we've seen from before.
Than includes the EC2 instances,
your auto-scanning group, your load balancers,
your RDS database, etc etc.
But the cool things is that in the UI,
it's going to be one view
and it's very easy to make sense of.
And we still have full control
over all the configuration of the previous elements.
So, Beanstalk, all-in-all, it's free.
You don't pay for anything for Beanstalk,
but what you pay for is the underlying resources
that you use.
For example, if you use an EC2 instance,
if you use a load balancer, an RDS database,
you're going to pay for those but not for Beanstalk itself.
Okay, so what is Beanstalk?
It's a managed service
and it will perform for you the instance configuration
and the operating system configuration,
that's all handled by Beanstalk.
It will give you a deployment strategy
and deployment mechanisms and we'll see
how we can configure it, but this deployment
is going to be performed by Beanstalk,
so we have a full lecture dedicated to this.
So, the only thing that's your responsibility
is your application code and then,
you need to figure out how to configure Beanstalk,
obviously, but that's very simple.
So, there are three architectures model on Beanstalk.
The first one is a single instance deployment,
which is good for development.
The second one is a more production-like setup,
which leverages a load balancer and an auto-scanning group,
which is great when you have to have pre-prod
or production web applications.
And then finally, there's something called a worker tier,
we'll see this as well in this sections,
which is using only an auto-scanning group,
so no load balancer and this is great
when you want to process some messages of a queue.
Okay, back into Beanstalk.
So, Beanstalk has three different components.
The first one is, you have an application
and this is your code.
Then, you have the application versions
and each deployment will get assigned a version.
And finally, the environment name,
so it could be development, test, prod,
it's up to you to name it however you want.
And so, you went to deploy your application versions
to environments and then you can promote
application versions to the next environment.
And the cool thing about Beanstalk
is that it can do some deployment
but it can also do some rollback.
So, we can rollback to the previous application version.
So, we have this and we have full control
over the lifecycle of the environments.
So, in a diagram, we create an application
and we create the environments.
Together, we're going to upload
the version and create an alias,
and then, we're going to release this
into our Beanstalk environment.
Now, this should all make sense
as soon as we go into the hands-on.
So, what language are supported by Elastic Beanstalk?
Well, it has support for many platform,
for example, Go lang, Java, Java with Tomcat,
.NET, Node.js, PHP, Python, Ruby, Packer Builder,
Single Docker Container, Multicontainer Docker,
and that uses ECS, and Preconfigured Docker.
And if your platform is not there,
you can write your own custom platform,
which is advanced.
So, Beanstalk does support a wide array of use cases
and what we're going to do right now
is go ahead and practice them
and we're going to create our first Beanstalk application.
So, hope you're excited
and I will see you in the next lecture.