Chris Richardson is a developer and architect. He is a Java Champion, a JavaOne rock star and the author of POJOs in Action, which describes how to build enterprise Java applications with frameworks such as Spring and Hibernate. Chris was also the founder of the original CloudFoundry.com, an early Java PaaS for Amazon EC2.
Today, he is a recognized thought leader in microservices and speaks regularly at international conferences. Chris is the creator of Microservices.io, a pattern language for microservices, and is the author of the book Microservices Patterns. He provides microservices consulting and training to organizations that are adopting the microservice architecture and is working on Eventuate, which is an open-source microservices collaboration platform.
When applying the microservice architecture pattern, the most important design decisions that you must make do not involve technology choices, such as Kubernetes vs. Serverless or REST vs. gRPC. Instead, what’s critical to your success is correctly identifying services, defining their responsibilities, APIs and collaborations. That’s because if you design your services badly, you risk creating a fragile, distributed monolith where every service is a potential point of failure, and services regularly change in lock step. Read more...
When we design software using DDD, we primarily focus on creating models scoped by bounded contexts that define ubiquitous languages. We also structure the models and the elements they contain to be loosely coupled and highly cohesive. However, while (logical) design techniques such as DDD domain modeling concepts, loose coupling and high cohesion are essential for creating good software, they are insufficient when designing a microservice architecture. In particular, we must also consider other more physical constraints including team size; team, process and transaction boundaries; and the cost of communication over a network.
In this talk, I describe a set of physical design principles for organizing subdomains into microservices. You will learn about both principles that encourage finer-grained decomposition into services as well as those that discourage decomposition. I describe how to apply those principles to design a microservice architecture.
Join expert DDD and LLM practitioners to dialog about the impact of large-language models on software design and domain modeling.