Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
Microservices: a journey of an eternal improvement
-
Upload
anton-udovychenko -
Category
Software
-
view
158 -
download
2
Transcript of Microservices: a journey of an eternal improvement
MICROSERVICES:A JOURNEY OF AN ETERNAL IMPROVEMENT
Levi9 Meetup 04.2016
Anton Udovychenko
ABOUT ME
Software Architect @ Levi9
8+ years of Java experience
Passionate about agile methodology and clean code
http://ua.linkedin.com/in/antonudovychenko
http://www.slideshare.net/antonudovychenko
Amsterdam
Levi9 HQAmsterdam – 2005
25 people
Novi Sad
SerbiaNovi Sad – 2005
320+ people
Zrenjanin
SerbiaZrenjanin– 2014
30+ people
Iasi
RomaniaIasi – 200780+ people
Kiev
UkraineKiev – 2008130+ people
http://www.levi9.com/
AGENDA
• Monolith development
• Reflections about Scale cube
• Microservices to the rescue
• Spotify Scrum
• Employ Continuous delivery
• Q&A
MONOLITH DEVELOPMENT
• Widely known and described
• Simple development
• Straightforward testing
• Easy deployment
Benefits:
MONOLITH DEVELOPMENT
• Grows to be tightly coupled
• Difficult to make changes
• Obstacle for scaling
• Complex to analyze
• Frightens developers
• Hard to change technology stack
Disadvantages:
MONOLITH DEVELOPMENT
• Grows to be tightly coupled
• Difficult to make changes
•Obstacle for scaling
• Complex to analyze
• Frightens developers
• Hard to change technology stack
Disadvantages:
REFLECTIONS ABOUT SCALE CUBE
X axis – horizontal duplication
Scale by cloning
REFLECTIONS ABOUT SCALE CUBE
X axis – horizontal duplication
Scale by cloning
REFLECTIONS ABOUT SCALE CUBE
Y axis – functional
decomposition
Scale by splitting
different things
X axis – horizontal duplication
Scale by cloning
REFLECTIONS ABOUT SCALE CUBE
Y axis – functional
decomposition
Scale by splitting
different things
X axis – horizontal duplication
Scale by cloning
Near infinite scale
Starting point
MICROSERVICES TO THE RESCUE
MICROSERVICES TO THE RESCUE
MICROSERVICES TO THE RESCUE
Small autonomous services
that work together,
modelled around a business domain
MICROSERVICES TO THE RESCUE
MICROSERVICES TO THE RESCUE
• Scalability
• Independent deployments
• Polyglot services
• Easier to understand a service
• Decoupling
• Fast development
Benefits:
MICROSERVICES TO THE RESCUE
• Distribution performance
• Eventual consistency
• Network security
• Orchestration complexity
• Monitoring and testing
• Code duplication
Disadvantages:
CONWAY’S LAW
Organizations which design systems ... are constrained
to produce designs which are copies of the
communication structures of these organizations
Melvin Conway
SPOTIFY SCRUM
PO
Squad
SPOTIFY SCRUM
PO
Squad
PO
Squad
PO
Squad
PO
Squad
SPOTIFY SCRUMTribe
PO
Squad
PO
Squad
PO
Squad
PO
Squad
Lead
SPOTIFY SCRUMTribe
PO
Squad
PO
Squad
PO
Squad
PO
Squad
Lead
Tribe
PO
Squad
PO
Squad
PO
Squad
PO
Squad
Lead
Chapter
SPOTIFY SCRUMTribe
PO
Squad
PO
Squad
PO
Squad
PO
Squad
Lead
Tribe
PO
Squad
PO
Squad
PO
Squad
PO
Squad
Lead
Chapter
Chapter
SPOTIFY SCRUMTribe
PO
Squad
PO
Squad
PO
Squad
PO
Squad
Lead
Tribe
PO
Squad
PO
Squad
PO
Squad
PO
Squad
Lead
Chapter
Guild
CONTINUOUS INTEGRATION
Build
Deploy
Test
CONTINUOUS DELIVERY
Build
Deploy
TestManual
Acceptance
Release
CONTINUOUS DEPLOYMENT
Build
Deploy
Test
Release
EMPLOY CONTINUOUS DELIVERY
Version control
EMPLOY CONTINUOUS DELIVERY
Version control Continuous delivery
pipeline
EMPLOY CONTINUOUS DELIVERY
Version control Continuous delivery
pipeline
Services
v6
v37
v12
v5
EMPLOY CONTINUOUS DELIVERY
Version control Continuous delivery
pipeline
Services
v37
v12
v5
Code
changes
v7
EMPLOY CONTINUOUS DELIVERY - PIPELINE
BUILD TEST RELEASEFeatures:
• Pipeline as code
EMPLOY CONTINUOUS DELIVERY - PIPELINE
BUILD TEST RELEASEFeatures:
• Pipeline as code
• Auto build versioning
• Manual contracts versioning• Compile
• Version
• Unit test
• Static code
analysis
• Static security
code analysis
EMPLOY CONTINUOUS DELIVERY - PIPELINE
BUILD TEST RELEASEFeatures:
• Pipeline as code
• Auto build versioning
• Manual contracts versioning• Compile
• Version
• Unit test
• Static code
analysis
• Static security
code analysis
• e2e
• Performance
• Integration
• Penetration
• Contracts
EMPLOY CONTINUOUS DELIVERY - PIPELINE
BUILD TEST RELEASEFeatures:
• Pipeline as code
• Auto build versioning
• Manual contracts versioning• Compile
• Version
• Unit test
• Static code
analysis
• Static security
code analysis
• e2e
• Performance
• Integration
• Penetration
• Contracts
EMPLOY CONTINUOUS DELIVERY - PIPELINE
BUILD TEST RELEASEFeatures:
• Pipeline as code
• Auto build versioning
• Manual contracts versioning
• Immutable infrastructure
• Compile
• Version
• Unit test
• Static code
analysis
• Static security
code analysis
• e2e
• Performance
• Integration
• Penetration
• Contracts
Create
envRun tests
Dispose
env
EMPLOY CONTINUOUS DELIVERY - PIPELINE
BUILD TEST RELEASEFeatures:
• Pipeline as code
• Auto build versioning
• Manual contracts versioning
• Immutable infrastructure
• Compile
• Version
• Unit test
• Static code
analysis
• Static security
code analysis
• e2e
• Performance
• Integration
• Penetration
• Contracts
• Make available
downstream
• Trigger
integration build
Create
envRun tests
Dispose
env
EMPLOY CONTINUOUS DELIVERY
B T Rgit
B T Rgit
B T Rgit
B T Rgit
B T R+
53
6
36
11
5
Release
6
36
11
5
53
EMPLOY CONTINUOUS DELIVERY
B T Rgit
B T Rgit
B T Rgit
B T Rgit
B T R+
53
6
36
11
5
Release
6
36
11
5
53
37 37
EMPLOY CONTINUOUS DELIVERY
B T Rgit
B T Rgit
B T Rgit
B T Rgit
B T R+
53
6
36
11
5
Release
6
36
11
5
53
38 38
EMPLOY CONTINUOUS DELIVERY
B T Rgit
B T Rgit
B T Rgit
B T Rgit
B T R+
53
6
36
11
5
Release
6
36
11
5
53
38
12 12
EMPLOY CONTINUOUS DELIVERY
B T Rgit
B T Rgit
B T Rgit
B T Rgit
B T R+
53 54
6 6
36 36
11 12
5 5
Release
6
36
12
5
54
38
12
EMPLOY CONTINUOUS DELIVERY
B T Rgit
B T Rgit
B T Rgit
B T Rgit
B T R+
53 54
6 6
36 36
11 12
5 5
Release
6
36
12
5
54
3939
EMPLOY CONTINUOUS DELIVERY
B T Rgit
B T Rgit
B T Rgit
B T Rgit
B T R+
53 54 55
6 6 6
36 36 39
11 12 12
5 5 5
Release
6
39
12
5
55
39
EMPLOY CONTINUOUS DELIVERY
B T Rgit
B T Rgit
B T Rgit
B T Rgit
B T R+
Release
6
39
12
5
55
39
5555
5656
5757
585858
EMPLOY CONTINUOUS DELIVERY
git
git
git
git
+
Future proof:
• Any configuration of squads
• Growing number of components
EMPLOY CONTINUOUS DELIVERY
git
git
git
git
+
Future proof:
• Any configuration of squads
• Growing number of components
EMPLOY CONTINUOUS DELIVERY
git
git
git
git
+
Future proof:
• Any configuration of squads
• Growing number of components
git
DEMO TIME
REFERENCES
http://martinfowler.com/articles/microservices.html
http://microservices.io/articles/scalecube.html
https://ucvox.files.wordpress.com/2012/11/113617905-scaling-agile-spotify-11.pdf
http://martinfowler.com/articles/microservice-testing
http://blog.arungupta.me/continuous-integration-delivery-deployment-maturity-model/
http://www.slideshare.net/PavelChunyayev/continuous-delivery-for-cxp-at-backbase-presented-at-arch9-amsterdam-30032016-levi9
THANK YOU!