Armagan Amcalar
DevFest Siberia 2017
Sep 23rd, 2017
Armagan Amcalar
Head of Software Engineering @ unu GmbH
Founder @ Lonca Works
dashersw dashersw
Your team wants to adopt microservices.
Is your organization ready for the challenge?
Async operations with queue (and other) systems
Having 50 different queue consumers (for notifications, logging, reconciliation services, e-mailing etc) doesn’t mean you have 50 microservices
Multiple programs running on a single machine and communicating over HTTP
If you are breaking down the fulfillment of a client request into multiple collaborating services that run in their own memory space, then you are doing microservices.
THE BASELINE
Bounded contexts in domain driven design (at worst)
Request–response flow breakdown with
preferably many smaller pieces (with separate codebase)
A bug in a service doesn't bring down the whole app
Scales well, needs minimal additional resources
Supports event-driven architecture
Single responsibility, API interface
Clear interfaces between services
Auto discovery
Dynamic (or zero) configuration
High availability
Scale and update single services
Favor cattle over pets
Wrong domain model
Error handling & circuit breaking
Fault-tolerance
Monitoring
Multiple points of failure
Hard to get the big picture
Code will rapidly change
Dependencies will change
Deployment & release processes will change
Prepare for and own the change
Defer responsibilities
Increase visibility on dependencies and interfaces between software components
Architectural documents are back
DevOps movement
Integration tests are a lot more important
Controversy: decrease unit and functional tests and increase automated user acceptance tests.
Increase in code ownership
Awareness of impact
Increase in communication
Reduced stress due to automation
Architecture is straightforward; reduces ambiguity for what implementation belongs in what class
DDD is more important, more straightforward
Freedom to use the best tool for the job
Invest in a solid CI/CD process
Pipelined builds with several stages
Containerize your application
Invest heavily in monitoring
No vendor lock in
No secret sauce
No surprises
Migration is damn easy
Adopting new technologies is lightning fast
Team structure completely changes
Scrum teams will get an update
Release management becomes a first-class citizen
Hierarchy is eliminated
Find other ways to keep a consistent vision within the team
Increased agility
Smaller teams lead to easier decisions
Helps with planning for impediments and dependencies; “blocked-by hell”
Increased happiness
Increased productivity
Fit for distributed teams!
Armagan Amcalar