How can you accelerate the delivery of new, high-quality services? How can you be able to experiment and get feedback quickly from your customers? To get the most out of the agility afforded by serverless and containers, it is essential to build CI/CD pipelines that help teams iterate on code and quickly release features. In this talk, we demonstrate how developers can build effective CI/CD release workflows to manage their serverless or containerized deployments on AWS. We cover infrastructure-as-code (IaC) application models, such as AWS Serverless Application Model (AWS SAM) and new imperative IaC tools. We also demonstrate how to set up CI/CD release pipelines with AWS CodePipeline and AWS CodeBuild, and we show you how to automate safer deployments with AWS CodeDeploy.
147. The monolith
“…asingle-tiered software application inwhichtheuser interface
and data access code arecombined into asingle program from a
single platform. Amonolithic application isself-contained, and
independent from other computing applications.”
-Wikipedia
148. Monolith = ”traditional applications”
• Pros:
• At first…
• Simple
• No over-engineering
• In-process latencies
• Single code base
• Resource efficient at small
scale
• Cons:
• Modularity is hard to enforce
as app grows
• Can only scale up!
• All or nothing deployment
• Long release cycles
• Slow to react to customer
demand
152. Methodical migration process
Evaluat
e
Plan Design Migrate Optimize
• Discovery
• Migration
patterns
• Well
Architected
• Tool
selection
• Test
planning
• Cutover
• Migration
workloads
• Migration
tools
• Validation &
cutover
• Operation
• Optimizati
on
• Migration
Readiness
Assessment
• On-boarding
• Planning and
SOW
• Portfolio
discovery
• Requirements
collection
• Landing Zone
• People -
skills and
organization
• Business
case, TCO
Visualize the cloud adoption effort from planning to operating on AWS
153. Portfolio discovery
Goals:
• Determine resource allocation in the AWS environment
• Develop a prioritized backlog of applications to feed migration
• Assess project migration costs and run costs
Evaluat
e
Discove
r &
Plan
Design Migrate Optimize
154. Questions & challenges on the migration journey
• Where to start?
• What to break out?
• Dependencies?
• Works as expected?
• Users happy?
• Does it scale?
• Does it perform?
• How to automate?
• Works as expected?
• Users happy?
• How to optimize?
Does it perform?
• How to automate?
?
? ?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
? ?
?
?
?
? ? ?
?
?
?
?
From
On-Premises Monolith
Via
Containerized Services
To
Functions & Cloud Service
158. Discovery – Portfolio Data Gathering
• Storage
• Type
• Capacity
• Utilization
• . . .
• Server
• Physical/virtu
al
• OS version
• CPU, RAM, Disk
• type,
utilization
• . . .
• Network
• Device type
• Firewall rule
• Network
connection
• . . .
• Application
• Owners,
criticality
• Characteris
tics
• Stack
• Infrastruct
ure
• . . .
159. Analysis … What Should We Look For?
• Completeness and usability
• If additional discoveryis needed,determine the actions needed to complete discovery.
• Apps, Servers,
Connections
• No. of apps and
servers
• Application and
server dependencies
• Performance
metrics
• Allocate and
right-size
target resources
• Service naming,
tagging
• Identify patterns
• Group servers and
applications
166. The 12 factor application
I. Codebase
One codebasetrackedin revision control,many
deploys
II. Dependencies
Explicitly declareand isolate dependencies
III. Config
Store config in the environment
IV. Backing services
Treatbacking services asattached resources
V. Build, release,run
Strictly separate build and run stages
VI. Processes
Executethe app as one or more stateless
processes
VII. Port binding
Exportservices via portbinding
VIII. Concurrency
Scale out via the processmodel
IX. Disposability
Maximize robustnesswith fast startup and graceful
shutdown
X. Dev/prod parity
Keep development,staging,and productionas
similar as possible
XI. Logs
Treatlogs as eventstreams
XII. Admin processes
Run admin/managementtasks as one-offprocesses
170. RUNNING CONTAINERS AT SCALE WITH ECS
Availability Zone #1 Availability Zone #2 Availability Zone #3
Scheduling and Orchestration
ClusterManager Placement Engine
199. Stateful container stores state in local disk
or local memory. Workload ends up tied to a
specific host that has state data.
eu-west-1b
Container 1
Disk
eu-west-1ceu-west-1a
209. Fast Launch
Minimize the startup time of processes:
• Scale up faster in response to spikes
• Ability to move processes to another host as needed
• Replace crashed processes faster
219. Admin / management processes are
inevitable:
• Migrate database
• Repair some broken data
• Once a week move database
records older than X to cold
storage
• Every day email a report to
this person