Microservices is a software architectural method where you decompose complex applications into smaller, independent services. Containers are great for running small decoupled services, but how do you coordinate running microservices in production at scale and what AWS services do you use?
In this session, we will explore the reasoning and concepts behind microservices and how containers simplify building microservices based applications. We will also demonstrate how you can easily deploy and monitor microservices on Amazon EC2 Container Service.
4. Order UI User UI
Shipping
UI
Order
Service
User
Service
Shipping
Service
Data
Access
5.
6. Order UI User UI
Shipping
UI
Order
Service
User
Service
Shipping
Service
7. Order UI User UI UI
Order
Service
Service
Shipping
Service
Order UI
Order UI
User UI UIShipping
UI
Order
ServiceOrder
Service
Service
Service
Service
Service
User
Service
Shipping
Service
13. Containers are Natural for Microservices
• Simple to model
• Any app, any language
• Image is the version
• Test & deploy same artifact
• Stateless servers decrease change risk
15. Managing a Fleet is Hard
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
Server
Guest OS
AZ 1 AZ 2
AZ 3
16. What is Amazon ECS?
Amazon EC2 Container Service (Amazon ECS) is a highly
scalable, high performance container management service.
You can use Amazon ECS to schedule the placement of
containers across your cluster.
You can also integrate your own scheduler or third-party
scheduler to meet business or application specific requirements.
22. What are Microservices Challenges?
• Resource and state management
• Monitoring
• Deployment
• Service discovery
23. • 36,000,000 users
• 35 container instances running 450 containers
• 400,000 new users a day during BTS
24. What are Microservices Challenges?
• Resource and state management
• Monitoring
• Deployment
• Service discovery
25. Monitoring with Amazon CloudWatch
Metric data sent to CloudWatch in 1-minute periods
and recorded for a period of two weeks
Available metrics: CPUReservation, MemoryReservation,
CPUUtilization, MemoryUtilization
Available dimensions: ClusterName, ServiceName
27. Monitoring with Amazon CloudWatch
Use the CloudWatch monitoring scripts to monitor
additional metrics: e.g., disk space
# Edit crontab
> crontab -e
# Add command to report disk space utilization to CloudWatch every five minutes
*/5 * * * * <path_to>/mon-put-instance-data.pl --disk-space-util --disk-space-used --disk-space-avail
--disk-path=/ --from-cron
29. What are Microservices Challenges?
• Resource and state management
• Monitoring
• Deployment
• Service discovery
30. Scheduling Containers on ECS
Batch Jobs
ECS Task scheduler
Run tasks once
Batch jobs
RunTask (auto-placed)
StartTask (placed)
Long-RunningApps
ECS Service scheduler
Health management
Scale-up and scale-down
AZ aware
Grouped Containers
31. Long-running app: Deploy using the least space
minimumHealthyPercent = 50%, maximumPercent = 100%
33. Scheduling Containers: Long-running App
Blue-Green Deployments
• Define two ECS services
• Each service is associated w/ ELB
• Both ELBs in Route 53 record set
with weighted routing policy, 100%
Primary, 0% Secondary
• Deploy to Blue or Green service and
switch weights
TaskTask
Route 53
record set
with
weighted
routing
policy
0%
100%
42. • Wrapp delivers personal offers and rewards based on where you shop, dine and the brands
you follow.
• Infrastructure:
• 13 ECS Clusters
• 50+ Instances
• 90+ Services
• Technology Stack:
• Operating System – Ubunu
• Consul, Registrator, AWS(EC2, ECS, Lambda), Docker, HAProxy
• Languages - Go, Python, Java
Wrapp: Service Discovery with ELB, Consul and HAProxy
44. Service Discovery with Weaveworks
• DNS interface for cross-host container communication
• Gossip protocol to share grouped updates
• Overlay network between hosts