Refactoring Octopus: Modularity, Calamari, and Sashimi
Blog post from Octopus Deploy
In the journey of evolving Octopus Deploy, significant changes have been made to its codebase to enhance modularity and simplify integration with external services. Initially, the deployment logic was tightly coupled within the Tentacle agent, requiring synchronized updates between Octopus Server and Tentacle. With the introduction of Calamari in Octopus 3.0, deployment execution was delegated to this standalone engine, reducing Tentacle's complexity. Despite Calamari's success, challenges in adding new integrations led to the creation of "flavors," splitting Calamari into independent, customizable executables for various platforms and technologies. This approach, complemented by the introduction of Sashimi, modularizes Octopus Server, allowing for easier and faster integration of new technologies like AWS or Terraform without deep server-side entanglement. By employing techniques like Single-instance storage, Octopus maintains a lean installer size, ensuring efficient packaging and distribution. The ongoing refactoring with Calamari and Sashimi promises a more agile and maintainable system, streamlining the addition of new features and third-party integrations.