SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our User Agreement and Privacy Policy.
SlideShare uses cookies to improve functionality and performance, and to provide you with relevant advertising. If you continue browsing the site, you agree to the use of cookies on this website. See our Privacy Policy and User Agreement for details.
Successfully reported this slideshow.
Activate your 14 day free trial to unlock unlimited reading.
Microservices: why you're doing them wrong_Dmytro Lahoza
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.
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
8.
API and contracts
Swagger
RAML
Synchronization
Validation
gRPC?
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