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.
2. Choosing the Right AWS 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 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.
5. Quick Poll
New to Containers Familiar with Containers Using Containers in
Production
6. Highlights
● Introduction
● Advantages of Using AppRunner
● AppRunner vs Other AWS Services
● Use Cases
● Billing and Cost
● Limitations
● Future of AppRunner
● Conclusion
7. 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.
9. ● 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
11. ● 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
12. A monolith is a good architecture for
accommodating rapid growth in features,
engineers, and customers.
– Snap Engineering Blog
14. 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
16. ● 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
17. ● 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
19. ● 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
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
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
24. ● (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 💣
26. ● 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
27. 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