Amazon Web Services (AWS) is the world’s most comprehensive and broadly adopted cloud platform, offering over 200 fully featured services from data centers globally. Millions of customers—including the fastest-growing startups, largest enterprises, and leading government agencies are using AWS to lower costs, become more agile, and innovate faster.
Here I am listing all AWS compnents I have setup and optimized for cost and performance.
While working on a large e-commerce platform, two major challenges are the amount of data to be processed and handling requests from a large number of customers.
A single server that is super powerful may cost ten times as much as two servers that are half as powerful. You want to be able to buy your hardware at the price point that is cheapest and not be locked into a higher price point because it's the only thing that will work. Uptime and reliability also come into play. With two or more servers, one can fail or be taken off-line for maintenance and the site can stay up. You can't do that with a single server.
Elastic Load Balancing (ELB) automatically distributes incoming application traffic across multiple targets and virtual appliances in one or more Availability Zones (AZs).
It doesn't matter if you are working on an application with a small number of users or a large one; the number of users will always keep changing. Auto-scaling will add a server under your load balancer when user traffic increases. And it drops (deregister) the existing server when traffic reduces.
Auto Scaling monitors your applications and automatically adjusts capacity to maintain steady, predictable performance at the lowest possible cost.
As we have seen in load balancers servers are created on the fly, but to perform scaling AWS needs a snapshot (source) of your O.S. and Data. You setup your application on one server and create AMI (image) of it. Then you can use this AMI in launch configuration of auto scaling.
This AMI can also serve as a backup of your server (ec2-instance). If your server crashes, you can restore it from the snapshot or AMI. However, it can only restore the data that were present at the time of creating the AMI.
Elastic File System (EFS) automatically grows and shrinks as you add and remove files with no need for management or provisioning. It can be mounted to multiple servers (ec2-instances) in parallel. It can also be used as shared directory storage.
S3 is an object storage service offering industry- scalability, data availability and security. Customers of all sizes and industries can store and protect any amount of data for virtually any use case, such as data lakes, cloud-native applications, and mobile apps. With cost-effective storage classes and easy-to-use management features, you can optimize costs, organize data, and configure fine-tuned access controls to meet specific business, organizational, and compliance requirements. It can also be used to host static website like this one.
Most common use of Lambda is to develop micro services. Lambda function supports Java, Go, PowerShell, Node. js, C#, Python, and Ruby code. In addition to this, you can also use lambda to invoke AWS services. We are using lambda to generate
Lambda is a serverless, event-driven compute service that lets you run code for virtually any type of application or backend service without provisioning or managing servers. You can trigger Lambda from over 200 AWS services and software as a service (SaaS) applications, and only pay for what you use.
CloudFront is a content delivery network (CDN). Delivers fast, secure websites. Accelerate dynamic content delivery and APIs. Stream live and on-demand video.Distribute patches and updates.
CloudWatch is a monitoring and observability service built for DevOps engineers, developers, site reliability engineers (SREs), and IT managers.
It provides you with data and actionable insights to monitor your applications, respond to system-wide performance changes, optimize resource utilization, and get a unified view of operational health.