Professional Documents
Culture Documents
Architectures
@neal4d
nealford.com
what problem
characteristics
engineering
AGENDA
Service-oriented Architecture
business services BS BS BS BS BS BS
message bus
abstract enterprise-level coarse-grained services
owned and dened process choreographer
by business users
service orchestrator
no implementation - only name, input, and output
data represented as wsdl, bpel, xml, etc.
enterprise services ES ES ES ES ES ES
ExecuteTrade
application services PlaceOrder
AS ProcessClaim
infrastructure services IS
Service-oriented Architecture
business enterprise-level
concrete services BS
coarse-grained
BS BS BS
services
BS BS
custom or vendorprocess
implementations
choreographer that are one-to-
one or one-to-manyservice
relationship
orchestratorwith business
services
enterprise services ES ES ES ES ES ES
concrete
business application-level
services BS ne-grained
BS BS BS services
BS BS
service orchestrator
businessenterprise-level
concrete services BS
ne-grained
BS BS
services
BS BS
owned
BS
business services BS BS BS BS BS BS
message bus
process choreographer
service orchestrator
message bus
process choreographer
service orchestrator
enterprise services ES ES ES ES ES ES
maximize reuse
maximize canonicality
Service-oriented Architecture
business services BS BS BS BS BS BS
message bus
process choreographer
service orchestrator
enterprise services ES ES ES ES ES ES
incremental change
operationally complex
Yesterdays best
practice is tomorrows
anti-pattern.
We inadvertently build
architectures to solve
outdated problems.
Architecture is abstract
until operationalized.
nealford.com/memeagora/2015/03/30/architecture_is_abstract_until_operationalized.html
Architecture is abstract
until operationalized.
view
AngularJS AngularJS
view view
1.3.15 1.3.15
controller
CustomerInfo
controller CustomerInfo
4.3.1 controller
4.3.1
Hibernate Hibernate
ORM ORM ORM
4.3.8 4.4.1
2D 3D 4D
nealford.com/memeagora/2015/03/30/architecture_is_abstract_until_operationalized.html
what problem
characteristics
engineering
AGENDA
Domain Driven Design
Bounded Context
+
Microservices Architecture
distributed architecture
client requests client requests client requests
api layer
Microservices Architecture
separately deployed components
client requests client requests client requests
api layer
Microservices Architecture
service component
client requests client requests client requests
api layer
Microservices Architecture
bounded context
client requests client requests client requests
api layer
Microservices Architecture
service orchestration
client requests client requests client requests
api layer
Monoliths vs. Microservices
Monoliths vs. Microservices
Products, not Projects
projects:
products:
Melvin Conway
user interface
server-side
DBA
Orders
Shipping
Catalog
Monoliths vs. Microservices
Smart Endpoints, Dumb Pipes
Building
Microservices Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
single responsibility
what problem
characteristics
engineering
AGENDA
Microservice
api layer
PCI Level 1 !!
http://2012.33degree.org/pdf/JamesLewisMicroServices.pdf
http://www.infoq.com/presentations/Micro-Services
Asynchronicity
return optimized for
ranking/aggregation,
not display
!
complect, transitive verb:
intertwine, embrace, especially
to plait together production
Evolutionary Architecture
Components are
deployed.
Applications consist
of routing.
production
Evolutionary Architecture
Dis-integrate
services that
monitoring shows
are no longer used
production
How Big?
release risk
# services
Backends for Frontends
https://www.thoughtworks.com/insights/blog/b-soundcloud
Backends for Frontends
BFF as Migration Path
what problem
characteristics
engineering
AGENDA
Design For Failure
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
Response Time
Response Time
Response Time
Aggregating Monitors
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
ID: 123
ID: 123
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
Building downstream
Microservices
DESIGNING FINE-GRAINED SYSTEMS
http://en.wikipedia.org/wiki/Orchestration_(computing)
choreography vs. orchestration
in
microservices
Orchestration
recalc
quote
change update
address claims
notify
insured
Choreography
recalc update
quote claims
change
address
notify
insured
http://shop.oreilly.com/product/110000195.do
Testing Microservices
http://martinfowler.com/articles/microservice-testing/
Test Pyramid for Microservices
Inside the Box
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
Consumer Driven Contracts
http://martinfowler.com/articles/consumerDrivenContracts.html
Contract Testing
Pact
github.com/realestate-com-au/pact
Pacto
github.com/thoughtworks/pacto
Janus
github.com/gga/janus
focus on personas
& user journeys End-to-End Testing
as few as possible
make tests
data-independent
engineering
Building
Microservices
Abstract out underlying
DESIGNING FINE-GRAINED SYSTEMS
Building
Microservices
DESIGNING FINE-GRAINED SYSTEMS
https://consul.io/
http://zookeeper.apache.org
https://coreos.com/etcd/
Service Visualization
https://github.com/adrianco/spigo
Tools
www.devopsbookmarks.com/
Turnkey Platforms
Turnkey Platforms
https://www.hashicorp.com/blog/otto.html
what problem
characteristics
engineering
AGENDA
You must be
this tall to use
microservices
www.codingthearchitecture.com/2014/07/06/distributed_big_balls_of_mud.html
Service-based Architecture
is there a middle ground?
service-oriented microservices
architecture architecture
service-based
architecture
Service-based Architecture
transactional
structural
organizational
Inverse Conway Maneuver
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).
nealford.com
@neal4d
nealford.com/videos
nealford.com/books
www.oreilly.com/software-architecture-video-training-series.html