# AWS compute services with appropriate use cases

> A comprehensive overview of key compute services, including Amazon EC2, Amazon Fargate, AWS Lambda, and Lightsail, as well as supportive compute services like AWS Batch and Amazon EMR, among others

BlowStack blog, published 2024-02-08, 15 min read. Page: https://blowstack.com/blog/aws-compute-services-with-appropriate-use-cases

Compute is often considered a power that originates from the CPU and processes data. However, to run a program, more components are required, including at least Memory and Storage.

Compute realized on AWS is commonly referred to as '**Cloud Computing**'. Simplified, it's computing available over a network on demand, with a default pay-as-you-go pricing model. These three attributes make cloud computing very appealing for anyone eager to implement any idea related to software development in the fastest possible Time To Market (TTM), at least in terms of the hardware part.

Compute is one of many offerings from AWS, including Databases, Analytics, Machine Learning, Networking, and more. However, computing is the most versatile of all categories because it can be utilized for almost anything. In other words, it enables the creation of highly customized solutions that can easily integrate with other AWS services. For example, databases can also be run using AWS compute services without RDS.

Below is a comprehensive list of compute services available on AWS, with a focus on their use cases.

## Amazon EC2

By many, and likely by AWS itself, EC2 instances are considered the cornerstone of cloud computing on AWS. These **Virtual Machines** offer a broad array of configurations to cater to different computing needs. These configurations, which vary in CPU, memory, network, and EBS bandwidth, are identified by unique codes such as M7g or T3.

### EC2 Key Features

#### **Instances**

EC2 are Virtual Machines with fixed hardware specifications, customizable in terms of OS, networking, security, and storage. They can perform virtually any task that a non-virtualized operating system can.

#### **Amazon Machine Images (AMIs)**

Pre-packaged software stacks, including operating systems and applications, for instance creation and customization. Users can also create their own AMIs from existing instances, supporting [immutable infrastructure strategies](https://blowstack.com/blog/immutable-infrastructure-on-aws).

#### **Instance Types**

Offer various balances of CPU, memory, storage, and networking capabilities to suit different applications.

#### **Security Groups**

Act as virtual firewalls to control instance traffic, enhancing network security.

#### **Elastic Block Store (EBS) Volumes**

Provide persistent block storage for data that can be attached to instances.

#### **Instance Store**

Offers faster, directly attached ephemeral storage, though data is lost if the instance is stopped or terminated.

#### **Elastic IP Addresses**

Static public IP addresses for dynamic cloud computing, ensuring accessible instances even through stop/start cycles.

#### **Virtual Private Clouds (VPCs)**

Enable launching of AWS resources in a customizable, isolated network, offering enhanced virtual networking control.

#### **Auto Scaling**

Dynamically adjusts instance capacity to maintain application performance according to demand.

#### **Placement Groups**

Allow instance clustering within an Availability Zone for high throughput and low latency, or distribution across zones for increased fault tolerance.

### EC2 Use Cases

#### Instance Types

EC2 instances are organized into categories such as General Purpose or Storage Optimized, each designed for specific workloads and applications. These categories represent dedicated computing use cases.

While it's possible to use a specific instance type for various applications, AWS suggests deploying multiple instances in parallel and evaluating their performance to identify the optimal configuration.

It's also worth noting that the use cases for some categories may intersect with others.

| Instance Type | Use Cases |
| --- | --- |
| General Purpose | Ideal for starters if you're unsure which instance type to use. They are the most balanced of all, including the cheapest instances. Possible use cases include small projects, development, and applications that demand similar resources for all components without stressing any particular one, like web servers or code repositories. |
| 
Compute Optimized

 | Best for workloads that are primarily CPU-intensive. Possible use cases are high-performance web servers, gaming servers, batch processing, and other compute-sensitive applications. |
| Memory Optimized | Suitable for memory-sensitive applications such as in-memory databases, in-memory caches, genomic and real-time big data analytics |
| Accelerated Computing | These instances utilize hardware accelerators and co-processors, making them ideal for graphics processing, machine learning (ML) and deep learning computations, scientific and engineering workloads, cryptocurrency mining, real-time video streaming, and financial modeling involving [Monte Carlo simulations](https://aws.amazon.com/what-is/monte-carlo-simulation/#:~:text=The%20Monte%20Carlo%20simulation%20is%20a%20probabilistic%20model%20that%20can,home%20and%20office%20is%20fixed.). |
| Storage Optimized | Storage-optimized instances are tailored for applications that heavily utilize storage. Typical use cases include large databases, analytics with extensive data lakes, data warehousing, and backup and disaster recovery solutions. |
| HPC Optimized | Ideal for applications requiring high-performance computing (HPC) processors, such as scientific and engineering simulations, machine learning and deep learning training of complex models, and render farms. |

#### Operating System

They support a wide range of operating systems, such as Linux, Windows, and macOS, broadening their application spectrum.

| Operating System | Use Cases |
| --- | --- |
| Linux | Amazon Linux 2 is designed for a broad range of computing environments, from virtualized to containerized workloads. It is ideal for hosting databases, performing data analytics, running line-of-business and web applications, as well as desktop applications. |
| Windows | Windows Server on EC2 is tailored for deploying Windows-based environments in the cloud. It supports a wide array of Windows applications and services, including Active Directory, SQL Server, and Internet Information Services (IIS). These instances provide a robust platform for running enterprise applications, web servers, and other critical Windows workloads, ensuring seamless integration with existing Windows infrastructure. |
| macOS | EC2 Mac instances offer a cloud-based solution for developers working on Apple's ecosystem, streamlining the development process for apps across Apple devices. With quick provisioning and access to macOS environments, developers can efficiently build, test, and deploy applications for iPhone, iPad, Apple Watch, and Mac. This capability accelerates the development cycle for iOS and macOS apps by providing scalable and flexible access to macOS resources on AWS |

#### Pricing Models

EC2 provides multiple pricing options, facilitating cost-effective deployment for a variety of needs.

| Pricing Model | Use Cases |
| --- | --- |
| On-Demand Instances | Ideal for applications experiencing short-term fluctuations, irregular demand, or unpredictable workloads that require continuous operation. You're billed only for the seconds your resources are in use, without any long-term obligations |
| Spot Instances | Ideal for intermediate and applications with flexible scheduling where computing can be interrupted like HPC, batch processing jobs, BIig data. Offers access to surplus Amazon EC2 computing capacity at discounts of up to 90% compared to On-Demand prices |
| Reserved Instances | Ideal for long term projects with predictable workload. Offers reserved capacity with a notable discount of up to 75% relative to On-Demand rates, making it an excellent choice for commitments of 1 or 3 years. |

#### Tenancy

The choice of tenancy affects application deployment by dictating how instances are distributed across physical servers. While AWS documentation often links tenancy with the pricing model, its actual significance lies in the operational aspects of EC2 instance allocation. Therefore, a distinct categorization has been created to outline EC2 use cases focused explicitly on their tenancy options.

| Tenancy | Use Cases |
| --- | --- |
| Shared Tenancy | Best for a wide range of general-purpose applications without strict compliance or isolation needs. Ideal for optimizing expenses, leveraging AWS's efficient resource allocation. Supports dynamic scaling, making it suitable for fluctuating demand. |
| Dedicated Instances | Essential for meeting legal standards that demand physical isolation from the hardware of other tenants. Offers an added layer of security for data-sensitive workloads by ensuring hardware dedication. |
| Dedicated Hosts | Facilitates compliance with core- or socket-based licensing terms, necessary for certain enterprise software. Provides granular control over server deployment and configuration, aligning with specific on-premises environments for seamless migration or hybrid setups.  

Allows for the application of pre-owned software licenses (Bring Your Own License - BYOL), reducing operational costs for software like Windows Server, SQL Server, and SUSE Linux Enterprise Server. |

#### Placement groups

Placement groups in Amazon EC2 are a configuration that allows users to influence the placement of instances within the underlying hardware to optimize performance.

| Placement Group | Use Cases |
| --- | --- |
| Cluster Placement Groups | **High-Performance Computing (HPC):** Ideal for workloads such as batch processing and media encoding, which demand high network throughput and low latency between instances. This setup benefits distributed applications, including distributed databases and analytics clusters, by providing very low latency communications. |
| Spread Placement Groups | 
**High Availability Applications:** Suitable for critical applications where the failure of a single instance or the compromise of availability zone availability could detrimentally affect the entire application. Spread placement groups enhance resilience by distributing instances across separate physical hardware, thereby reducing the risk of simultaneous failure.

**Critical Instance Isolation:** Applications that operate with a limited number of essential instances requiring isolation from each other, due to compliance or security considerations, gain from using spread placement groups. This ensures that instances do not share the same physical resources.

 |
| Partition Placement Groups | 

**Large Distributed Systems:** Optimized for extensive distributed and replicated systems such as Hadoop, Cassandra, and Kafka. Partition placement groups distribute instances across multiple hardware sets, minimizing the risk of correlated failures and enhancing system reliability.

**Low Latency Distributed Workloads:** Particularly advantageous for distributed file systems (e.g., HDFS), database systems (e.g., HBase), and other applications like Cassandra that necessitate very low latency interactions between instances. This configuration helps maintain performance and efficiency in large-scale distributed environments.

 |

## Amazon Lightsail

Amazon Lightsail is simillary to EC2 a Virtual Machine but compared to EC2 simpler to lauch and manage with less features but also cheapier.

### Lightsail Key Features

#### **Preconfigured Virtual Machines**

Lightsail offers instance plans with preconfigured virtual machines, including various operating systems and software stacks like WordPress, LAMP (Linux, Apache, MySQL, PHP), and Node.js.

#### **Fixed, Predictable Pricing**

With monthly plans starting at $3.50, Lightsail provides a predictable pricing model that includes compute power, memory, storage, and data transfer, simplifying budgeting for users.

#### **Simplified Resource Management**

Users can easily manage instances, storage, databases, and more from a single dashboard, offering a straightforward approach to cloud resource administration. Lightsail offers managed databases that include automatic backups, patching, and encryption, simplifying database administration tasks.

#### **Integrated Networking Features**

Lightsail includes essential networking capabilities like static IP addresses, DNS management, and a managed load balancer, aiding in the seamless scaling of applications.

#### **Snapshots**

The service enables users to create snapshots of their instances and databases for backups or cloning, enhancing data protection and recovery strategies.

#### **SSD-Based Storage**

All plans come with SSD-based storage, ensuring high-performance solutions for application data storage needs.

**AWS Integration**

While designed for simplicity, Lightsail can connect with more advanced AWS services, allowing for application scaling as user needs grow.

### Lightsail Use Cases

**Simplicity and Accessibility**

Ideal for individual developers, hobbyists, and students looking to grasp cloud computing basics.

Enables hosting of personal projects, websites, and web applications with ease.

**Ideal for SMBs**

Small and medium-sized businesses benefit from Lightsail's simplicity in running production workloads.

Offers straightforward management and cost-effectiveness.

**Development and Testing**

Organizations use Lightsail to create development and testing environments.

Facilitates rapid provisioning on demand, enhancing project agility.

## Amazon EC2 vs Amazon Lightsail

| **Feature** | **Amazon EC2** | **Amazon Lightsail** |
| --- | --- | --- |
| **Control and Flexibility** | High control over infrastructure with customizable instance types, operating systems, and storage options. | Predefined instance bundles with fixed configurations for simpler setup. |
| **Pricing Models** | Pay-as-you-go based on actual usage with options for On-Demand, Reserved, and Spot Instances. | Fixed monthly pricing plans starting at $3.50, making budgeting straightforward. |
| **Resource Management** | Manage resources (instances, storage volumes, etc.) separately for granular control. | Single control panel for managing pre-configured resources like instances, storage, and load balancers. |
| **Advanced Features** | Supports dedicated hosts, container services, GPU instances, and more for complex applications. | Focused on simpler workloads and quick deployments without the advanced features found in EC2. |
| **Monitoring and Management** | Detailed monitoring and management with CloudWatch, CloudTrail, and more. | Basic monitoring capabilities suitable for less complex needs. |
| **Scalability** | Flexible scaling options allowing resources to be adjusted independently as needs grow. | Fixed instance configurations and plans, with some limitations on scalability. |

## **AWS Fargate**

Unlike EC2 and Lightsail, AWS Fargate is serverless, making it distinct as it removes the need to manage servers. It serves as a compute engine for containers that can be integrated with multiple AWS services such as ECS, EKS, and AWS Batch, among others.

### **Fargate** Key Features

#### **Serverless Operation**

Fargate manages the container runtime and underlying infrastructure, allowing you to focus solely on application development and deployment.

#### **Resource-Based Pricing**

Charges are based on the vCPU and memory resources your containers use, ensuring you only pay for what you consume.

#### **Enhanced Security**

Each task or pod operates within its own isolated environment, enhancing security by preventing resource sharing.

#### **Flexible Orchestration**

Fully compatible with Amazon Elastic Container Service (ECS) and Amazon Elastic Kubernetes Service (EKS), Fargate offers versatile options for running containerized applications.

#### **Effortless Scaling and Management**

Fargate automates scaling, patching, and operational tasks, streamlining application management.

#### **Integrated AWS Services**

Includes native integration with AWS services such as CloudWatch for comprehensive metrics and logs, and supports AWS load balancers like ALB and NLB for efficient traffic distribution.

### **Fargate** Use Cases

#### **Optimizing Large and Small Workloads**

Fargate is effective for both large workloads needing minimal overhead and small, bursty workloads, as it offers a pay-for-what-you-use model, making it cost-effective for variable demands.

#### **Microservices and Serverless Applications**

It simplifies deploying and scaling numerous microservices, allowing for easy management of large numbers of small services, enhancing agility and operational efficiency.

#### **Batch and Event-driven Processing**

Ideal for running batch jobs or handling event-driven tasks such as IoT data processing or real-time file processing, Fargate responds to events or schedules without the need for infrastructure provisioning.

#### Applications requiring isolated comoputing

Provides improved isolation and security for applications, as each task runs in its own security context without sharing resources with others.

#### **CI/CD and Web Applications**

Supports continuous integration and deployment pipelines, offering a consistent environment for testing and deploying applications. It's also well-suited for web applications and APIs requiring scalable, highly available backends.

#### **Machine Learning and High Availability**

Facilitates machine learning workloads by providing scalable compute resources and supports disaster recovery strategies by enabling quick deployment across multiple regions or availability zones.

## AWS Lambda

AWS Lambda and AWS Fargate were briefly mentioned in the article "[Serverless technologies and patterns on AWS](https://blowstack.com/blog/serverless-technologies-and-patterns)," which explained that they are managed, predominantly serverless services focusing on code execution.  

### Lambda Key Features

#### **Function Configuration**

Customize memory, timeout settings, and permissions through the AWS console or CLI to tailor Lambda functions to your specific needs.

#### **Environment Variables**

Adjust function behavior dynamically without altering the code by utilizing environment variables.

#### **Versioning**

Implement version control on your functions to streamline the deployment process for testing or production environments.

#### **Container Support**

Deploy containerized applications using AWS-provided base images or custom ones, integrating seamlessly with Lambda's serverless architecture.

#### **Layers**

Optimize function deployment by separating common libraries and dependencies into layers, reducing overall function size.

#### **Lambda Extensions**

Enhance monitoring and security capabilities with extensions from AWS and third-party providers like Datadog and New Relic.

#### **Function URLs**

Create dedicated HTTP/HTTPS endpoints for direct function invocation over the internet, simplifying access.

#### **Response Streaming**

Enable streaming of large response payloads to boost performance and response times.

#### **Concurrency Controls**

Manage and automatically scale concurrent executions to maintain performance during demand spikes.

### Lambda Use Cases

#### **Serverless Applications**

Enables the construction of fully serverless architectures that scale automatically, integrating seamlessly with AWS services like API Gateway and DynamoDB for diverse applications, including web and mobile backends.

#### **Data Processing**

Offers capabilities to efficiently process data in real time or in batches from sources such as Amazon S3, Kinesis, and DynamoDB streams. This supports tasks like ETL operations, analytics, and stream processing, facilitating file resizing, format conversion, and data transformation.

#### **Web and Mobile Backends**

Lambda serves as a dynamic backend solution for web and mobile applications, handling API requests, user authentication, and personalized content generation without server management overhead.

#### **IoT Applications**

Supports the development of serverless IoT application backends that process and respond to data from sensors and devices, enabling real-time analytics, automation, and efficient data management.

#### **Scheduled and Event-Driven Tasks**

Executes code in response to AWS service events or external triggers, and runs scheduled tasks using cron expressions, catering to a wide array of automated workflows and operational tasks.

## **AWS Outposts**

AWS Outposts bring AWS infrastructure, services, and tools directly to on-premises locations, offering a comprehensive suite of features for a seamless hybrid cloud experience.

### **Outposts** Key Features

#### **AWS On-Premises Extension**

Delivers AWS infrastructure and services on-premises, supporting applications with low latency, local data processing, and storage needs, enabling the use of EC2, ECS, EKS, and VPC networking locally.

#### **Fully Managed and Maintained by AWS**

Outposts equipment, including racks and servers available in 1U and 2U form factors equipped with Graviton2 and Intel Xeon processors, are fully managed, maintained, and updated by AWS, covering delivery, infrastructure maintenance, and software updates.

#### **Seamless Service Integration**

Integrates a wide array of AWS services on-premises, using familiar AWS APIs and tools for computing, storage, databases, and more, including specialized services like S3 on Outposts for local data compliance and latency reduction.

#### **Unified Governance and Management**

Facilitates unified access and resource management across cloud and on-premises environments with AWS governance services like Organizations, RAM, and CloudFormation.

#### **Consistent Hybrid Cloud Experience**

Ensures a consistent AWS experience across cloud and on-premises environments, simplifying application migration, hybrid application running, and connection to AWS's extensive service range.

#### **Designed for Compliance and Security**

Adheres to stringent compliance standards, providing robust security and data protection measures comparable to those in the AWS cloud.

#### **Network Integration**

Easily integrates with existing on-premises networks for a cohesive networking experience, connecting local resources with the AWS cloud efficiently.

#### **VMware Cloud Support**

Supports a fully managed VMware Cloud experience on-premises, allowing VMware workloads to run on Outpost's physical infrastructure with familiar VMware management tools.

### **Outposts** Use Cases

#### **Low-Latency Access**

Essential for industries like financial trading, gaming, manufacturing, healthcare, and media, where immediate data processing and response times are crucial for performance and user experience.

#### **Compliance and Data Residency**

**I**deal for healthcare, financial services, and other sectors with strict data residency and compliance requirements, allowing data to be stored and processed locally while leveraging AWS cloud services.

#### **Efficient Data Processing**

Enables processing large volumes of data generated on-premises, such as in manufacturing and industrial settings, reducing transfer costs and network usage before moving data to AWS for further analysis or storage.

#### **Containerized Workloads**

Supports running ECS or EKS clusters on-premises for applications that require integration with local systems, providing a seamless environment for container management.

#### **Local Storage Solutions**

Offers local storage options like S3 on Outposts, providing near real-time access to data with the familiar AWS interface, suitable for applications that demand immediate data availability.

#### **Managed Infrastructure**

Utilizes AWS's managed infrastructure and operational expertise for deploying and managing on-premises workloads, eliminating the need for extensive data center maintenance.

#### **Hybrid Cloud and Edge Computing**

Facilitates a smooth transition to the cloud for businesses and supports edge computing needs in telecommunications and media content delivery, ensuring applications are deployed closer to end-users or data sources.

#### **Consistent Development Environment**

Aids software development by mirroring AWS cloud configurations on-premises, ensuring a uniform environment across development, testing, and production stages.

#### **Support for Highly Regulated Industries**

Enables government and public sector entities to benefit from AWS services while adhering to regulatory requirements by keeping sensitive data within on-premises environments.

## Other compute services

The following services play a crucial role in computing, leveraging computation based on EC2, Fargate, or on-premises compute power (AWS Outposts) and providing additional features for various scenarios but they are not independable compute services compares to the allready covered like EC2 or Fargate. Some of the following services were mentioned in “[How to migrate applications into containers on AWS](https://blowstack.com/blog/how-to-migrate-applications-into-containers-in-aws)” article.

## **AWS Batch**

AWS Batch differs significantly from previous computing services like EC2 or Lambda. Its primary focus is on executing specific jobs rather than hosting entire applications. In this context, a compute job is considered a distinct part of an application that runs autonomously, without any user interaction.

### **Batch** Key Features

#### **Comprehensive Management**

AWS Batch automates the management of compute environments and job queues, facilitating the execution of a vast number of jobs of varying scales. It integrates seamlessly with Amazon ECS, Amazon EKS, and AWS Fargate, offering the choice between Spot and on-demand resources.

#### **Automated Resource Provisioning**

The service simplifies job submission by allowing you to define jobs and submit them to a queue. AWS Batch intelligently schedules these jobs and provisions additional AWS capacity as required, ensuring optimal resource utilization.

#### **Monitoring and Scaling**

AWS Batch monitors job progress, scaling down resources when they're no longer needed, thus ensuring efficient use of computing resources.

#### **Workflow Integration**

It supports complex workflows, allowing for the submission of jobs that are part of a larger pipeline. This feature enables the definition of dependencies between jobs, facilitating coordinated execution.

#### **Custom Compute Strategies**

With support for Amazon EC2 Launch Templates, AWS Batch enables customized compute resource templates, allowing for precise scaling based on job requirements. Additionally, flexible allocation strategies let users optimize for throughput and cost.

#### **Cost and Resource Efficiency**

Leveraging AWS's Spot Instances and its dynamic scaling capabilities, AWS Batch minimizes costs associated with batch computing. Payment is only required for the actual AWS resources utilized, enhancing cost optimization.

#### **Consistent Execution Environment**

By supporting containerization with Docker, AWS Batch ensures that jobs run consistently across different computing environments, streamlining development and deployment processes.

### **Batch** Use Cases

#### **High-Performance Computing**

Facilitates a broad spectrum of compute-intensive tasks such as genomics analysis, financial risk modeling, deep learning, Monte Carlo simulations, and engineering simulations by efficiently running large numbers of parallel jobs.

#### **Media Processing**

Supports tasks like audio/video transcoding, image processing, and computer vision tasks, applying uniform operations across numerous files or objects to facilitate content delivery and analysis.

#### **Scientific Research and Simulations**

Empowers scientific and engineering disciplines with the capability to perform extensive simulations, including parameter studies or iterative simulations, crucial for achieving accurate results in research and development projects.

#### **Software Development and Testing**

Enhances the build and test cycles of distributed applications, particularly those utilizing container technologies like Docker, by automating and scaling test executions.

#### **Data Processing and ETL**

Optimizes data transformation processes, including ETL jobs for analytics, data warehousing, and report generation, handling vast data volumes from various sources for insightful analytics and decision-making.

#### **Machine Learning Workflows**

Streamlines the training and deployment of machine learning models, handling large datasets with optimized resource allocation to accelerate development and application of AI technologies.

#### **Financial Analysis**

Enables detailed financial analysis and modeling, including risk assessment and fraud detection, by processing transactional data in batches for comprehensive analysis and insights.

## **AWS App Runner**

App Runner fully abstracts the resources required to run an application, requiring developers to only supply a code repository or a container image. The specific compute resources used by App Runner under the hood are not explicitly stated, leading to speculation that it might utilize EC2, Fargate, or both.

### **App Runner** Key Features

#### **Serverless Deployment**

Enables the deployment of containerized applications directly from source code or container images, supporting a variety of programming languages and frameworks such as Node.js, Python, PHP, Ruby, and .NET Core, without the need for Docker expertise or managing servers.

#### **Automatic Scaling and Management**

Seamlessly scales applications to match demand and manages infrastructure tasks like provisioning, security updates, and maintenance, allowing developers to concentrate on their code.

#### **Comprehensive Integration**

Offers integration with AWS services like Lambda, API Gateway, Route 53, and X-Ray, enhancing application functionality. It also supports CI/CD through GitHub/CodeCommit, facilitating continuous code deployments.

#### **Built-in Security and Compliance**

Provides encryption in transit and integrates with AWS IAM for access management, ensuring a secure environment for applications.

#### **Custom Domains and HTTPS**

Supports the use of custom domains with AWS-managed SSL certificates for HTTPS, enhancing user trust and application security.

#### **Monitoring and Health Checks**

Utilizes Amazon CloudWatch for detailed metrics and logging, coupled with automatic health checks and recovery for maintaining optimal application performance.

#### **Flexible Configuration**

Allows the use of environment variables for easy application configuration without modifying code, accommodating dynamic changes like database connections or API keys.

#### **Simple Pricing**

Offers a straightforward pricing model based on compute and memory usage, aligning costs closely with resource consumption.

### **App Runner** Use Cases

#### **Web Hosting**

Simplifies deploying web applications, APIs, microservices, and websites, integrating easily with services like Amazon RDS, ElastiCache, SQS, and SNS for enhanced functionality without infrastructure management.

#### **Serverless Development**

Ideal for serverless applications, App Runner automatically adjusts to traffic fluctuations, eliminating server management and enabling efficient resource utilization.

#### **CI/CD**

Facilitates continuous integration and deployment by connecting with SCM tools such as GitHub and Bitbucket, supporting automatic updates and streamlined code delivery.

#### **Container Deployment**

Supports deploying both container images and source code, aiding in containerizing existing applications or developing new ones for the AWS ecosystem.

#### **Microservices and Prototyping**

Serves microservices architectures by allowing independent deployment and scaling. It also accelerates prototyping, enabling rapid deployment and iteration.

#### **E-commerce and CMS**

Meets the demands of e-commerce platforms and content management systems, providing a scalable backend that adjusts to traffic changes and content management needs.

#### **Educational Platforms and MVPs**

Supports educational tools with variable usage patterns and assists startups in launching MVPs quickly, facilitating product validation with minimal upfront investment.

#### **Analytics and Data Processing**

Hosts applications for data processing and analytics dashboards, efficiently managing compute resources for background tasks and data visualization.

## **AWS Elastic Beanstalk**

AWS Elastic Beanstalk, similar to AppRunner, allows the deployment of applications on AWS without managing the underlying infrastructure. However, Elastic Beanstalk utilizes EC2 infrastructure, to which you have access and can configure as needed. It supports a plethora of programming languages out of the box, provided in various forms, not only in containerized form as with AppRunner.

### **Elastic Beanstalk** Key Features

#### **Automated Resource Provisioning**

Elastic Beanstalk automatically provisions resources like EC2 instances, load balancers, and auto-scaling policies, allowing for hassle-free application deployment without manual infrastructure management.

#### **Comprehensive Language and Platform Support**

Supports a broad array of languages and platforms, including Java, .NET, PHP, Node.js, Python, Ruby, Go, and Docker, catering to diverse development needs.

#### **Simplified Deployment Process**

Enables straightforward application deployment by allowing developers to upload code or container images, with Elastic Beanstalk handling the subsequent rollout to the provisioned environment.

#### **Dynamic Scaling**

Automatically adjusts resources to match traffic demands, scaling applications vertically (modifying EC2 instance sizes) or horizontally (adding more instances) as needed.

#### **Robust Monitoring and Health Management**

Features built-in application monitoring and health checks, ensuring high availability by restarting failed instances or deploying replacements.

#### **Customizable Environments**

Offers environment customization through .ebextensions files for detailed configuration adjustments, including security groups and EC2 instance types.

#### **Continuous Deployment Integration**

Facilitates continuous deployment from source control systems like GitHub, enabling streamlined code updates and deployments.

#### **Environment Management**

Allows management of resources as a single logical entity or environment, with support for creating multiple environments for development, testing, production, etc.

#### **Lifecycle Resource Management**

Manages the lifecycle of environment resources, including provisioning and cleanup during scaling events or environment creation and termination.

### **Elastic Beanstalk** Use Cases

#### **Web Application Hosting**

Elastic Beanstalk facilitates the effortless deployment and management of web applications, eliminating the need for manual infrastructure provisioning and management, including servers and load balancers.

#### **Continuous Application Deployment**

Offers seamless integration with source control systems such as GitHub, enabling continuous deployment and updates to applications with minimal downtime.

#### **Scalability**

Features automatic scaling capabilities, adjusting the number of instances according to incoming traffic to maintain optimal application performance and availability.

#### **Application Migration**

Simplifies the migration process for existing applications from on-premises or other hosting solutions to AWS, ensuring a smooth transition to the cloud environment.

#### **AWS Services Integration**

Allows applications to easily integrate with a wide range of AWS services, including RDS for databases, S3 for storage, and SQS for messaging and queue management, enhancing application functionality.

#### **Simplified Management**

Manages all underlying infrastructure tasks such as provisioning, patching, and monitoring, freeing developers to focus on coding and innovation withou the burden of server management.

## **Amazon Elastic Container Service (ECS)**

The key features of both ECS and EKS were already discussed in the previous article "[The orchestration of containers on AWS](https://blowstack.com/blog/the-orchestration-of-containers-on-aws)"; therefore, only the use cases will be covered here.

### **ECS** Use Cases

#### **Microservices Deployment**

Facilitates the scalable orchestration of microservices-based applications using containers, allowing for independent deployment and inter-service communication.

#### **CI/CD Integration**

Seamlessly integrates with version control systems for continuous deployment and automated updates, enhancing the software development lifecycle.

#### **Serverless Architectures**

With the Fargate launch type, ECS offers a serverless option, managing server provisioning and scaling so users can focus on container management.

#### **Batch and Data Processing**

Ideally suited for executing batch jobs and data processing tasks, ECS schedules and auto-scales tasks without the need for dedicated servers, efficiently handling large data volumes.

#### **Backend Services for Applications**

Provides a reliable, secure, and scalable hosting solution for backend services and microservices supporting front-end interfaces, ensuring high availability.

#### **Media Processing**

Utilized for high-throughput processing of unstructured data, including video, image, and audio files for transcoding and metadata extraction, distributing tasks for enhanced performance.

## **Amazon Elastic Kubernetes Service (EKS)**

Please refer to the previous paragraph for information on the key features of EKS.

### **EKS** Use Cases

#### **Microservices Deployment**

Streamlines deploying containerized microservices, offering independent deployment and inter-service communication, enhanced by Kubernetes' service discovery and load balancing capabilities.

#### **CI/CD Integration**

Seamlessly integrates with version control systems such as GitHub for automated deployments, supporting continuous integration and delivery workflows for Kubernetes applications.

#### **Serverless Computing with Fargate**

Offers a serverless option by integrating with AWS Fargate, removing the need for server provisioning and management, allowing developers to concentrate on their containerized applications.

#### **Machine Learning Workloads**

Supports machine learning frameworks like TensorFlow, MXNet, and PyTorch, with GPU support for handling complex tasks efficiently, facilitating scalable ML pipelines and inference processes.

#### **High Availability Applications**

Ensures high application availability across multiple availability zones, utilizing Kubernetes' self-healing features and AWS services for robust load balancing and resilience.

#### **Resilient Microservices Architectures**

Enhances microservices architectures with Kubernetes' native features and AWS services like Cloud Map or VPC Lattice for resilient service discovery and networking.

#### **Efficient Batch Processing**

Manages batch jobs effectively, dynamically allocating resources for data processing, scientific simulations, and other batch-oriented workloads.

#### **Hybrid and Multi-Cloud Flexibility**

Supports hybrid and multi-cloud deployments, allowing Kubernetes workloads to run on AWS, on-premises, or across other cloud platforms, ensuring flexibility and avoiding vendor lock-in.

#### **Disaster Recovery**

Leverages Kubernetes and AWS services integration for disaster recovery strategies, maintaining high availability and data integrity across applications.

#### **IoT and Edge Computing**

Suitable for IoT and edge computing, enabling Kubernetes workloads to be deployed closer to data sources or users, reducing latency and optimizing data processing.

#### **Big Data and Analytics**

Facilitates running big data and analytics workloads, using Kubernetes to orchestrate scalable data processing applications for analytics and real-time data insights.

#### **Gaming Platforms**

Delivers the scalability and performance required for online gaming applications, ensuring smooth and responsive experiences for a large number of simultaneous users.

## Amazon EMR

Amazon EMR provides a platform where Big Data frameworks can be deployed on fully managed underlying hardware.

### EMR Key Features

#### **Fully Managed Big Data Frameworks**

EMR automates the deployment and management of popular big data frameworks such as Hadoop, Spark, Presto, and Hive, along with their dependencies, eliminating the need for manual setup and management.

#### **Quick and Easy Cluster Setup**

Launching EMR clusters is straightforward and can be done within minutes through a few clicks in the AWS Management Console or via API calls, provisioning all necessary infrastructure swiftly.

#### **Dynamic Auto-Scaling**

To optimize costs and performance, EMR supports the automatic scaling of clusters, adjusting their size based on the workload by adding or removing instances as required.

#### **Seamless AWS Integration**

EMR clusters can seamlessly access and process data stored in AWS services like S3, DynamoDB, and Redshift, facilitating efficient data analysis workflows.

#### **Robust Security Measures**

Security in EMR is multi-faceted, including EC2-based cluster security, data encryption at rest via AWS KMS, and network isolation with Amazon VPC.

#### **Comprehensive Monitoring and Logging**

**I**ntegrated with CloudWatch, EMR provides detailed monitoring, logging, and debugging tools for both applications and infrastructure.

#### **Flexible Computing Options**

EMR offers various computing options to meet diverse workload needs, including On-Demand and Spot Instances across different EC2 instance types.

#### **Performance Optimization**

With continuous updates and enhancements to the underlying big data frameworks, EMR ensures optimized performance and efficiency of data processing tasks.

#### **Broad AWS Ecosystem Integration**

The service is designed to work cohesively with AWS's data lakes, analytics, and machine learning services, enabling the development of extensive big data applications.

#### **Highly Customizable Environment**

Users have the flexibility to tailor cluster settings, select specific software versions, choose EC2 instance types, and run custom applications in conjunction with standard big data frameworks.

### EMR Use Cases

#### **Efficient Large-Scale Data Processing**

EMR excels in processing enormous datasets using distributed computing with optimized versions of Hadoop and Spark, ideal for log analysis, clickstream analytics, and machine learning on extensive datasets.

#### **Data Warehousing and Lakes**

It facilitates the construction of data warehouses and analytics data lakes, enabling data ingestion from diverse sources into efficient formats like Parquet or ORC, and supports querying with Hive or Spark SQL over scalable S3 storage.

#### **Batch and Stream Processing**

Suited for regular batch jobs to transform data, and real-time stream processing from sources like social media or IoT devices, EMR enhances timely data analysis and decision-making.

#### **Interactive Queries and Data Exploration**

Offers the capability for analysts to perform interactive SQL queries using Spark SQL or Presto, and data scientists to explore data, build, and deploy machine learning models using notebook environments like Jupyter.

#### **Comprehensive Analytics and ML**

Supports complex data analytics, predictive modeling, and AI by running analytical queries and developing machine learning models with frameworks such as Apache Spark MLlib and TensorFlow.

#### **Diverse Application Support**

From log aggregation and monitoring, financial risk modeling, and fraud detection, to powering recommendation engines and processing geospatial data for location-based services, EMR serves a broad spectrum of use cases.

#### **Specialized Workloads**

It's also applied in genomics for processing genetic data, contributing to research in life sciences, and in interactive data visualization and exploration for insights.

## References

[Compute services](https://docs.aws.amazon.com/whitepapers/latest/aws-overview/compute-services.html)

[What is Compute? - Enterprise Cloud Computing Explained - AWS](https://aws.amazon.com/what-is/compute/)

[Compute on AWS - Amazon Web Services](https://aws.amazon.com/products/compute/)

[Free Compute Services on AWS](https://aws.amazon.com/free/compute/)

[What is The Monte Carlo Simulation? - AWS](https://aws.amazon.com/what-is/monte-carlo-simulation/#:~:text=The%20Monte%20Carlo%20simulation%20is%20a%20probabilistic%20model%20that%20can,home%20and%20office%20is%20fixed.)

[Spot Instances](https://aws.amazon.com/aws-cost-management/aws-cost-optimization/spot-instances/)

[Spot instances for HPC workload: use cases](https://repost.aws/questions/QUXAlRptdCRM67OuMNQ-0aQw/spot-instances-for-hpc-workload-use-cases)

[When to Use Spot Instances - Overview of Amazon EC2 Spot Instances](https://docs.aws.amazon.com/whitepapers/latest/cost-optimization-leveraging-ec2-spot-instances/when-to-use-spot-instances.html)

[Amazon EC2 Dedicated Hosts FAQs - Amazon Web Services | What are the benefits of using Dedicated Hosts?](https://aws.amazon.com/ec2/dedicated-hosts/faqs/)

[Placement groups - Amazon Elastic Compute Cloud](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html)

[What is Amazon Lightsail? - Amazon Lightsail](https://docs.aws.amazon.com/lightsail/latest/userguide/what-is-amazon-lightsail.html)

[What are the differences between Amazon EC2 and Amazon Lightsail?](https://repost.aws/knowledge-center/lightsail-differences-from-ec2)

[What is AWS Lambda? - AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)

[Common Lambda application types and use cases - AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/applications-usecases.html)

[Amazon ECS on AWS Fargate](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/AWS_Fargate.html)

[AWS Fargate - Amazon EKS](https://docs.aws.amazon.com/eks/latest/userguide/fargate.html)

[Welcome - AWS Outposts](https://docs.aws.amazon.com/outposts/latest/APIReference/Welcome.html)

[AWS Batch Documentation](https://aws.amazon.com/documentation-overview/batch/)

[AWS Batch Use Cases](https://aws.amazon.com/batch/use-cases/)

[What is AWS App Runner?](https://docs.aws.amazon.com/apprunner/latest/dg/what-is-apprunner.html)

[Getting started with App Runner](https://docs.aws.amazon.com/apprunner/latest/dg/getting-started.html)

[AWS Elastic Beanstalk Documentation](https://aws.amazon.com/documentation-overview/elasticbeanstalk/)

[Using Elastic Beanstalk with other AWS services - AWS Elastic Beanstalk](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/AWSHowTo.html)

[AWS Elastic Beanstalk FAQs - Amazon Web Services (AWS) | Who should use AWS Elastic Beanstalk?](https://aws.amazon.com/elasticbeanstalk/faqs/)

[Amazon EMR Documentation](https://docs.aws.amazon.com/emr/)

---

BlowStack: AWS practice exams and courses, https://blowstack.com/practice-exams
