Post Hoc Systems Architecture: An Argument for Microservices First
May 2019 • Presentation
This presentation considers why it can be a good investment to start with a microservice architecture when long-term requirements or obligations are unclear.
Software Engineering Institute
Common advice about microservice architectures is to begin with a monolithic application and then break it into microservices, such as per Martin Fowler's observation of the difficulty of getting bounded contexts right from the outset. On the opposite side of the spectrum, others such as Stefan Tilkov argue for starting with a microservice architecture "to allow for fast, independent delivery of individual parts within a larger system." We go one step further than Tilkov by proposing that it can be a good investment to start with a microservice architecture when long-term requirements or obligations are unclear, in order to be able to later identify business-critical components to merge and refactor into small but highly maintainable monoliths while isolating low-priority technical debt in non-critical microservices that require little to no maintenance. This approach aims to expedite initial release as much as possible while also minimizing the long-term cost of strategic technical debt incurred along the way. We describe how this originally unintentional approach played out over two years for the information retrieval infrastructure of Watson Discovery Service and why we are now formalizing it.