12. Problems at the beginning.
Organization (legacy)
"Organizations which design systems ... are
constrained to produce designs which are copies of
the communication structures of these
organizations."
M. Conway
13. Problems at the beginning.
Teams for monolith
Conway's Law in action
(https://martinfowler.com/articles/microservices.html)
14. Problems at the beginning.
Teams for microservices
Service boundaries reinforced by team boundaries
(https://martinfowler.com/articles/microservices.html)
16. Problems at the beginning.
Organization (legacy)
● Only one host for running the service
17. Problems at the beginning.
Organization (legacy)
● Only one host for running the service
● Any possible way used to get data
18. Problems at the beginning.
Organization (legacy)
● Only one host for running the service
● Any possible way used to get data
● All data is located “nearby”
19. Monolith first! Or not?
(https://martinfowler.com/bliki/MicroservicePremium.html)
20. Problems at the beginning
(technical). “Citizen” rules
Define:
21. Problems at the beginning
(technical). “Citizen” rules
Define:
● Running env (bare metal/VM/container;
host/guest OS; rpm/image/git)
23. Problems at the beginning
(technical). “Citizen” rules
Define:
● Running env (bare metal/VM/container;
host/guest OS; rpm/image/git)
● Update policy (major/hotfixes/API)
● One common name format (domain names)
24. Problems at the beginning
(technical). “Citizen” rules
Define:
● Running env (bare metal/VM/container;
host/guest OS; rpm/image/git)
● Update policy (major/hotfixes/API)
● One common name format (domain names)
● Communication protocol (RPC/messages)
25. Problems at the beginning
(technical). “Citizen” rules
Decide whether to use:
26. Problems at the beginning
(technical). “Citizen” rules
Decide whether to use:
● Orchestration system
27. Problems at the beginning
(technical). “Citizen” rules
Decide whether to use:
● Orchestration system
● Service discovery (use domain names)
28. Problems at the beginning
(technical). “Citizen” rules
Decide whether to use:
● Orchestration system
● Service discovery (use domain names)
● Secured/unsecured communication channels
29. Problems at the beginning
(technical). “Citizen” rules
Decide whether to use:
● Orchestration system
● Service discovery (use domain names)
● Secured/unsecured communication channels
● Scalable services
30. Problems at the beginning
(technical). “Citizen” rules
Decide whether to use:
● Orchestration system
● Service discovery (use domain names)
● Secured/unsecured communication channels
● Scalable services
● Stateless/stateful services
31. Problems at the beginning.
Summary
● Get rid of monolith in the head
32. Problems at the beginning.
Summary
● Get rid of monolith in the head
● Prepare your background
33. Problems at the beginning.
Summary
● Get rid of monolith in the head
● Prepare your background
● Make a plan
34. Problems at the beginning.
Summary
● Get rid of monolith in the head
● Prepare your background
● Make a plan
● Microservices can be as much effective
as difficult
49. Development environment
Used for development/testing:
● Own PC/laptop
● Own OS/libs
● Only “my” service for running/testing
● Only one process per service
50. Development environment
Used for development/testing:
● Own PC/laptop
● Own OS/libs
● Only “my” service for running/testing
● Only one process per service
● And have full control over
service/process/logs/data/...
54. Problems during
development. Summary
● Don’t use common/shared libs
● Design API for your needs
● Write documentation
● Consider at least 2 instances of each
service at any time
55. Problems during
development. Summary
● Don’t use common/shared libs
● Design API for your needs
● Write documentation
● Consider at least 2 instances of each
service at any time
● Start with orchestration system
70. Need more info
Developer asks to:
● Provide with steps to reproduce (STR)
● Turn on debug mode/levels/...
71. Need more info
Developer asks to:
● Provide with steps to reproduce (STR)
● Turn on debug mode/levels/...
● Gather logs
72. Need more info
Developer asks to:
● Provide with steps to reproduce (STR)
● Turn on debug mode/levels/...
● Gather logs
● Get request/response data
73. Need more info
Developer asks to:
● Provide with steps to reproduce (STR)
● Turn on debug mode/levels/...
● Gather logs
● Get request/response data
● Provide with access to server
78. Problems in production.
Summary
● Use request tracing over services (traceID)
● Use traceID in logging
● Use log aggregator
● Gather container/system metrics
79. Problems in production.
Summary
● Use request tracing over services (traceID)
● Use traceID in logging
● Use log aggregator
● Gather container/system metrics
● Gather application metrics
80. Problems in production.
Summary
● Use request tracing over services (traceID)
● Use traceID in logging
● Use log aggregator
● Gather container/system metrics
● Gather application metrics
● Check system availability from different world
zones
81. Problems in production.
Summary
● Use request tracing over services (traceID)
● Use traceID in logging
● Use log aggregator
● Gather container/system metrics
● Gather application metrics
● Check system availability from different world
zones
● Use self-health checks
84. Global summary
● Microservices can be as much effective as
difficult
● Prepare your teams and workflows
● Make a plan for development/testing/support in
production
85. Global summary
● Microservices can be as much effective as
difficult
● Prepare your teams and workflows
● Make a plan for development/testing/support in
production
● Leave “bread crumbs”
86. Global summary
● Microservices can be as much effective as
difficult
● Prepare your teams and workflows
● Make a plan for development/testing/support in
production
● Leave “bread crumbs”
● Enjoy!