CI/CD in Sitefinity: View from the Cloud

Deel dit bericht

Silver linings are for the faint-hearted. If you're getting your hands dirty, you want to squeeze every bit of performance out of your CMS. Today's weather update: cloudy with a chance of DevOps.

As a cloud-native CMS, Sitefinity Cloud has all the infrastructure and tooling required for developing modern and future-proof digital assets. An all-round platform-as-a-service that goes beyond web content management to uncompromisingly deliver the development tools and CI/CD pipelines for productivity with minimal risk, zero downtime, quality and confidence. From smart devs, for smart devs.

In the Driver's Seat
So, cloud or bust? No, that’s not the question. Far from it. Let’s take it one step at a time and focus on the job we do—which is to say, let’s focus on the journey instead. We all know development can be a bumpy, uphill ride sometimes. Plan. Code. Build. Test. Deploy. Release. Maintain and monitor. Repeat.

Software development is a cycle and you don’t want it to feel like you're going in circles. You want everything running like clockwork.

In this blog, we’re taking a closer look at Sitefinity Cloud and its underlying architecture, as well as the components responsible for the speed, security and availability that can make or break modern web experiences. Fully catered in terms of infrastructure and DevOps, a cloud-native CMS like Sitefinity empowers developers by automating the build and deployment process. All that, in an elastic scaling environment with enterprise-grade security.

Not only can Sitefinity tap into the robust Azure infrastructure with ease but those powerful innards are finely configured to ensure the superior performance and availability of your websites and applications. Through intelligent use of multiple tools and services such as load balancing, autoscaling and geo-replication, Sitefinity Cloud adeptly manages traffic highs and lows to bump resources up or down depending on the workload.

Moreover, a deployment failover mechanism and blob storage do well to provide comfortable rollback options in case of corrupt data, bad code or any other unforeseen event. Failed deployments to the production environment are automatically reverted to the last known stable state with zero downtime for the live website or application.

Cloud DevOps: Textbook CI/CD
Regardless of the setup—on-premises or in the cloud—you want to get the maximum in terms of security, performance and scalability. Note that getting the intricate configurations right in terms of load balancing, content delivery, backup, recovery and application security may not always be feasible in an on-prem environment.

For each Sitefinity Cloud instance, they have been set up by the very teams that develop the product. What this means is that you can be certain your CMS was deployed in the cloud with the best performance settings and the most efficient management of available resources.     

A top-grade commercial cloud has the infrastructure and components to deliver both client and server-side performance. Sitefinity takes full advantage of CDN (not limited to Azure), a high-performance (Redis) cache, a Web Application Firewall and Azure AD for securely managing user roles and permissions.
Not least, Azure DevOps provides premium tools for automating many tasks related to the development, upgrade, integration and customization of web assets. Sitefinity Cloud is fully in tune with modern DevOps practices, with built-in CI/CD capabilities letting dev teams code, test and deploy new functionalities with the click of a button.

Whenever you need to push an update—be it an extra template, custom widget, a whole new feature or, cloud forbid, a bug fix—your process for collaboration, development and deployment needs to click at every stage. You need a seamlessly integrated code repo, sanitized DB backups, staging and production environments, gated pipelines and a meticulous approval routine that rules out uncontrolled promotion to production. And, because you’ve seen it all, you need failsafe and rollback options.
Git, Pipelines, Deployment
Guess what? Our very own Engineering and DevOps teams have seen it all too. That’s why Sitefinity Cloud comes with a CI/CD setup in line with the best Sitefinity web development practices and fully utilizing the potential of the underlying Azure services.  

CI/CD in the cloud packs Git for source control and versioning, prebuilt but configurable build and release pipelines, staging and production environments, a deployment dashboard and comprehensive logs for troubleshooting and detailed analysis.

The development process follows a standard Git workflow with contributors coding locally in feature branches, which are then approved and merged via pull requests and deployed by automated CI/CD pipelines each time approval is requested and granted at the designated gates. It’s an elaborate but sufficiently automated and, ultimately, a highly reliable code deployment routine.

Better yet, the downtime when deploying to production is reduced to practically zero. A Sitefinity Cloud instance is always preconfigured with a production slot, deployment slot and a failover slot. While the production slot is serving content to the end users, the deployment slot is ready to receive deployment packages, promoted from the Staging environment via the CD pipeline. Both the production and deployment slots are connected to a primary database.

As a failsafe in case of a deployment gone bad, a failover slot is designated to each instance and connected to a secondary database—essentially, a clone of the primary DB. The two databases are kept in sync via geo-replication.

As the newly promoted package is making the rounds, the slots swap identities and the relevant database versions follow suit in what’s essentially a classic blue-green approach. The original, pre-update deployment becomes production, and what used to be production becomes the new deployment slot, which now keeps the previous, pre-update version of the code. In the meantime, the geo-replication between the primary and secondary DBs is turned off and back on, as they too swap states.


The whole procedure ensures you always have a rollback ready to trigger if anything goes wrong and can push—or revert, if need be—your updates with practically no client-side downtime. This clever setup takes advantage of performance optimizations built into the Sitefinity platform as well, as the Warmup service kicks in to request and store priority pages in the output cache for a near-instant response after deployment.

To sum it all up, this is our take on a comfortable and secure environment that enables developers to deliver updates faster and safer. It is part of a consistent effort to provide the best tools for the job, so you can focus on exactly that—your job.

I mean, what makes great websites and apps tick? Users are likely to engage with better looking and responsive websites, right? Call it eye-candy, call it UX—frontend development, web design and usability will always be paramount. Of course, speed, security and availability go without saying but that’s where the cloud has you covered.     

A cloud-hosted platform has the architecture and components responsible for speed, security and reliability, all available and configured for best results. That means an in-house team doesn’t need to worry about these concerns and can just focus on the look, feel and features instead. Sitefinity Cloud gives you all that in a package that may just be greater than the sum of its parts. 
More information about Sitefinity.

Anton Tenev is member of the Sitefinity Product Marketing team at Progress.