What is AWS?
- It is a global cloud platform that allows you to host and manage your services on the internet.
- They are Infrastructure as a Service (Iaas): Which means they provide their servers as a service. So you don’t need to manage the backup and power supply of the service.
- They provide platform for the service(Paas): You can get java, ruby, php, etc as a service. So you don’t have to manage the underlying structure of these applications.
- They provide Software as a Service (Saas): Where you get email sending capabilities
- It is cloud storage platform where you get lots of storage options.
Overall it is a Hosting provider which gives you lots of services wherein you can run your applications on the cloud.
Why AWS?
- Market Share: AWS (33% ) rest: 67%
- Flexible Pricing Model: Pay for what you use: per hour billing rate: for every server, every service we get a micro billing.
- Scalability: Scale your resources according to your requirements.
AWS is readily distinguished from other vendors because it is:
Flexible: AWS enables organizations to use the programming models, operating systems, databases, and architectures with which they are already familiar. In addition, this flexibility helps organization’s mix and match architectures in order to serve their diverse business needs.
Cost-effective: With AWS, organizations pay only for what they use, without up-front or long-term commitments.
Scalable and elastic: Organizations can quickly add and subtract AWS resources to their applications in order to meet customer demand and manage costs.
Secure: In order to provide end-to-end security and end-to-end privacy, AWS build services in accordance with security best practices, provides the appropriate security features in those services, and documents how to use those features.
Experienced/trusted vendor: When using AWS, organizations can leverage Amazon’s more than fifteen years of experience delivering large-scale, global infrastructure in a reliable and secure fashion.
Domains:
- Compute
- Storage
- Database
- Migration
- Networking and Content Delivery
- Management tools
- Security and Identity, Compliance
- Messaging
AWS Services
Compute :
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.
Summary:
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.
Summary:
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
Summary:
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.
Summary:
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.
Summary:
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.