microservices on aws using aws lambda and docker containers
TRANSCRIPT
![Page 1: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/1.jpg)
Microservices on AWS usingAWS Lambda and Docker ContainersDanilo Poccia ‒ AWS Technical Evangelist
@danilop
![Page 2: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/2.jpg)
Why AWS Lambda?
![Page 3: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/3.jpg)
AWS Lambda
Event driven,fully managed compute
![Page 4: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/4.jpg)
AWS Lambda
Focus on business logic,not infrastructure
Customer uploads code, AWS Lambda handles:
Capacity Scaling
Deployment Fault tolerance
Monitoring Logging
. . .
![Page 5: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/5.jpg)
AWS Lambda
Automatic scaling
Customers pay only for what they use,
no over/under provisioning
![Page 6: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/6.jpg)
AWS Lambda
Fine-grained pricing
Price compute time by 100ms, even short jobs make sense
Low request charge No hourly, daily, or monthly minimums
Free tier
![Page 7: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/7.jpg)
Events come in many different shapes & sizes
S3 event notifications
DynamoDB Streams
Kinesis events Custom events
![Page 8: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/8.jpg)
Why Docker?
![Page 9: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/9.jpg)
Virtual Machine Container
![Page 10: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/10.jpg)
Docker on AWS
AmazonLinux
A supported and maintained Linux
image provided by Amazon Web Services
Amazon EC2 Container Service
Highly scalable, high performance container management service
AWSElastic
BeanstalkFor deploying and
scaling web applications and
services
![Page 11: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/11.jpg)
Amazon EC2 Container Service
Key Components
Container InstancesClusters
Tasks Task Definitions
Amazon EC2 instances
Docker daemon
Amazon ECS agent
![Page 12: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/12.jpg)
https://github.com/aws/amazon-ecs-agent
![Page 13: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/13.jpg)
Amazon EC2 Container Service
Key Components
Container Instances Clusters
Tasks Task Definitions
Regional
Resource pool
Grouping of Container Instances
Start empty, dynamically scalable
![Page 14: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/14.jpg)
Amazon EC2 Container Service
Key Components
Container Instances Clusters Tasks
Task Definitions
Unit of work
Grouping of related Containers
Run on Container Instances
![Page 15: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/15.jpg)
Amazon EC2 Container Service
Key Components
Container Instances Clusters
Tasks Task Definitions
[ { "image": "mysql", "name": "db", "cpu": 10, "memory": 500, …
![Page 16: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/16.jpg)
Tasks are defined via Task Definitions[ { "image": "tutum/wordpress-stackable", "name": "wordpress", "cpu": 10, "memory": 500, "essential": true, "links": [ "db" ], "entryPoint": [ "/bin/sh", "-c" ], "environment": [ … ], "portMappings": [ { "containerPort": 80, "hostPort": 80 } ] },
{ "image": "mysql", "name": "db", "cpu": 10, "memory": 500, "essential": true, "entryPoint": [ "/entrypoint.sh" ], "environment": [ { "name": "MYSQL_ROOT_PASSWORD", "value": "pass" } ], "portMappings": [] }]
![Page 17: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/17.jpg)
[ { "image": "tutum/wordpress-stackable", "name": "wordpress", "cpu": 10, "memory": 500, "essential": true, "links": [ "db" ], "entryPoint": [ "/bin/sh", "-c" ], "environment": [ … ], "portMappings": [ { "containerPort": 80, "hostPort": 80 } ] }, ]
{ "image": "mysql", "name": "db", "cpu": 10, "memory": 500, "essential": true, "entryPoint": [ "/entrypoint.sh" ], "environment": [ { "name": "MYSQL_ROOT_PASSWORD", "value": "pass" } ], "portMappings": [] }]
From Docker Hub
10 CPU Units (1024 is full CPU), 500 Megabytes of Memory
Environment Variables
No external ports exposed
Tasks are defined via Task Definitions
![Page 18: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/18.jpg)
[ { "image": "tutum/wordpress-stackable", "name": "wordpress", "cpu": 10, "memory": 500, "essential": true, "links": [ "db" ], "entryPoint": [ "/bin/sh", "-c" ], "environment": [ … ], "portMappings": [ { "containerPort": 80, "hostPort": 80 } ] },
[ { "image": "mysql", "name": "db", "cpu": 10, "memory": 500, "essential": true, "entryPoint": [ "/entrypoint.sh" ], "environment": [ { "name": "MYSQL_ROOT_PASSWORD", "value": "pass" } ], "portMappings": [] }]
Essential to our TaskDocker link to mysql container
Expose port 80 in container to port 80 on host
Tasks are defined via Task Definitions
![Page 19: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/19.jpg)
Amazon EC2 Containers AWS LambdaOn-Premises
Weeks Minutes Seconds Milliseconds
![Page 20: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/20.jpg)
Demo Architecture
Content Management System Prototype
![Page 21: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/21.jpg)
Lambda Function
S3 Bucket#1
S3 Bucket#2
DynamoDBTable
ECSTask
ECSCluster
Images +
Medatada
Upload Object + Metadata
Event Notification
Thumbnail
Write Metadata
Run
Schedule
Read Metadata
Write “index.html”
1
2
3
![Page 22: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/22.jpg)
<demo> …
</demo>
![Page 23: Microservices on AWS using AWS Lambda and Docker Containers](https://reader031.vdocuments.net/reader031/viewer/2022013111/55a686651a28ab31138b45cf/html5/thumbnails/23.jpg)
@danilop