1. AWS EC2 (Elastic Compute Cloud ): Provides server resizability
- Amazon EC2 was released in 2006 and has become the center of amazon.com cloud computing platform AWS. EC2 allows users to provision virtual computers called instances on pay per use basis so that they can run their own computer applications.
- You can create, launch and terminate server instances as and when needed and pay only for what you use.
- You have full control over the geographical location where the servers are provisioned.
- You can take advantage of elasticity by deploying into different availability zones within each region.
EC2 is just like a raw server. You can configure it to be a web server and this web server can be resized according to your needs. The instances you have created can be replicated, as in you can launch multiple servers of the same config or can also increase the config.
Eg: I3 to I5 configuration
2. AWS Lambda: Runs background tasks
- It is a Function as a service (Faas) provided by AWS
Means: AWS responds to events. So, there are triggers that you set up in AWS lambda and in response to these triggers, AWS executes the code and then waits for the next event to happen.
- It allows you to run small snippets of code that perform a very specific function in either request response mode or batch mode.
- Setup, management and operation of servers is done by AWS.
Lambda is an advanced version of EC2, so it is based on EC2 but it cannot be used to host applications. It can only be used to execute your background tasks (file compression, applying filters, etc).
3. AWS Elastic Beanstalk: Host an Application
- It is an advanced version of EC2 and is used to host an application but how it differs from EC2 is that it is an automated form of EC2.
- You don’t have to configure in all the details. Or you don’t have to set the environment.
- It provides options for selecting the environment and AWS will install all the configuration files required and will provide you with an environment on which you just have to upload your code and your application will be deployed.
Drawback: Limited number of environments
Select website hosting, choose your environment and upload your code. You don’t have to deal with firewalls. Everything is automatically managed.
4. AWS Batch : Running multiple jobs across multiple instances
- Running multiple jobs asynchronously and automatically across multiple compute instances is made possible with AWS batch.
- AWS Batch dynamically provisions the optimal quantity and type of compute resources (e.g., CPU or memory-optimized instances) based on the volume and specific resource requirements of the batch jobs submitted.
- With AWS Batch, there is no need to install and manage batch computing software or server clusters that you use to run your jobs, allowing you to focus on analyzing results and solving problems.
- AWS Batch organizes its work into four components:
Jobs — The unit of work submitted to AWS Batch, whether it should be implemented as a shell script, executable, or Docker container image.
Job Definition — It describes how your work is executed, including the CPU and memory requirements and IAM role that provides access to other AWS services.
Job Queues — Listing of work to be completed by your Jobs. You can leverage multiple queues with different priority levels.
Compute Environment — The compute resources that run your Jobs. Environments can be configured to be managed by AWS or on your own as well as the number of and type(s) of instances on which Jobs will run. You can also allow AWS to select the right instance type.
Lastly, a scheduler owned by AWS evaluated when and where to run Jobs that have been submitted to the Job Queues.
AWS Batch plans, schedules, and executes your batch computing workloads across the full range of AWS compute services and features, such as Amazon EC2 and Spot Instances.
5. AWS Elastic Load Balancer: Handles varying incoming load on an application
- Elastic Load Balancer automatically distributes incoming application traffic across multiple targets, such as Amazon EC2 instances, containers, and IP addresses.
- It can handle the varying load of your application traffic in a single Availability Zone or across multiple Availability Zones.
- Elastic Load Balancing offers three types of load balancers that all feature the high availability, automatic scaling, and robust security necessary to make your applications fault-tolerant.
It is the protocol which is used to reduce the incoming traffic by distributing it equally among the instances.
6. AWS AutoScaling:
- Auto Scaling is a web service designed to launch or terminate Amazon EC2 instances automatically based on user-defined policies, schedules, and health checks.
7. Amazon Lightsail
- It is designed to be the easiest way to launch and manage a virtual private server with AWS. Lightsail plans include everything you need to jump-start your project – a virtual machine, SSD-based storage, data transfer, DNS management, and a static IP address – for a low, predictable price.