Sitecore and the road to continuous everything
- Posted on January 8, 2018
- Estimated reading time 3 minutes
The goal of modern engineering is to automate everything, delivering applications and services at high velocity and quality. A modern toolset allows us to automate testing, deployment, UI testing, security– and these fall under the umbrella of the paradigm called “Continuous Everything”. It emerged over a decade ago with the initial adoption of Agile methodologies pairing with modern engineering - with the latest being DevOps, the marriage of operations and development - to create a synergy. The Agile movement was first adopted by developers and smaller teams to help them work smarter and more efficiently. As practices slowly matured, new trends emerged. The Continuous Everything model evolved, not just to deliver code to production systems, but also to continuously integrate and test systems, performance, and code quality – thereby continuously improving applications. The book “Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment”, written by Jez Humble and Davis Farley in 2010, helped shape a new landscape of Continuous Everything. It embraces complete deployment and integration automation and the notion that software can be released to production at any time. Originally used exclusively by technology startups, this model has since expanded and is now leveraged by many Fortune 500 companies.
With goals to support critical business needs, hasten time to market, and improve application quality, organizations must evolve both technology and processes. On the process side, organizations are faced with a challenge: how to make systems, software engineers, quality assurance and business teams work together efficiently. While these groups sometimes have conflicting roles, finding and establishing a balanced and collaborative environment can provide a stable base for supporting the Continuous model. From a technology standpoint, the Continuous model relies on the cross-functional way of working with the backing of DevOps toolchain – a set of tools designed to help with development and management of applications through their SDLC.
Integration, Testing, and Deployment in the Continuous Model
Implementing the Continuous Model in Sitecore is no different from implementing it on any enterprise-grade system. With the support of Helix Architecture, a set of official recommendations and principles for developing Sitecore, we can build even better solutions that are fully compatible with modern DevOps principles. Take a look at what’s under the hood of the Continuous Model:
Continuous Integration: a process of generating fast, continuous and automated feedback on the state of the application on every code integration. The goal of the integration step is to keep the main branch clean and releasable, while continuously building and integrating new features. Often, Trunk based development, alongside feature toggle, is used by agile teams to achieve this objective.
Continuous Quality Assurance: throughout this stage of the software lifecycle, the code is tested to ensure that it meets quality requirements. Continuous testing consists of multiple components, each with their own objective.
- Unit Tests/Code Quality Tests/Service API Tests: these tests are often executed through automation pipeline during system integration. They play first-level defense by ensuring that tested classes and functions behave as per predefined requirements. Utilizing Test Drive Development (TDD) techniques provides a strong base and ensures test coverage is consistent.
- Integration Tests/Regression Tests: this is the next level up from unit tests. These group of tests designed to ensure that new requirements work correctly across multiple commits and that functionality is not diminished by introducing new logic.
- Performance Tests: these tests are designed to give developers an early and automated feedback on code quality concerning performance and scalability. This is a critical and often omitted step in DevOps automation.
Continuous Deployment is an extension of continuous integration and automatically applied upon successful completion of integration. We often use a “build once, deploy many” approach to ensure consistency of our deployment process.
Continuous Monitoring and Feedback: designed to provide continues and automated feedback on user activity, vulnerabilities, server, and application health through all phases of DevOps process.
While multiple tools are available to achieve objectives for each step of the Continuous Model, selecting the right tools is a critical process which should take into consideration an organization’s technical maturity and level of expertise.
Modular Deployment: can it be done with Sitecore?
While Sitecore Helix architecture describes the modular development approach, it still does not have an answer to modular deployment nor the ability to deploy smaller components more often. The ability to deploy smaller chunks of code could improve an already well-defined DevOps approach for Sitecore.
The limitation to deploy modularly is rooted in a few of Helix Principals positioned to make template design more reusable. This results in Modular Application architecture with limited ability to deploy individual components. We could work around this limitation by structuring our application in a way where templates’ inheritance is locked within a component. This modification, alongside with Microservice or Service Oriented Architecture, would enable Modular deployment and development of Sitecore Solutions.
Efficiency in Motion
To demonstrate the Sitecore Continuous model, we created a simple project. While we used TeamCity as a build server and TDS to serialize items, other tools are available and can be used to achieve the same objective. Our project was designed to support modular development and deployment and is based on Helix recommendations.
We demonstrated a fast and reliable way of delivering features to remote servers using Modular Deployment and Sitecore Helix Principles. The process is iterative, especially around automated testing, but can lead to almost complete automation of the software development lifecycle, thus helping shift emphasis from a technology-centric to a business-centric approach putting business and customers at the center of the equation. Selecting a Continuous Model is a no-brainer now, but choosing Modular or Monolithic deployment approaches require deeper expertise and understanding of requirements.
Are you ready to start traveling down the road to Continuous Everything? Whether you’re in early stage planning or ready to execute, connect with the Sitecore experts at Avanade to ensure a smooth journey.