Spring IO 2016 - Spring Cloud Microservices, a journey inside a financial entity
The Technical Journey to Microservices - the New World
-
Upload
russell-miles -
Category
Technology
-
view
786 -
download
2
Transcript of The Technical Journey to Microservices - the New World
The Technical Journey to Microservices
@russmiles
Biker me… TBD
Reactive…
Say “Microservices” one more time…
TBD
A Definition…
The kingdom of heaven is like a mustard seed, which a man took and planted in his field. Though it is the
smallest of all seeds, yet when it grows, it is the largest of garden plants and becomes a tree, so that the birds come and perch in its branches (Matthew 13:31-32).
- Of Mustard Seeds and Microservices (Micah Blalock) -- https://www.credera.com/blog/technology-
insights/java/mustard-seeds-microservices/
“Loosely coupled service oriented architecture with bounded contexts”
Loosely Coupled Services that can change
A Story
“The Elephant in the Standup”
The term is WRONG
Size doesn’t matter
SLOC doesn’t matter
Cognitive Overhead DOES
What can your System DO?
Single Biggest Limiting Factor on Change?
You.
Comprehension
Not the things…
… the things that happen
Systemic Properties
Not what you have
What you can do
with it
The Big Challenge
Some value Stability
Some value Speed
Some value Agility
Some value Adaptability
Some value Volatility
Some value Antifragility
Microservices (can) =Speed
AdaptabilityAntifragility
How?
How?
Life Preservation
Events.
How?
How?
VolumeVarietyVelocity
VolumeVarietyVelocityVeracity
Aggregates
Views
Downside?
One more story…
Build an app…
The Todo list, for a Todo App
“Create a beautiful looking app & web ui for interacting with
todo lists”
“Write a back-end service that stores todo lists so that they can be made available across devices and the web.”
“Write your todo-list tests to ensure things
function as you expect"
But…
According to slide-theorists…
But that’s waaaay too easy…
40 slides in 2 minutes…
Ready…?
Set up source code control and an issue
tracker
Manage user accounts, sign-up, sign-in, and
password management
Collect analytics from your app and web ui about how people use
your app
Build and test your app across multiple devices
and OS versions
Gather information on app crashes and bugs and feed this back into
an issue backlog
Test your web ui across multiple browsers and
versions
Document the API that the native apps and web
app depend on
Push client-side assets to CDNs and keep them up
to date
Version your API so that you can evolve client apps and the backing service independently
Implement rate limiting for requests
Set up a CI service that monitors your repository for changes builds and
tests your software
Set up a CD service that deploys new version of your software to your chosen deployment
platform
Set up networking rules so that the components of your backend can see
each other and are protected from other
traffic
Enable the components of your backend service
(e.g. the API implementation and
database) to find each other
Ensure the service can survive failure of an AZ
Monitor request latency
Create new instances if existing ones fail, and
transparently reconnect service components
Provide mechanisms to scale up and down
service capacity
Trace requests all the way through the system
Provide audit logs of all changes made to
production systems
Set up an alerting mechanism for problems
in production
Put in place a DR solution and test it
Back up and recovery processes for data
Create operational play books and test your plays
Put in place automated failure testing (e.g. simians)
Ensure service has no security weaknesses
(e.g. XSS)
Monitor CVE reports for all components in your stack and replace as
soon as a vulnerability is found
Devise deployment schemes for e.g. blue/
green, phased rollout, and rollback
Collect logs from all components for analysis
Enable marketing to run A/B and feature tests
Monitor and visualise all of the above and ensure that things continue to
flow smoothly through the pipeline
Package all of your application components in a form suitable for
deployment
Manage stand up and tear down of dev and test
environments
…
…breathe…
…
And that’s before we get to…
Service Configuration
Service Discovery
Bulkheads
Circuit Breakers
Event Stores
Messaging
CQRS
Language Selection
APIs
API Gateways
Lakes
Routing
Security
…
BREATHE!!!
…
And this is JUST the Technical Journey!
WT*?!
The real problem?
The general problem…
d
do
bdo
S
Complexity of
Microservices
We can do better
We can do much better
We have done this before…
Simplify Enterprise Java
Simplify Microservices
What can you do?
www.leanpub.com/antifragilesoftware
Get Involved!
Thanks for your time!
@russmiles
russmiles.com