Amazon Virtual Private Cloud
Amazon Virtual Private Cloud (Amazon VPC) lets you provision a logically isolated section of the AWS Cloud where you can launch AWS resources in a virtual network that you define. You have complete control over your virtual networking environment, including selection of your own IP address range, creation of subnets, and configuration of route tables and network gateways. You can use both IPv4 and IPv6 in your VPC for secure and easy access to resources and applications.
You can easily customize the network configuration of your Amazon VPC.
For example, you can create a public-facing subnet for your web servers that have access to the internet. You can also place your backend systems, such as databases or application servers, in a private-facing subnet with no internet access. You can use multiple layers of security, including security groups and network access control lists, to help control access to Amazon EC2 instances in each subnet.
You can automatically provision AWS resources in a ready-to-use default VPC. Configure this VPC by adding or removing subnets, attaching network gateways, changing the default route table, and modifying the network ACLs.
Use case : Create a public-facing subnet for your web servers that have access to the internet.
Amazon EC2 Container Registry (ECR)
Amazon Elastic Container Registry (ECR) is a fully-managed Docker container registry that makes it easy for developers to store, manage, and deploy Docker container images.
Amazon ECR is integrated with Amazon Elastic Container Service (ECS), simplifying your development to production workflow. Amazon ECR eliminates the need to operate your own container repositories or worry about scaling the underlying infrastructure.
Amazon ECR hosts your images in a highly available and scalable architecture, allowing you to reliably deploy containers for your applications. Integration with AWS Identity and Access Management (IAM) provides resource-level control of each repository. With Amazon ECR, there are no upfront fees or commitments. You pay only for the amount of data you store in your repositories and data transferred to the Internet.
Amazon Beanstalk (PaaS)
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.
You can simply upload your code and Elastic Beanstalk automatically handles the deployment, from capacity provisioning, load balancing, auto-scaling to application health monitoring. At the same time, you retain full control over the AWS resources powering your application and can access the underlying resources at any time.
You just have to focus on just deploying applications to AWS and not worry about infrastructure tasks ! If you didn’t use Elastic Beanstalk then it would take significantly longer and would require intimate knowledge of AWS in order to provide the same functionality for your developers.
AWS manages : data source integrations, physical hardware, software, networking, and failicities, deployment, capacity provisioning, load balancing, auto-scaling to application Health monitoring.
Customer manages : load application code on AWS.
Use Case : PaaS
AWS Lambda (FaaS)
We have seen that Beanstalk runs your applications. With Lambda, it runs your code !
Lambda is considered a Function as a Service, whereby you create a piece of code and AWS will execute that piece of code, and only that piece of code as many times as you tell it to.
An example of a Lambda function use case might be that you want AWS to run a simple script for you. If you did not use Lambda, you would have to build an EC2 instance, install an operating system and install application runtimes and then run your script. Taking this concept further, if you wanted to run that script thousands of times per second you would have to build multiple EC2 instances and scale them out in order to provide enough compute.
With Lambda, AWS scales out the underlying infrastructure that runs your code automatically. All you need to be concerned about is your code ! AWS Lambda is perfect for building applications that have been broken down into services aka micro-services.
With Lambda:
AWS manages : data source integrations, physical hardware, software, networking, and failicities.
Customer manages : application code.
Use Case : In this image, we want to trigger a Lambda function, each time an image is pushed on a AWS S3 (storage service) :