Unblocking The Main Thread Solving ANRs and Frozen Frames
OReilly Software Architecture Conference: Architecture as code - objective measures of value in a changing world
1. Architecture as Code
Objective Measures of Value in a Changing World
Paula Paul & Cassie Shum
O’Reilly Software Architecture Conference, June 2019
1
11. 11
“Architecture represents
the significant design
decisions that shape a
system, where significant is
measured by cost of
change.”-- Grady Booch, blog post, March 2nd, 2006
12.
13. 13`
Developer effectiveness Deployment reliability Operational resilience
Automated development environment setup
Automated provisioning
/ extraction of test data
Various levels of
automated test suites Infrastructure as code
Independently-deployable
units
Centralized host &
application-level
monitoring
Metrics dashboards &
information radiators
Centralized logging Distributed tracing
Automated functionality
test suites
Automated security tests
Performance &
resiliency tests
Correlation ID Synthetic transactions
* Not exhaustive
Continuous Delivery pipeline
Architectural Concerns
25. Effort
Pain
Frequently
Regenerati
ng AWS
Tokens
Spark Unit
testing scala
code is slow in
CI
Spark Unit
testing scala
code is slow
locally
Case Classes for
Oracle Tables
have many
fields, difficult
to navigate --
Maintenance
Database
"differ" tool
Code
Compilation
time for Scala
Code
Local end-to-end
development
environment on
developers local
machine
- Kafka
Local end-to-
end
development
environment on
developers local
machine
- Spark
Can we use an off-
the-shelf ORM/FRM
compared to TW
developed solution?
Create separate
connector for
reports, use
unified
connector in CI
(remove test
topics)
Connectivity issues to
Oracle DB (unknown
source) -- PROD Risk
(scheduled stories for
performance testing)
Automate
secret
creation
Jenkins
Crashes often
because of
resource
constraints
Local end-to-
end
development
environment on
developers
local machine
- S3
28. 28
Deploy
Release
Product
Management
Go to Market
Pivot or Persevere
Code Monitor
Ops
Backlog
Ticket
Product
Support
Build, Run, Own Teams
Self-service operation
Release strategy
Infrastructure as code
Container and virtualization
Continuous monitoring and
alarm Design for Failure
Continuous operational
feedback
32. 32
Guardrails belong
in build pipelines
(otherwise developers ignore them)
Unit Build Secure Monito
r
Perform Promot
e
Test
Configuration
Check
Automation
Integration
Test
Fitness Tests
(can run async)
Production
Ready!
terraform
plan
terraform
apply
pytest
inspec-gcp
awspec
scout2
g-scout
pytest
locust
pumba
33. 33
What’s next?
Build vs.
Buy
Vendor Lock-
in
Fixed vs.
On-Demand
Capacity
Cost
Compliance
Vendor
Management
Global vs.
Regional
Evolvability Autonomy Complexity