Being DevOps with Sitecore

DevOps has become the new buzz-word, just as the words "Agile", "Services", "Framework", "Platform" and so many others.  Anyone who remembers what these terms were supposed to mean, have learned to ignore the people who use them, because they are almost always used wrong. 

What's a "DevOp"? 

The term DevOps is a methodology (or set of principles) that promote merging the responsibilities of everyone who is involved in the process of building and managing software such as architects, developers, testers, and operations.  DevOps puts a strong emphasis on removing friction through viability (the availability of information) and automation (testing, deployments, and monitoring).  On teams with a strong DevOps culture architects and developers will build software that has already been unit tested, emits data about how the application is performing, and has the hooks that allow for validation and testing of the running application in production. Testers develop automated tests that can validate the running application after every deployment, or whenever they need with little effort. Operations build deployment automation, log ingests, and monitors that identify issues before the customers are affected.

DevOps with Sitecore

When you read about DevOps a lot of what you'll read about is micro-services, micro-sites, docker, kubernetes, ansible, etc.  These may be things that either do not fit well into a Sitecore deployment or things that we are unfamiliar with.   This does not mean you cannot be DevOps with Sitecore, it doesn't even mean it makes it difficult.


There are probably a near infinite number of things you can do to make a Sitecore development and operations teams be more DevOps.  Here are some Sitecore specific things you can implement in your Sitecore environments to promote a DevOps culture.
  • Enable xDB: Data collection is a huge part of DevOps and it doesn't really get a lot of attention.   The more data you have about what your application is doing and how people are using it, the better you can optimize it or even more importantly know when something is wrong.
  • DataMine your logs:  Sitecore provides a huge amount of information about how your application is performing. Don't wait to look at the logs until after an issue is identified.  Creating a log ingest into a consolidated data lake with tools like Splunk or Logstash (ELK) can expose logs near-real-time and allow issues to be identified and resolved before they surface.  Your IIS logs, logs from CDNs, and custom logs can be ingested as well.
  • Create Automated Acceptance Tests:  You should be able to test features of your application while it is running.  Tools that do simple health checks can tell you the application is running but having tests that can run through the site's flows from end-to-end can give you loads of confidence that everything is healthy. Automated tests should be run as a final step during deployment, upgrades, and OS patches. 
    • To make acceptance test automation possible developers can output information about data source IDs and rendering IDs in the markup of the pages which can make validations easier and more stable.
  • Create an Automated Continuous Delivery Pipeline:  This means that code can flow through fromcheck-in to production without any manual work.  Deployment instructions should be "push the button".  Tools like Octopus Deploy or Release Manager can be used to create awareness and push button deployments.
  • Version Control Your Templates, Layouts, and other Developer Owned Content: There are some items in Sitecore that define Data structures/schema and behavior that are developer owned assets. Using tools like Unicorn or TDS Classic make this extremely easy.  Then, just like code assets, content can be versioned, have automated deployments, be tested/validated, and have a rollback strategy.
  • Have an Automated Rollback Strategy: Develop a rollback strategy.  Moving fast sometimes means that unexpected things happen.  If anything goes wrong rollback and patch forward.
  • Be Lean (Follow the Lean Development Philosophy): Refer to http://bisstalk.blogspot.com/2016/09/go-lean-high-velocity-high-quality.html on being Lean with Sitecore.
  • Use Sitecore PowerShell Extensions (SPE):  This module is a dream come true for all things DevOps. 
If this is a topic you are interested in leaning more about, I will be speaking in a panel at the 2017 Sitecore Symposium in Las Vegas, NV on October 16-19 http://www.sitecore.net/events/symposium-2017/developer-track. The discussion will be lean by the infamous Jason St-Cyr of Sitecore and will feature myself from Comcast, Kam Figy of ConnectiveDX, and Derek Hunziker of Hedgehog.
No comments

No comments :

Post a Comment