Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
My expectations:
100-level AWS
constructs
Familiarity with
AWS services
My expectations:
100-level AWS
constructs
Familiarity with
AWS services
Architectures we
will cover:
N-tier
Containerized
Serverless
Implications on:
Cost
Performance
Team structure
My expectations:
100-level AWS
constructs
Familiarity with
AWS services
Architectures we
will cover:
N-tier
Containerized
Serverless
Implications on:
Cost
Performance
Team structure
Deep dive w/
Polybit:
Practical
DevOps
techniques in an
increasingly
serverless world
Expecting
scale
Focus on
features
Lean IT
department
Low cost ==
Long runway
Isn't everybody?
Reliability
Performance
Cost efficiency
Security
Expecting
scale
Focus on
features
Lean IT
department
Reliability
Performance
Cost efficiency
Low cost ==
Long runway
Security
Load Balancer
App Server
DB Master
Data Center 1
App Server
DB Stby
Data Center 2
EC2
EC2
RDS
Stby
Availability Zone A
Availability Zone B
ExampleApp-Prod
ExampleApp-Test
Amazon CloudWatch
Service-wide
resource
monitoring
Log management
Specialist services
Block/object
storage
Caching
DNS
ELB
EC2
EC2
RDS
Stby
Availability Zone A
Availability Zone B
ExampleApp-Prod
ExampleApp-Test
AWS Security
Identity and access
management
VPC networking
Amazon CloudWatch
Service-wide
resource
monitoring
Log management
Specialist Services
Block/Object
Storage
Caching
DNS
ELB
EC2
EC2
RDS
Stby
Availability Zone A
Availability Zone B
ExampleApp-Prod
ExampleApp-Test
Production-grade stack
Tier
Spec
Monthly
Cost
Tier
Spec
Monthly
Cost
Load
Balancer
1x
$18.30
Load
Balancer
1x
$18.30
Application
Server
1 x t2.micro
$9.52
Application
Server
2x
m4.large
$121.18
Database
Server
1 x t2.micro
100 GB
$23.95
Database
Server
2x
m4.large
100 GB
$198.93
Total Monthly
$51.77
Total Monthly
$320.11
Containerized Architectures
Container-based N-tTier
ELB
Web
Web
Server
Server
Web
Web
Server
Server
Stby
DB
Hypervisor
Cont.
Instances
Cont.
Cont.Instances
Instances
ELB
Web
Web
Server
Server
Web
Web
Server
Server
Stby
DB
Hypervisor
RDS Standby
RDS Master
Cont.
Instances
Cont.
Cont.Instances
Instances
Container Registry
Dockerfiles
docker-compose.yml
Services/tasks
*Amazon RDS managed
RDS Standby
Scheduler
RDS Master
Cont.
Instances
Cont.
Cont.Instances
Instances
Service discovery
Container Registry
Dockerfiles
docker-compose.yml
Services/tasks
Container instance
scaling
RDS Standby
Scheduler
Cont.
Instances
Cont.
Cont.Instances
Instances
Container-level
logging
Tier
Spec
Monthly
Cost
Load
Balancer
1x
$18.30
Load
Balancer
1x
$18.30
Application
Server
2x
m4.large
$121.18
Container
Instances
2x
m4.large
$121.18
Database
Server
2x
m4.large
100 GB
$198.93
Database
Server
2x
m4.large
100 GB
$198.93
$320.11
Total Monthly
Total Monthly
$320.11
N-tier/Container DevOps
Opinion time:
Traditional VM and container
architectures are rooted in
emulating classic physical
servers
Packages/dependencies
Users/groups
Build sources
Files
Bootstrapping commands
Services
Security
Cluster-level configuration
Container instances
Supporting core services
Packages/dependencies
Users/groups
Build sources
Files
Bootstrapping commands
Services
Security
Cluster-level configuration
Container instances
Supporting core services
Why???
!=
Developer
DevOps
Engineer
Test
Ops
Main.
Monolithic
1946
ENIAC
Containers
1979
chroot process isolation
2013
Docker
Server-Centric
Architecture
Historical perspective
Cloud VMs
2006 2009 2010
EC2 ELB RDS
Whats next?
Tipping point for modern startup adoption
Serverless
Images/Video
Desktop
*aaS
Mobile
Amazon
CloudFront/
Amazon S3
HTML/CSS/JS
Images/Video
Amazon
CloudFront/
Amazon S3
Desktop
api.example.com
*aaS
Amazon
API Gateway
Mobile
HTML/CSS/JS
AWS Lambda
Dynamic Requests
Images/Video
Amazon
CloudFront/
Amazon S3
Desktop
api.example.com
HTML/CSS/JS
AWS Lambda
Dynamic Requests
*aaS
Amazon
API Gateway
Persistence/Database
Mobile
Amazon
DynamoDB
Flourish
Unit
10
200
kb
5
4
kb
2 1r/1w
500
kb
Charge
CloudFront Data Transfer
CloudFront Request Pricing
S3 Request Pricing (15% cache-hit)
S3 Data Transfer
API Gateway Data Transfer
API Gateway Request Pricing
Lambda Request Pricing
Lambda Duration Cost
DynamoDB IO Pricing
DynamoDB Storage
Total Monthly Cost / User
Monthly Cost
0.0051
0.0003
0.00102
0.004335
0.00054
0.00525
0.0003
0.000312
0
0.000125
$0.017282
Microservice thinking
Images/Video
CloudFront/S3
HTML/CSS/JS
AWS Lambda
API Gateway
DynamoDB
Service 0:
CoreSite
Dev
Test
Ops
Main.
Images/Video
CloudFront/S3
Service 0:
CoreSite FrontEnd
HTML/CSS/JS
Dev
Test
Ops
Main.
AWS Lambda
API Gateway
DynamoDB
Service 1:
CoreSite API
Service
Mitosis @ 2
Pizzas
and so on
Let your teams pick the right tools for the job
Service 0
Dev
Test
Ops
Main.
Service 1
Dev
Test
Ops
Main.
Service 2
Dev
Test
Ops
Main.
Let your teams pick the right tools for the job
Core Svcs
Route 53
DNS
Service 0
Dev
Test
Ops
Main.
Service 1
Dev
Test
Ops
Main.
API Gateway
Service 2
Account Mgmt
Dev
Test
Ops
Main.
Let your teams pick the right tools for the job
Core Svcs
Route 53
DNS
Service 0
Dev
Test
Ops
Main.
Service 1
Dev
Test
Ops
Main.
API Gateway
Big Data
Mobile/UX
Amazon
Redshift
AWS
Mobile Hub
Amazon EMR
Amazon
Mobile Analytics
Amazon
Kinesis
Amazon
Cognito
Service 2
Account Mgmt
Dev
Test
Ops
Main.
Service 0
Dev
Ops
Route 53
DNS
API Gateway
Account Mgmt
Mobile/UX
Amazon
Redshift
AWS
Mobile Hub
Amazon EMR
Amazon
Mobile Analytics
Amazon
Kinesis
Amazon
Cognito
Dockerized
Service
Test
Main.
Dev
Test
Ops
Main.
Service 1
Dev
Test
Ops
Main.
VM Based N-Tier
Service
Service 2
Dev
Dev
Big Data
Test
Test
OpsMain.
Ops
Main.
Serverless
Service
0
Big Data
Mobile/UX
Service
Dev
Ops
Route 53
DNS
Test
Main.
Dev
Ops
Test
Main.
Service 1
Dev
Test
Ops
Main.
API Gateway
Amazon
Redshift
AWS
Mobile Hub
Amazon EMR
Amazon
Mobile Analytics
Amazon
Kinesis
Amazon
Cognito
Service 2
Account Mgmt
Dev
Test
Ops
Main.
Unlocking Practical
Serverless Development
Scalability
Decreased cost
Organizational
Compartmentalization
UNIX philosophy
Sharing
Discovery
Environments
Deployment pipelines
Microservice versioning
Legacy app interoperability
Initialize Workspace
$ lib init
Create Service
$ lib create
Client Request
https://f.yourdomain.com/your-service
DNS
(Route 53)
Gateway
(API Gateway)
your-service
(Lambda)
MY_VARIABLE=test
STRIPE_API_KEY=watlol
DATABASE_URL=localhost
index.js
// load .env files
require(dotenv);
const stripe = require(stripe);
// do something
process.env.STRIPE_API_KEY
package.json
.dev.env
.staging.env
.prod.env
.gitignore
index.js
deploy
$ deploy-command --env prod
- package.json
- .env
- index.js
- package.json
- .env
- index.js
your-service_prod
(Lambda)
Microservice versioning
Client Request
your-service/VERSION
your-service:VERSION
(Lambda)
Microservice versioning
deploy
{Publish: true}
your-service:Number
(Lambda)
{Version:
Number}
createAlias
VER :: Number
Microservice versioning
deploy
{Publish: true}
your-service:NUMBER
(Lambda)
{Version:
NUMBER}
Mapping:
1.0.0 :: Number
Microservice versioning
Client Request
your-service/VERSION
Gateway
(Elastic Beanstalk)
DNS
(Route 53)
your-service
(Lambda)
Version Mapping
(DynamoDB)
http
lambda.invoke()
f.yourdomain.com/()
Sharing
Discovery
Environments
Deployment pipelines
Microservice versioning
Legacy app interoperability
Route 53
EBS
API Gateway
DynamoDB
Lambda
Node.js: dotenv
CLI tools...
Sharing
Discovery
Environments
Deployment pipelines
Microservice versioning
Legacy app interoperability
Final thought
Expecting
scale
Focus on
features
Lean IT
department
Reliability
Performance
Cost efficiency
Low cost ==
Long runway
Security
Thank you!
Paul Underwood paulu@amazon.com
Keith Horwood keith@polybit.com
Please dont forget to fill out your survey!