CONTAINER EDITION
AHMEDABAD
Choosing the Right AWS Container Service:
An In-Depth Analysis of AppRunner
Dhaval Nagar, Founder @ AppGambit, AWS Consulting Partner
AWS SME, AWS Hero
● Founder @ APPGAMBIT, AWS Consulting Partner
● Lead Architect @ Vizabli, Inc.
● 12x AWS Certified
● AWS Hero (since 2020)
● AWS Certification SME
● AWS Surat User Group Lead
● Practicing Barista
Dhaval Nagar
In a world where technology is growing more
complex by the day, finding simple solutions can be
like finding a needle in a haystack.
Yet, simplicity remains our guiding star, especially in
the world of cloud computing.
Quick Poll
New to Containers Familiar with Containers Using Containers in
Production
Highlights
● Introduction
● Advantages of Using AppRunner
● AppRunner vs Other AWS Services
● Use Cases
● Billing and Cost
● Limitations
● Future of AppRunner
● Conclusion
Embracing containers doesn't mean diving into
complexities. It's about harnessing simplicity to
deliver software efficiently, securely, and reliably.
With the right tools, we can turn the cloud into a clear
sky.
Introduction
● Containers is the most popular method for Modern Software Delivery
● Container Rollouts are tedious and operations-heavy
● AppRunner GA released in May 2021
● Simple Operations from Source Code (Container) to Web URL
● EC2, ECS with EC2, EKS, ECS with Fargate and AppRunner
● All the options have varying internal complexities and requires certain
experience
● (Somewhat) Answer to Google Cloud Run
● Google App Engine (2008) was by far (and ahead) the best example of
Source Code to Web Service abstraction
A monolith is a good architecture for
accommodating rapid growth in features,
engineers, and customers.
– Snap Engineering Blog
Key Advantages of AppRunner
● Simplified Interface
○ Input: Source Code or Container Image
○ Output: Custom URL
● **Minimal AWS Knowledge
● Automatic Deployment
● Automatic Scaling
○ Simple Scaling Configuration
○ Pause / Resume
● Integration with AWS Ecosystem
○ Secrets Manager & SSM Parameter Store
○ Route53 for Custom Domain
○ WAF for Web Security
○ VPC Connectivity for Private or Internal Access
AppRunner vs Other Services
● EC2
○ Knowledge of VPC and EC2
○ Right Sizing EC2
○ Complex CI/CD Pipeline
○ Auto Scaling EC2 and Application Load Balancer (ALB)
● ECS (with EC2 or Fargate)
○ Knowledge of ECS (Task Definition, Tasks, Services, etc)
○ Auto Scaling with ALB
○ Complex CI/CD Pipeline
● EKS
○ Kubernetes is Hard (for everyone)
● Lambda
○ Per Request Execution Model
○ Complex Architecture
● Almost all the options require moderate AWS experience
○ IAM, EBS Volumes, VPC Networking
● Each service is designed for different use case
○ EC2 vs ECS for better control
○ ECS vs EKS for better orchestration
○ ECS vs Lambda for better optimisation of the resources
● Cost and Operational Overhead
Use Cases
● Containers is the most popular method for Modern Software Delivery
● Faster Time to Release
● Backend for Frontend or Full-stack Applications
● Service with less native infrastructure complexities
○ Front-end -> APIs -> Data Store
● Team with Minimal (Moderate) AWS Infrastructure Experience
● Suitable for Dev / Staging Workloads
● Suitable for **Monolithic Applications
● Auto Scaling
● Pause/Resume
Billing and Cost
● (Generally speaking) AWS is Costly
● All Services follow Granular Usage Metering and Pricing
● AppRunner Core Metering
○ Provisioned Containers - Minimum Configuration
○ Active Container - Auto Scaled based on Concurrency
○ $1 Auto Deployment - Deploy new changes automatically
○ Build Time Fees - Packaging Source to Container
● There are 100 more ways you will still be billed
AppRunner ECS EKS
Ease of Use Designed to be Simple
Source-to-Service Model
Requires more configurations
AWS manages the orchestration
Provides the most control but also
requires the most management.
Fully managed Kubernetes service,
comes with Kubernetes complexities
as well
Flexibility and
Control
Somewhat limited in its
configuration options
Strikes a balance between
simplicity and control
Offers the most control and flexibility.
You can leverage the entire
Kubernetes ecosystem
Scaling Limited Scaling Control Both the services offer more detailed scaling options. Can set custom
metrics (such as CPU utilization or memory usage) for auto-scaling,
allowing for more fine-tuned control.
Cost Simplified pricing model based on
request counts and compute usage
Both the services have more complex pricing models. You pay for the AWS
resources (e.g., EC2 instances or Fargate tasks) that you use.
Use Case Suitable for simple applications great for more complex
applications that need more
control over their environment
Best for complex, large-scale
applications that require the robust
orchestration capabilities of
Kubernetes
Limitations of AppRunner
● (Somewhat) Designed for Simplicity!!
○ Secret Variables and Parameters? Modify IAM Role Policy 💥
○ Custom Domain? Configure Route53, Alias, Certification Validation 🛠
○ Use private database? VPC, Security Group, NAT Gateway 😱
● Single PORT Issue
○ Supports only one TCP Port
○ This can be problem for some Web Services
○ For example, HTTP and WebSocket on different ports
● Concurrency and Auto Scaling
○ (Strange) Request-based Concurrency
○ Effort to reach to right configurations
● Management of Environment Variables
○ Change or Rotate Variables will require Re-Deployment of the Service 💣
Future of AppRunner
● There is no similar AWS service in this category as of now
● Lot of key features are added in the last few quarters
○ More vCPU and RAM Configs
○ WAF Integration
○ HTTPS Auto Redirection
● The service trades simplicity with customization
Conclusion
● AppRunner is an excellent Simple Container Service
● Simple and Faster Time to Release
● Experienced AWS Devs will definitely find this useful
● Simple Pricing, Auto Deployment, Easy Concurrency, and Pause/Resume are
great combo
Thank You
https://www.linkedin.com/in/dhavaln/

AppRunner DeepDive

  • 1.
  • 2.
    Choosing the RightAWS Container Service: An In-Depth Analysis of AppRunner Dhaval Nagar, Founder @ AppGambit, AWS Consulting Partner AWS SME, AWS Hero
  • 3.
    ● Founder @APPGAMBIT, AWS Consulting Partner ● Lead Architect @ Vizabli, Inc. ● 12x AWS Certified ● AWS Hero (since 2020) ● AWS Certification SME ● AWS Surat User Group Lead ● Practicing Barista Dhaval Nagar
  • 4.
    In a worldwhere technology is growing more complex by the day, finding simple solutions can be like finding a needle in a haystack. Yet, simplicity remains our guiding star, especially in the world of cloud computing.
  • 5.
    Quick Poll New toContainers Familiar with Containers Using Containers in Production
  • 6.
    Highlights ● Introduction ● Advantagesof Using AppRunner ● AppRunner vs Other AWS Services ● Use Cases ● Billing and Cost ● Limitations ● Future of AppRunner ● Conclusion
  • 7.
    Embracing containers doesn'tmean diving into complexities. It's about harnessing simplicity to deliver software efficiently, securely, and reliably. With the right tools, we can turn the cloud into a clear sky.
  • 8.
  • 9.
    ● Containers isthe most popular method for Modern Software Delivery ● Container Rollouts are tedious and operations-heavy ● AppRunner GA released in May 2021 ● Simple Operations from Source Code (Container) to Web URL
  • 11.
    ● EC2, ECSwith EC2, EKS, ECS with Fargate and AppRunner ● All the options have varying internal complexities and requires certain experience ● (Somewhat) Answer to Google Cloud Run ● Google App Engine (2008) was by far (and ahead) the best example of Source Code to Web Service abstraction
  • 12.
    A monolith isa good architecture for accommodating rapid growth in features, engineers, and customers. – Snap Engineering Blog
  • 14.
    Key Advantages ofAppRunner ● Simplified Interface ○ Input: Source Code or Container Image ○ Output: Custom URL ● **Minimal AWS Knowledge ● Automatic Deployment ● Automatic Scaling ○ Simple Scaling Configuration ○ Pause / Resume ● Integration with AWS Ecosystem ○ Secrets Manager & SSM Parameter Store ○ Route53 for Custom Domain ○ WAF for Web Security ○ VPC Connectivity for Private or Internal Access
  • 15.
  • 16.
    ● EC2 ○ Knowledgeof VPC and EC2 ○ Right Sizing EC2 ○ Complex CI/CD Pipeline ○ Auto Scaling EC2 and Application Load Balancer (ALB) ● ECS (with EC2 or Fargate) ○ Knowledge of ECS (Task Definition, Tasks, Services, etc) ○ Auto Scaling with ALB ○ Complex CI/CD Pipeline ● EKS ○ Kubernetes is Hard (for everyone) ● Lambda ○ Per Request Execution Model ○ Complex Architecture
  • 17.
    ● Almost allthe options require moderate AWS experience ○ IAM, EBS Volumes, VPC Networking ● Each service is designed for different use case ○ EC2 vs ECS for better control ○ ECS vs EKS for better orchestration ○ ECS vs Lambda for better optimisation of the resources ● Cost and Operational Overhead
  • 18.
  • 19.
    ● Containers isthe most popular method for Modern Software Delivery ● Faster Time to Release ● Backend for Frontend or Full-stack Applications ● Service with less native infrastructure complexities ○ Front-end -> APIs -> Data Store ● Team with Minimal (Moderate) AWS Infrastructure Experience ● Suitable for Dev / Staging Workloads ● Suitable for **Monolithic Applications ● Auto Scaling ● Pause/Resume
  • 20.
  • 21.
    ● (Generally speaking)AWS is Costly ● All Services follow Granular Usage Metering and Pricing ● AppRunner Core Metering ○ Provisioned Containers - Minimum Configuration ○ Active Container - Auto Scaled based on Concurrency ○ $1 Auto Deployment - Deploy new changes automatically ○ Build Time Fees - Packaging Source to Container ● There are 100 more ways you will still be billed
  • 22.
    AppRunner ECS EKS Easeof Use Designed to be Simple Source-to-Service Model Requires more configurations AWS manages the orchestration Provides the most control but also requires the most management. Fully managed Kubernetes service, comes with Kubernetes complexities as well Flexibility and Control Somewhat limited in its configuration options Strikes a balance between simplicity and control Offers the most control and flexibility. You can leverage the entire Kubernetes ecosystem Scaling Limited Scaling Control Both the services offer more detailed scaling options. Can set custom metrics (such as CPU utilization or memory usage) for auto-scaling, allowing for more fine-tuned control. Cost Simplified pricing model based on request counts and compute usage Both the services have more complex pricing models. You pay for the AWS resources (e.g., EC2 instances or Fargate tasks) that you use. Use Case Suitable for simple applications great for more complex applications that need more control over their environment Best for complex, large-scale applications that require the robust orchestration capabilities of Kubernetes
  • 23.
  • 24.
    ● (Somewhat) Designedfor Simplicity!! ○ Secret Variables and Parameters? Modify IAM Role Policy 💥 ○ Custom Domain? Configure Route53, Alias, Certification Validation 🛠 ○ Use private database? VPC, Security Group, NAT Gateway 😱 ● Single PORT Issue ○ Supports only one TCP Port ○ This can be problem for some Web Services ○ For example, HTTP and WebSocket on different ports ● Concurrency and Auto Scaling ○ (Strange) Request-based Concurrency ○ Effort to reach to right configurations ● Management of Environment Variables ○ Change or Rotate Variables will require Re-Deployment of the Service 💣
  • 25.
  • 26.
    ● There isno similar AWS service in this category as of now ● Lot of key features are added in the last few quarters ○ More vCPU and RAM Configs ○ WAF Integration ○ HTTPS Auto Redirection ● The service trades simplicity with customization
  • 27.
    Conclusion ● AppRunner isan excellent Simple Container Service ● Simple and Faster Time to Release ● Experienced AWS Devs will definitely find this useful ● Simple Pricing, Auto Deployment, Easy Concurrency, and Pause/Resume are great combo
  • 29.