There is an industry trend where businesses are moving towards autonomous product teams. These teams aim to be end-to-end responsible for the product they are building and maintaining. With the help of Continuous Delivery, teams have faster feedback cycles in which they can probe if a feature work. To achieve end-to-end team autonomy, companies move towards a microservices architecture to successfully inspect and adapt. To be successful with a microservices architecture, we need to use the Domain-driven design bounded context pattern. However, only by implementing a bounded context in code, we can experience if the model is useful.
In this session, we take you on a journey, where we explain how we implemented a complex software system within a bounded context. We start coding to explore and quickly iterate over our naive domain model with outside-in Test-Driven Development (TDD). With outside-in TDD, we grow our model guided by coarse-grain tests without the need of using mocks inside our domain. We eventually leverage the ports and adapter architecture to keep our domain model protected from technical complexity. In the end, we will demonstrate an example of how to split your domain model towards microservices.