Getting Started with Containers in the Cloud What are containers? A container is a standard unit of software that packages up code and all its dependencies so the application runs quickly and reliably from one computing environment to another. A popular, widely-used container platform is Docker. More on that here: https://www.docker.com Microservices What are Microservices? Developing a single application as • Suite of small services • Each running in its own process / owns it‘s data • Communicating with lightweight mechanisms (Definition: M. Fowler / J. Lewis) https://martinfowler.com/articles/microservices.html Technical Challenges SW-Architecture HW / Network Tools How to split a monolith? Database CQRS / Event Sourcing Containers + Serverless + Cloud Services CI / CD Code Repositories IDEs gRPC / REST / SOAP Network Latency CPU Speed Organisational Challenge Containers at Scale We’ve had customers running Docker on EC2 from the very beginning... EC2 But there were pain points. Things like scheduling, placing, managing and deploying containers were difficult. They wanted something to make those pain points better. + Managing many containers is hard So we built ECS ECS Easiest way to deploy and manage containers at scale Integration with entire AWS platform ALB, Auto Scaling, Batch, Elastic Beanstalk, CloudFormation, CloudTrail, CloudWatch Events, CloudWatch Logs, CloudWatch Metrics, ECR, EC2 Spot, IAM, NLB, Parameter Store, and VPC Scales to support clusters of any size Service integrations (like ALB and NLB) are at container level 1 2 3 Amazon ECS EC2 INSTANCES ECS AGENT TASK Containers TASK ECS AGENT TASK TASK AGENT COMMUNICATION SERVICE Amazon ECS API CLUSTER MANAGEMENT ENGINE KEY/VALUE STORE ECS AGENT TASK TASK Internet LOAD BALANCER LOAD BALANCER Containers Containers ... therefore we built Fargate What does Fargate mean? No worrying about scaling, underlying infrastructure, cluster resources, capacity, setup. Just give it a task definition, set some resource limits, and away you go. So you want to run a (managed) container on AWS Choose your orchestration tool 1 Choose your launch type 2 ECS EKS EC2 Fargate EC2 Fargate (announced) 160 billion analytics events per month Up to 270,000 events per second Autoscaling allows them to burst to thousands of containers to seamlessly handle demand ECS Kubernetes enters the stage ... and devops love Kubernetes What is Kubernetes (K8s)? Open source container management platform Helps you run containers at scale Gives you primitives for building modern applications