Professional Documents
Culture Documents
ARCHITECTURES
@neal4d
nealford.com
what problem
denitions
characteristics
AGENDA
engineering
Conways Law
organizations which design systems ... are
constrained to produce designs which are
copies of the communication structures of
these organizations
Melvin Conway
Coupling Metrics
code
artifact
afferent
efferent
x
i
t
X-Ray
xray.inf.usi.ch/xray.php
Class Dependency
Package Dependency
Azureus Packages
Attempting to
generate class
diagram crashed x-ray.
Software architecture
represents the
tension between
coupling & cohesion.
BASE
ACID
Atomic
Consistent
Isolated
Durable
Basic Availability
Soft-state
Eventual Consistency
# of users
http://highscalability.com/blog/2013/5/1/mytheric-brewer-on-why-banks-are-base-not-acidavailability.html
http://www.eaipatterns.com/docs/IEEE_Software_Design_2PC.pdf
what problem
denitions
characteristics
AGENDA
engineering
support
Microservice is the rst
architectural style developed
post-Continuous Delivery.
what problem
denitions
characteristics
AGENDA
engineering
user interface
server-side
DBA
Orders
Shipping
Catalog
products:
s You build it, you run it
pack of
enterprise architects
SOAP = RPC
REST is less brittle at integration points
too few
languages/platforms
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
too many
languages/platforms
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
explicit about
coupling
engineering
safety nets
Decentralized Governance
Decentralized Governance
Decentralized Governance
How Big?
transactional
Asynchronicity
return optimized for
ranking/aggregation,
not display
Traditional Monolith
Model
User Interface
CQRS
Query Model
User Interface
Command Model
http://codebetter.com/gregyoung/2010/02/16/cqrs-task-based-uis-event-sourcing-agh/
Reporting
Query Model
User Interface
Command Model
. . .
what problem
denitions
characteristics
AGENDA
engineering
Monitoring
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
Aggregating Monitors
Response Time
Response Time
Response Time
Aggregating Monitors
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
Synthetic Transactions
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
Correlation IDs
ID: 123
ID: 123
ID: 123
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
Engineering Consistency
integration
metrics
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
service behavior
downstream
SCM Repositories
Prefer repository per
service to monolithic
repository
Integrate via
continuous
integration
Testing Microservices
http://martinfowler.com/articles/microservice-testing/
Unit Testing
Sociable
Solitary
Integration Testing
Integration Testing
Component Testing
Component Testing
shims:
inproctester
github.com/aharin/inproctester
Plasma
github.com/jennifersmith/plasma
Component Testing
Contract Testing
Pact
github.com/realestate-com-au/pact
Pacto
github.com/thoughtworks/pacto
Janus
github.com/gga/janus
End-to-End Testing
Deployment
engineering
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
Sam Newman
production
production
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
Applications consist
of routing.
production
Blue/Green Deployments
1.1
1.1
1.1
1.2
1.2
1.2
Web server
Application
server
Database
server
Message Router
release risk
How Big?
# services
Dis-integrate
services that
monitoring shows
are no longer used
production
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
what problem
denitions
characteristics
SUMMARY
engineering
You must be
this tall to use
microservices
Efferent Coupling
efferent
Strive for low efferent
coupling for your team.
Continuous Delivery
Teams with low eerent coupling
deliver relatively independently
into a common integration
pipeline (without fearing breaking
each others builds).
?S
@neal4d
nealford.com
bit.ly/nf_ftvideo
Functional Thinking
Functional Thinking
http://shop.oreilly.com/product/0636920029687.do
Presentation Patterns
Neal Ford, Matthew McCullough, Nathaniel Schutta
http://presentationpatterns.com