Config as Code and persistence ignorance
Blog post from Octopus Deploy
The article delves into the architectural evolution of the Octopus Deploy platform, particularly focusing on the transition from SQL to a more abstract document store approach to support the Configuration as Code feature. Initially, Octopus relied on SQL for data persistence, but as version control became integral, the need for a more flexible system emerged. The Core Platform team introduced a document store abstraction layer, enabling seamless interaction with both SQL and version-controlled projects via Git, without the API consumer needing to understand the underlying persistence mechanisms. This shift also led to the introduction of a Unit of Work pattern to simplify transaction management, allowing developers to focus on their tasks without being burdened by transactionality or caching concerns. Enhanced by a strategy pattern, the system automatically determines the appropriate data store type, and project scope encapsulates project and branch information, reducing the need for extensive parameter passing. This architectural refinement aims to streamline development processes, encourage best practices, and ensure a scalable, intuitive experience for both developers and end-users.