10 yrs ago, SOA promised a lot of the same things Microservices promise use today. So where did we go wrong? What makes microservices different? In this talk, we discussed from an architectural view how we went sideways with SOA, why we must embrace things like Domain Driven Design and scaled-out architectures, and how microservices can be built with enterprises in mind. We also cover a step-by-step, in-depth tutorial that covers these concepts.
3. Christian Posta
Principal Middleware Architect @ Red Hat
Twitter: @christianposta
Blog: http://blog.christianposta.com
Email: christian@redhat.com
• “Microservices for Java developers” (6/2016)
• Committer Apache Camel, ActiveMQ, Fabric8, others
• Worked with large Microservices, web-scale, unicorn company
• Blogger, speaker about DevOps, integration, and microservices
10. • Single, self-contained,
autonomous
• Isolated and Resilient to faults
• Faster software delivery
• Own their own data
• Easier to understand individually
• Scalability
• Right technology for the
problem
• Test individual services
• Individual deployments
Microservices to the rescue…
16. Book checkout / purchase Title Search
Recommendations
Weekly reporting
17. Domain Complexity
• Break things into smaller,
understandable models
• Surround a model and its
“context” with a boundary
• Implement the model in code
or get a new model
• Explicitly map between
different contexts
• Model transactional
boundaries as aggregates
23. Domain Aggregate
• Design for consistency
boundaries, not data model
composition
• Single transaction per
aggregate
• Based on business invariants
• Eventual consistency between
aggregates
24. Embrace Autonomy! No Two-Phase Commit!
• Always use idempotent
consumers
• Relax foreign key constraints
between aggregates/
bounded contexts
• Embrace eventual consistency
between time domains
30. • Load balancing built-in
• Service discovery built-in
• Self healing built-in
• No complicated service-discovery infrastructure!
• Just use DNS for the 95% use case
• Save client-side load balancing for the 5% use case
Kubernetes Services
39. • Better, richer, aggregate design
• CQRS for the orders bounded context
• Security with Keycloak
• Tracing with Zipkin
• Sidecar circuit breakers with Netflix OSS Hystrix
• CI / CD with Fabric8 / OpenShift
Left todo
40. Christian Posta
Principal Middleware Architect @ Red Hat
Twitter: @christianposta
Blog: http://blog.christianposta.com
Email: christian@redhat.com