It is a hard to argue that microservices is a new hotness in the world of software. Technical teams in seemingly all new startups are planning to develop their product using microservices, while architects in Fortune 500 are managing tireless conversations about which microservices technology is best to use for their next generation platform. The overhype of microservices is here and with that comes a danger to loose the true meaning of the word, which soon might be labeled as overrated. Before it happens, let's talk about what microservices architecture is, what it can offer, what it gets us into, what its price tag and how to create a checklist for choosing right tools that would help solve the complexity instead of sugarcoating it.
2. 2
MY RELEVANT BACKGROUND
2003 - 2004
OpenMP, MPI, distributed
Matlab
2006-2012
J2EE, Spring
Proprietary Distributed Computing
software in C/C++
2012-2016
Play, Scala,
3. Akka
3
THEN CAME MICROSERVICES
I THOUGHT MICROSERVICES ARE A
PRIVATE CASE OF DISTRIBUTED
SYSTEM
THEY APPLY WHEN POLYGLOT COMPONENTS
ARE REQUIRED AND SOME LATENCY COULD
BE TOLERATED IN FAVOUR OF SCALABILITY
4. 4
WHY THIS TALK
THE AMOUNT OF MISPERCEPTION
SUGGESSTIONS SUCH AS 'DEVELOP
MONOLITH AS LONG AS YOU CAN'
EXPECTING DIFFERENT RESULTS FROM
DOING THE SAME WITH SAME
TECHNOLOGIES
9. In short, the microservice
architectural style [1] is an
approach to developing a
single application as a suite
of small services, each
running in its own process
and communicating with
lightweight mechanisms, often
an HTTP resource API.
-- Martin Fowler
10. These services are built
around business capabilities
and independently deployable
by fully automated deployment
machinery. There is a bare
minimum of centralized
management of these services,
which may be written in
different programming
languages and use different
data storage technologies.
-- Martin Fowler
11. 910
11
MICROSERVICES TO THE RESCUE
Shopping cart and search are services
Different departments are services
I don't care what language to use (for
the sake of this talk ...)
13. 13
"LESS THAN PERFECT"
MICROSERVICES BUT CONTINUE
HOW LONG DOES SEARCH TAKE?
100 millis X N of healthy services
+ time 1 X unhealthy service 1 + ...
24. 24
RESILIENCE AT ALL LEVELS
GOAL: RESPONSIVINESS
Asynchronous Communication
Question: What is asynchronous communication?
Componentization
DevOps
25. 25
ELASTICITY
System could both expand and shrink dynamically
COST EFFICIENCY
Scalability
Appropriate infrastructure on-prem or
wise choice of cloud provider
29. 29
MICROSERVICES' PRICE TAG
We should design again
We should be smart, it is not only about
right configuration anymore
We should consolidate: monitoring,
logging, etc (but not databases
remember?)
We should support DevOps or become one:
deployment, cluster management etc,
right technologies are super important
Debugging is not hard, we just need to
do it differently and we need tools
30. 30
CHOICE OF TOOLS
THE RULE: THE TOOL(S) SHOULD
NOT BREAK ANY PRINCIPLE
MENTIONED BEFORE
Take a look at Lagom, not the song, the
opinionated (based on principles)
microservices framework