A microservices architecture requires some complex engineering. So when choosing microservices, a software engineering team must be prepared to tackle some challenges early in the project. On the other hand, an Agile approach requires the team to focus on delivering business value from Iteration 1. The fully-featured architecture of the solution will not emerge until later.
While clear and strong technical choices must be made early in a microservices project, how do you resist the temptation of building the infrastructure first? In this presentation, Jean Robert D'Amore talks about the tools and techniques you can use to let your product evolve towards a microservices architecture, while setting up the team for success.
10. AN ALTERNATIVE TO VENDOR-LED SOA
http://www.infoq.com/presentations/webber-guerilla-soa
DEFINE MICROSERVICES
11. AN ALTERNATIVE TO VENDOR-LED SOA
http://www.infoq.com/presentations/webber-guerilla-soa
DEFINE MICROSERVICES
The
Problem
12. AN ALTERNATIVE TO VENDOR-LED SOA
http://www.infoq.com/presentations/webber-guerilla-soa
DEFINE MICROSERVICES
The
Problem
The
Solution
13. AN ALTERNATIVE TO VENDOR-LED SOA
http://www.infoq.com/presentations/webber-guerilla-soa
DEFINE MICROSERVICES
The
Problem
The
Solution
The
Problem
Again
14. AN ALTERNATIVE TO VENDOR-LED SOA
http://www.infoq.com/presentations/webber-guerilla-soa
DEFINE MICROSERVICES
The
Problem
The
Solution
Back to
The
Future
The
Problem
Again
15. DISTRIBUTED AND WEB ARCHITECTURES
C++
1980s
Java
1990s
ANSI C
TCP Client-Sever
RPC
CORBA
RMI
DEFINE MICROSERVICES
16. DISTRIBUTED AND WEB ARCHITECTURES
C++
1980s
Java
1990s
ANSI C
TCP Client-Sever
RPC
CORBA
RMI
DEFINE MICROSERVICES
2000s 2010s
XML JavaScript
SOAP
SOA
JSON
REST
HTTP
The Internet
22. SCALE
"In order to scale to the next order of magnitude, we're
rethinking the fundamentals of our architecture"
Philip Fisher-Ogden, Director of Engineering
"We created the viewing service to encapsulate the domain of
viewing data collection, processing, and providing "
"These components would be easier to develop, test, debug,
deploy, and operate if they were extracted into their own services."
http://www.techrepublic.com/article/netflix-on-how-to-build-services-that-scale-beyond-millions-of-users/
MICROSERVICES RUSH
23. BREAK THE MONOLITH
Monolithic Perl —> Monolithic C++ —> Java —> microservices
Monolithic C++ —> Perl / C++ —> Java / Scala -> microservices
Monolithic Rails —> JS / Rails / Scala —> microservices
MICROSERVICES RUSH
25. CONWAY’S LAW
"Any organisation that designs a system […] will
inevitably produce a design whose structure is a copy
of the organisation's communication structure."
Melvin Conway, How Do Committees Invent - 1968
MICROSERVICES RUSH
58. RELEASE 1 - CONTINUOUS DELIVERY
• CODE
• BUILD
• PLAN
• RELEASE
• TO TEST FLIGHT
• CODE
• BUILD
• PLAN
• RELEASE
• TO TEST FLIGHT
CODE
PLAN
BUILD
TEST
RELEASE TO
PRODUCT OWNER
+ BETA
INSTALL
TRACK USAGE
USER
FEEDBACK
Continuous
Integration
Usability and
Feedback Cycle
DELIVERING MICROSERVICES
59. RELEASE 1 - CONTRACT TESTING
Functional
Integration
Unit Unit
Contracts
Web Application Web Services
DELIVERING MICROSERVICES
60. RELEASE 1 - COUPLING GRAPHS WITH D3JS
DELIVERING MICROSERVICES
67. RELEASE 1 - DIFFERENT LEVELS OF MONITORING
Infrastructure
New Relic
RuntimeLog
Logstash & Kibana
DELIVERING MICROSERVICES
68. RELEASE 1 - BUILD CAPABILITIES
• Continuously Deliver
CI, automated builds, tests, and deployments, release management
• Re-think the pyramid of tests
Favor contracts testing to UI functional testing
• Control dependencies
Modules integration via HTTP, dependency graph, transaction logging
• Release to production
Learn about your prod environment, consider containers and/or in-process
lightweight web servers, load balancers, caching, etc…
• Monitor & Analyse
Have system monitoring and data analytics in place.
DELIVERING MICROSERVICES
75. RELEASE 2 - NEW SERVICE USE CASES
DELIVERING MICROSERVICES
76. RELEASE 2 - NEW SERVICE USE CASES
new bounded context
DELIVERING MICROSERVICES
77. RELEASE 2 - NEW SERVICE USE CASES
new bounded context scale separately
DELIVERING MICROSERVICES
78. RELEASE 2 - NEW SERVICE USE CASES
new bounded context scale separately
security
DELIVERING MICROSERVICES
79. RELEASE 2 - NEW SERVICE USE CASES
new bounded context scale separately
securitydata aggregation
DELIVERING MICROSERVICES
80. RELEASE 2 - ISOLATION
DATA
"No direct database access is allowed from outside the
service, and there’s no data sharing among the services"
Werner Vogels, CTO and Vice President of amazon.com
DELIVERING MICROSERVICES
83. RELEASE 2 - LOWER BARRIER TO ENTRY
TO BE ADDED
DELIVERING MICROSERVICES
84. RELEASE 2 - BUILD WHAT YOU CAN SUPPORT
DELIVERING MICROSERVICES
85. RELEASE 2 - UNDERSTAND SERVICES
• Know if and when to create a new service
new bounded context, aggregation, security, scale independently
• Define (your level of) isolation
code, compilation, runtime, persistence, integration
• Reduce barrier to entry
repository blueprint, pipeline template, scaffolding script
• Build what you can support
develop DevOps culture (e.g. infrastructure as code)
DELIVERING MICROSERVICES
90. DELIVERING MICROSERVICES
RELEASE N - SCALING FOR LOAD
ARCHITECTURE
Consistent & Available
(No Partition Tolerance)
Partition Tolerant & Available
(No consistency)
91. DELIVERING MICROSERVICES
RELEASE N - SCALING FOR LOAD
ARCHITECTURE
Consistent & Available
(No Partition Tolerance)
Partition Tolerant & Available
(No consistency)
Partition Tolerant & Available
(Eventual consistency)
read replicas
Writes Reads
92. RELEASE N - SCALING DELIVERY
DELIVERING MICROSERVICES
95. PO
BA
QA
DEV
OPS
RELEASE N - SCALING DELIVERY
SERVICE TEAMS
DELIVERING MICROSERVICES
service team
service A
service B service C
HQ
96. PO
BA
QA
DEV
OPS
RELEASE N - SCALING DELIVERY
SERVICE TEAMS
DELIVERING MICROSERVICES
service team
service A
service B service C
HQ
service A service B service C
97. PO
BA
QA
DEV
OPS
RELEASE N - SCALING DELIVERY
SERVICE TEAMS
DELIVERING MICROSERVICES
service team
service A
service B service C
HQ
service A service B service C
98. RELEASE N - SCALING DELIVERY
DISTRIBUTED TEAMS
DELIVERING MICROSERVICES
CHENGDUBRISBANE SYDNEY PERTH
99. RELEASE N - SCALING DELIVERY
DISTRIBUTED TEAMS
DELIVERING MICROSERVICES
CHENGDUBRISBANE
mogul-service pizza-image-service
SYDNEY PERTH
100. RELEASE N - SCALING DELIVERY
DISTRIBUTED TEAMS
DELIVERING MICROSERVICES
CHENGDUBRISBANE
mogul-service pizza-image-service
SYDNEY PERTH
media-serviceauth-service
dough-service
email-service
mogul-private-service
moderation-service
pizza-service
order-service
leaderboard-service
charity-service
101. microservices? need big upfront design?
Microservices
strategic value break the monolith scale re-org
CONCLUSION
KEY TAKEAWAYS
102. microservices? need big upfront design?
Microservices
strategic value break the monolith scale re-org
CONCLUSION
• what are microservices
KEY TAKEAWAYS
103. microservices? need big upfront design?
Microservices
strategic value break the monolith scale re-org
CONCLUSION
• what are microservices
• does not require big upfront design
KEY TAKEAWAYS
104. microservices? need big upfront design?
Microservices
strategic value break the monolith scale re-org
CONCLUSION
• what are microservices
• does not require big upfront design
• application of agile techniques to distributed systems
KEY TAKEAWAYS
105. microservices? need big upfront design?
Microservices
strategic value break the monolith scale re-org
CONCLUSION
• what are microservices
• does not require big upfront design
• application of agile techniques to distributed systems
• agree with business why microservices
KEY TAKEAWAYS
106. microservices? need big upfront design?
Microservices
strategic value break the monolith scale re-org
CONCLUSION
• what are microservices
• does not require big upfront design
• application of agile techniques to distributed systems
• agree with business why microservices
• continuous delivery, testing strategy, monitoring
KEY TAKEAWAYS
107. microservices? need big upfront design?
Microservices
strategic value break the monolith scale re-org
CONCLUSION
• what are microservices
• does not require big upfront design
• application of agile techniques to distributed systems
• agree with business why microservices
• continuous delivery, testing strategy, monitoring
• start small, grow your own capabilities
KEY TAKEAWAYS
108. microservices? need big upfront design?
Microservices
strategic value break the monolith scale re-org
CONCLUSION
• what are microservices
• does not require big upfront design
• application of agile techniques to distributed systems
• agree with business why microservices
• continuous delivery, testing strategy, monitoring
• start small, grow your own capabilities
• scale your services and your organisation
KEY TAKEAWAYS
109. microservices? need big upfront design?
Microservices
strategic value break the monolith scale re-org
CONCLUSION
• what are microservices
• does not require big upfront design
• application of agile techniques to distributed systems
• agree with business why microservices
• continuous delivery, testing strategy, monitoring
• start small, grow your own capabilities
• scale your services and your organisation
• choose what works for you
KEY TAKEAWAYS