What is AWS?
Amazon Web Services (AWS) is one of the most comprehensive and broadly adopted cloud service providers in the industry, offering over 200 fully featured services from data centers globally. A large spectrum of clients across verticals uses AWS to lower costs, become more agile and innovate faster. A recent survey estimates that AWS is the largest cloud service provider and accounts for 32% of the worldwide cloud services market.
While AWS provides a vast spectrum of services, it can be challenging to determine the right services for your needs. This article provides details of the top 10 most popular service offerings from AWS and how they map to different business needs.
1. AWS EC2 – Elastic Compute Cloud
Amazon Elastic Compute Cloud (Amazon EC2) is a web service that provides secure, resizable compute capacity in the cloud. Amazon EC2’s simple web service interface allows you to obtain and configure capacity quickly and with minimum effort.
EC2 provides a set of predefined instance profiles, or virtual server definitions, to create virtual machines. You can choose your VM configurations from any of the predefined instance types. VM instances can be memory-optimized, compute-optimized, or storage-optimized.
Users can also create and customize instance profiles to suit their needs. Instances can be self-provisioned or auto-scaled (when integrated with Amazon Auto Scaling) on demand, and stopped when not required, thereby saving costs.
EC2 instances can also be used to deploy containers. You can deploy and manage your own cluster of EC2 instances for running the containers.
Choosing the correct type of AWS EC2 instance is important. The wrong EC2 choice could adversely impact business and user experience. Read my article on an EC2 performance monitoring real-world case study to learn more about EC2 instances and how to go about choosing one that’s right for your needs.
Elastic Compute Cloud (EC2) Use Cases
Amazon Elastic Compute Cloud (EC2) provides you the ability to to spin up virtual machines on the fly with no major infrastructure investment and minimal startup costs. Quickly provision new servers, using the AWS admin console or automation scripts for production and testing environments and shut them down when no longer needed.
Typical use cases of AWS EC2 include:
- Host a variety of software from simple web sites to enterprise-grade web applications on a on-demand infrastructure. Easy to lift-and-shift from on-premises since you have full control of the operating system. Spot pricing can help save up to 80-90% on hosting costs.
- Create fault tolerant architecture with auto-scaling and load balancing options.
- If you need heavy computation and GPU power for deep learning/ machine learning, choose EC2 accelerated computing instances.
2. AWS RDS – Relational Database Service
Almost all applications deployed in AWS will need access to a database. This is where AWS’ Relational Database Service (RDS) fits in. RDS is a managed service from AWS using which you can set up, operate and scale a relational database in the cloud easily. As with EC2, Amazon RDS is available as several predefined database instance types – optimized for memory, performance or I/O. You can also pick the database engine of your choice from the six supported technologies including Amazon Aurora, PostgreSQL, MySQL, MariaDB, Oracle Database, and Microsoft SQL Server. One of the key advantages of RDS is that the managed service automates time-consuming administration tasks such as hardware provisioning, database setup, patching and backups.
Relational Database Service (RDS) Use Cases
Amazon Relational Database Service (Amazon RDS) is a managed database service and therefore reduces a lot of burden surrounding managing, maintaining, and other database related tasks.
Typical use cases of AWS RDS include:
- Deploy a new database server in a matter of minutes while significantly increasing reliability and uptime without associated overhead or personnel costs. Good fit for OLTP/ transactional, moderately complex day-to-day database requirements.
- You can customize the configuration for each database deployment with a number of database engines (MySQL, MariaDB, PostgreSQL, Oracle, and Microsoft SQL Server). Set up automatic failover (multi-AZ RDS set-up), automated backups, and resize your database deployments seamlessly in line with traffic and application requirements. Allows you to focus on the application instead of managing the database.
- Use RDS in conjunction with NoSQL databases such as DynamoDB (for low-latency/ high-traffic use cases) or Amazon OpenSearch Service (for text and unstructured data).
3. AWS Lambda
AWS Lambda is an event-driven, serverless computing service that lets you run code without provisioning or managing servers. With Lambda, you can upload your code as a ZIP file or container image, and Lambda automatically and precisely allocates compute execution power and runs your code based on the incoming request or event. You can write Lambda functions in your favorite language (Node.js, Python, Go, Java, and more) and use both serverless and container tools, such as AWS SAM or Docker CLI, to build, test, and deploy your functions.
Lambda Function-As-Service (FaaS) Use Cases
Lambda is a great technology choice for background processing that is triggered by events.
Typical use cases of AWS Lambda include:
- Image transformation for newly uploaded images.
- Real-time metric data processing.
- Streaming data validation, filtering, and transformation.
Lambda is very good at handling massive scale loads without the need to increase the amount of infrastructure allocated to your application. Unlike Amazon EC2, which is priced by the hour but metered by the second, AWS Lambda is metered by rounding up to the nearest millisecond with no minimum execution time.
It is important to note that serverless as an execution model is meant for workloads that are ephemeral and event-triggered. Good serverless design principles state that one should assume that the environment exists only for a single invocation. If you are depending on data structures or temporary files to hold internal state between multiple invocations, serverless is not the right design choice.
4. AWS S3 – Simple Storage Service
Amazon S3 or Amazon Simple Storage Service is a service that provides is cloud-based persistent storage through a web service interface. It’s built to store, protect and retrieve data from “buckets” at any time, from anywhere, on any device.
Amazon S3 is a simple key-based object-store. It enables you to simply put data in the cloud and pull it back out through standard REST- and SOAP-based web service APIs. You are shielded from the details of how it is stored or where it is actually stored. When you store data, you assign a unique object key that can later be used to retrieve the data. Keys can be any string, and they can be constructed to mimic hierarchical attributes. Alternatively, you can use S3 Object Tagging to organize your data across all of your S3 buckets and/or prefixes.
Using this service, you can easily build applications that make use of cloud native storage. S3 gives you access to the same scalable, reliable, secure and inexpensive infrastructure that Amazon uses to run its own global network of websites. Since S3 is highly scalable and you only pay for what you use, you can start small and grow your application as you wish, with no compromise on performance or reliability.
While designed for developers for easier web-scale computing, it provides 99.99999% durability and 99.99% availability of objects. The popularity of S3 also can be attributed to its cost-effectiveness.
Update Aug 2023: An insightful article from engineers on the S3 team has been published, an interesting and enjoyable read: Building and operating a pretty big storage system called S3 | All Things Distributed.
Simple Storage Service (S3) Use Cases
- Archive old data that is infrequently accessed. Good alternative for on-premises NAS (Network Attached Storage) or external hard disks. Helps keep your data safe and secure without the risk of data loss.
- With S3 Intelligent-Tiering, you can automatically move data to the most cost-effective access tier without performance impact or operational overhead.
- Store both static and dynamic assets such as user-generated content (images), backup files, raw event data/ logs (example: JSON or XML) in S3. Take the load off web servers and serve via highly available and redundant locations around the world. You also get regional support for storing assets in particular locations around the world to comply with regulatory commitments.
5. AWS ECS – Elastic Container Service
Amazon Elastic Container Service (Amazon ECS) is a highly scalable, fast container management service that makes it easy to run, stop, and manage containers on a cluster. ECS comes with two launch types: EC2 and Fargate. The containers can run on a serverless infrastructure that is managed by AWS Fargate. Alternatively, for more control over your infrastructure, you can run your tasks and services on a cluster of Amazon EC2 instances that you manage. The containers can run on a serverless infrastructure that is managed by AWS Fargate. Alternatively, for more control over your infrastructure, you can run your tasks and services on a cluster of Amazon EC2 instances that you manage.
You can schedule the placement of your containers across your cluster based on your resource needs, isolation policies, and availability requirements. With Amazon ECS, you don’t have to operate your own cluster management and configuration management systems or worry about scaling your management infrastructure.
AWS Fargate removes the need to provision and manage servers. Instead, you simply specify the resources per task, which also improves security through application isolation by design.
With AWS Fargate, you don’t have to provision, configure, or scale groups of virtual machines on your own to run containers. You also don’t need to choose server types, decide when to scale your node groups, or optimize cluster packing. You can control which pods start on Fargate and how they run with Fargate profiles.
6. AWS EKS – Elastic Kubernetes Service
Amazon EKS is a managed Kubernetes service that makes it easy for you to run Kubernetes on AWS and on-premises. EKS lets you run your Kubernetes applications on both Amazon EC2 and AWS Fargate.
EKS runs the Kubernetes control plane across multiple Availability Zones, automatically detects and replaces unhealthy control plane nodes, and provides on-demand, zero downtime upgrades and patching. EKS offers a 99.95% uptime SLA. At the same time, the EKS console provides observability of your Kubernetes clusters so you can identify and resolve issues faster.
With EKS, you have the advantage that any application running on EKS is compatible with one running in your existing Kubernetes environment. You can migrate to EKS without applying any changes to code.
7. AWS SQS – Simple Queue Service
Amazon SQS is a fully managed event-queuing service that enables you to decouple and scale microservices and serverless applications.
Using SQS, you can send, store, and receive messages between software components at any volume, without losing messages or requiring other services to be available. If no workers pull jobs from SQS, the messages stay in the queue.
SQS offers two types of event queues. Standard queues offer maximum throughput, with best-effort ordering and at-least-once delivery. SQS FIFO queues offer event processing in the exact order that events are sent, with exactly once processing guarantee, although it comes with a throughput constraint.
Since it is a fully managed message queuing service, SQS eliminates the complexity and overhead associated with managing and operating message-oriented middleware and empowers developers to focus on their core tasks.
You can scale the amount of traffic you send to Amazon SQS up or down without any configuration. Amazon SQS also provides extremely high message durability, giving you and your stakeholders added confidence.
8. AWS DynamoDB – NoSQL Database Services
DynamoDB is Amazon’s NoSQL database solution that supports document and key-value data models. It’s a fully managed, multi-region, multi-active, durable database with built-in security, backup and restore, and in-memory caching for internet-scale applications.
You get built in automatic backup and restore, security, and multiregion, multimaster distribution along with in-memory caching.
DynamoDB is an ideal fit for internet-scale mobile, web, gaming, IoT, retail, media, and entertainment applications that require single-digit millisecond low latency data access and need to support petabytes of data. DynamoDB can automatically scale up/ down, and provides ACID transactions support. Your DBAs do not need to provision, patch, or manage servers. There’s no software to install, maintain, or operate.
9. AWS WorkSpaces
To support remote workers and enable organizations to have virtual desktops in the cloud, AWS provides Amazon WorkSpaces, a fully managed, persistent desktop virtualization service that enables your users to access the data, applications, and resources they need, anywhere, anytime, from any supported device. Windows or Linux desktops can be provisioned in a few minutes. Amazon WorkSpaces is deployed within an Amazon Virtual Private Cloud (VPC), and no user data is stored on the local device. For non-persistent desktops and virtualized applications, AWS supports AWS AppStream 2.0, another service offering.
AWS WorkSpaces Use Cases
- Workspaces in the cloud can be used for onboarding new remote employees, contract workers, and partners. You don’t want partners to be in your network, but at the same time, you want to collaborate with them remotely. You could set up temporary workspaces where both sets of staff (yours and partners’) can collaborate.
- IT can quickly and easily configure and manage access. You can permit access to the internal sites of your choice by funneling outbound traffic from a WorkSpace through a web filter.
- Some organizations run their entire business on SaaS applications and may have no physical offices. So, there is no on-premises infrastructure at all. In such cases, desktops in the cloud using services like AWS Workspaces is what they use.
- Onboard your development teams (developers, QA, DevOps/SRE etc.) on AWS by providing them with their own AWS Workspace instance. They can also use WorkSpaces as a jumphost for secure remote access to AWS instances using private IPs.
10. AWS CloudFront – Content Delivery Network (CDN) Platform
CloudFront is a content delivery network (CDN) service that enhances the user experience of any application running in the AWS cloud, outside the cloud, or on premises. The data is cached at the AWS edge locations, also known as points of presence (POPs). These locations are used to deliver data, videos, images, apps, and APIs with high transfer speeds and low latency to consumers. It provides you with the ability to cache common responses from your HTTP/HTTPS web application by caching the responses to GET, HEAD, and OPTIONS HTTP methods, thus making it seem as if the application front end is much closer to the user than it actually is.
It is often used in tandem with S3 to capture clickstreams from it and follow visitors as they navigate through other applications. CloudFront is secure and resilient to L3 and L4 DDoS attacks when used with AWS Shield.
Other Services
Besides the above there are hundreds of other AWS offerings in other areas. For example, there is the Simple Notification Service (SNS) for one-to-many push notification and the Simple Email Service (SES) for secure email delivery.
There are several infrastructure services that are essential for any AWS-based service. These include Elastic Load Balancing (ELB), Virtual Private Cloud (VPC) for security and privacy, and Elasticache for in-memory caching and processing of large amounts of data. All of the AWS services rarely operate in isolation. Combinations of services are used to deliver the functionality required by IT organizations today.
Conclusion
We walked through the top 10 AWS services and their use cases. AWS offers well over 200 services that cut across computing, networking, storage, databases, application services, machine learning and analytics, and tools for the Internet of Things (IoT).
AWS is wide and deep with many moving parts: AWS offers a wide spectrum of services that can be used by organizations who are adopting cloud technologies to power their business applications. A typical application deployment will use a number of these services working in unison to achieve the application goals.
You need the right monitoring tools: While these services can save your organization valuable time and effort as you deploy your applications, at the same time, bear in mind that when performance issues occur, you must have monitoring in place to track the performance of each AWS service as well as your application components.
Performance issues could lurk anywhere: Performance problems, regardless of where the application is hosted, could manifest in a variety of tiers – browser, network, host server, containers, JVM (Java Virtual Machine)/ CLR (Common Language Runtime), application code and SQL, databases or the underlying cloud infrastructure. Sometimes the problem could be with the cloud vendor’s physical machine (example: faulty NIC card or bad driver) that you may not have access or visibility into.
Correlating across logs, metrics, traces and events: Correlating between performance at each tier and quantifying the end user experience and business impact will provide you insights into why performance issues have occurred and resolve them quickly. This is especially important when you may have to substantiate with evidence in conversations with the cloud provider’s support team that the action is on them to fix the issue. You need both breadth and depth in the form of logs, metrics, traces and events across the system.
This is where monitoring tools like eG Enterprise come in. Using an integrated application and infrastructure monitoring approach, eG Enterprise gives you breadth and depth of AWS monitoring visibility from a single console.
Learn more
The following resources will give you more information on specific AWS services and cloud native principles to apply in your cloud journey.
Case study on EC2: Monitoring AWS Cloud – How to choose EC2 instances with care
Blog article on how to choose between RDS and EC2: How to choose between AWS RDS and EC2 Hosted Database?
Blog article on RDS and DynamoDB: AWS Database Types – Aurora vs DynamoDB vs RDS – How do they compare?
Blog article on cloud native: The What and The Why of Cloud Native Applications – An Introductory Guide
White paper: Key considerations for a performance monitoring system for your IT infrastructure
eG Enterprise is an Observability solution for Modern IT. Monitor digital workspaces,
web applications, SaaS services, cloud and containers from a single pane of glass.