Most developers love microservice and treat them as a panacea, but they are wrong. How to stop creating problems using microservices and start solving them.
7. Problems
You need stable APIs and communication contracts
No more shared DB no you need consensus
Testing!
Strong DevOps culture
Service discovery
Networking
Monitoring and instrumentation
Distributed tracing
9. Data
No more state, no more local files
No more single database (MongoDB, Cassandra ?)
No more system-wide transactions
No more fast and reliable point of consensus (Zookeeper
?)
You need messaging (RabbitMQ, ZeroMQ ?)
10. Testing
No one cares about testing single service
Now you have 50 points of failure
No one really knows how to test microservices (hard
mocking)
No one really knows how to test infrastructure for
microservices
11. DevOps
It is about culture, not people
You create it, you support it
Culture should cover all areas of software lifecycle
You cannot deploy 50 microservices manually
Service could be written in any language
Tons of new shiny tools (Docker, Kubernetes, Terraform)
12. Networking
Distributed networking is cool (ha!)
Discovery is simple (ha!!!)
Configuration distribution is dope (ha!!!)
Circuit breaker? What is that?
13. Monitoring
No more single system, no more centralized monitoring
Distributed tracing (Zipkin)
Logs and metrics collecting (Beats, Statsd)
Aggregation (Logstash, Carbon)
Visualization (Prometheus, Graphite, Kibana)
Store and maintain all this data and systems (SRE?)
Incident management (ITIL, Support)
14. Security
Internal request security (SSL, JWT?)
Sensitive data storing and delivery (Vault?)
No more access to single instance and fix production app