Software design is hard, maybe the hardest part of building software systems... When designing distributed systems things get even more challenging. Now that Microservices are so popular, we all want to decompose our monoliths to smaller units of independent components. If we don't want to end up with a distributed monolith, we need to have a toolbox of design concepts so we can achieve well-defined boundaries between our components groups described as "Services" and "Service Boundaries" in the Service Oriented Architecture or SOA paradigm.
The traditional way of designing systems based on a domain data model with very complex relationships and dependencies may kind of work when building a monolith, but just breaks apart when you building distributed systems.
One of the pillars of distributed system design is to solve the **coupling** problem.
If we look at the tenants of SOA they all address coupling:
In order to achieve this, we need to rethink how we design our components and "Services" We need to move from monolith thinking to distributed thinking, leaving the single relational data model to multiple vertical bounded contexts that together compose a "Service" boundary.
In this talk I will walk through the process of designing a very simplistic and naive vertical slice while introducing the concepts from Domain Driven Design (DDD) and SOA, to build a single vertical, from there you will be able to do your first steps to design a loosely coupled distributed system, and be on the way to find you "Service" boundaries.
Distributed Systems Expert
With over 25 years of experience, Sean Farmar specializes in providing simple solutions for complex business requirements applying SOA and distributed computing principles inspired by Udi Dahan.
Sean runs Bosca Software Solutions Ltd. a boutique consulting company providing management and technical consulting related to product software engineering, custom project delivery, and training.