Tuesday, September 14, 2021

Service Architecture: Splitting a Monolith to Microservices
Join on Hopin
Joy Ebertz
Joy Ebertz
Split, Sr. Staff Engineer

Both Box and Split, like many other companies are working to split their monolith into microservices.  We didn't want to just end up with a distributed monolith (i.e. lots of services that still had a very high level of interdependency), so this required some specific thinking.  Additionally, we wanted to think about how to make sure we didn't have the overhead of hundreds of services while also not ending up with several mini-monoliths. In order to think about how to design our new services, we approached the problem using domain driven design and layered architecture.

DDD is an approach to developing software for complex needs by deeply connecting the implementation to an evolving model of the core business concepts.  It's an approach that was first coined in 2004 but is still very applicable today.  It emphasizes problem solving, cross functional collaboration and simplicity.

Meanwhile, layered architecture, while a fairly common approach, does not have the same common language or formalized concepts that domain driven design has.  We used layered architecture as a way to think about how we separate our front end services,  our core logic, and our infrastructure services.  

Together, these two approaches helped us think through how and where to divide our services.  In this talk, I will go into much more depth about what each of these two approaches are, as well as how we applied each to our problem space at Split.