Share →
Buffer

Cartoon---091515---DevOpsBenefits-updated

Like successful Agile transformations, becoming a mature DevOps organization takes time and requires a mindful approach. Effective DevOps practices are not born- they are grown. And, just like Agile transformations, you must take on a build-measure-learn approach to your DevOps transformation if you are building a mature practice.

Modern and mature DevOps practices include (in no particular order):

  1. Agile development practices
  2. Automated testing
  3. Continuous integration
  4. Managed environments & configuration as code
  5. Monitor and auditing systems

Of course, it’s unlikely that you’ll have the ability to implement all 5 of these practices into your DevOps practices at the beginning.  In fact, the most effective DevOps practices leverage an Agile approach to DevOps transformation.  By taking a build-measure-learn approach to building out a DevOps practice, you’ll likely find that these DevOps practices will naturally evolve.  Let’s take a quick look into each of the 5 DevOps practices to see how you can begin your transformation.

Agile development practices
Agile organizations are already on their way to building a successful DevOps organization.  The adoption of Agile and Lean development processes and methodologies are pivotal to DevOps.  Healthy DevOps practices can naturally evolve from healthy Agile practices.  As development organizations get faster, the speed of production releases must also increase.  As long as operations and development have healthy communication practices, Operations’ release cadence will naturally increase, provided a few other DevOps practices are observed.  Speed increases can lead to a decrease in quality so test automation is essential to improve the cadence of your production releases. Speed increases can will also lead to increased requests for new environments.  The burden of provisioning environments will tax the limited resources of Operations, so managed environments are essential, which will naturally lead to the maintaining of configuration as code.

Automated 
testing
To increase the cadence of releases, developers will need the right tools to mitigate issues inherent in building software.  Speed can introduce error, so it’s important to make sure that software is tested frequently and thoroughly.  Because development and tester resources are likely limited, you should be unit testing your code.  It’s not reasonable to expect all of your legacy code to be unit tested, but you should be taking the time to create unit tests for your new code.  The biggest resistance to creating unit tests is that it takes too much time.  But if you don’t take the time to create unit tests now, you’ll be spending that time resolving bugs which are introduced as you build off your code base.  Unit tests save time and headache in the long run and lead to faster release cadences.

Continuous integration
Continuous Integration (CI) and Continuous Delivery (CD) are the holy grail of software development.  Everyone wants it, few have it.  That’s because CI requires discipline- discipline to create quality unit tests and to build highly decoupled code that can be easily replaced and updated.  Monolithic code design makes it hard to unit test with any level of confidence, so a tighter, more decoupled approach makes moving to CI/CD easier.  A mature DevOps organization is CI/CD ready and able.

Managed environments and configuration as code
Manual processes slow things down.  We like our manual processes because we all like control, but we know that automation saves time and headache.  Manual deployment of environments in support of development team needs is costly.  Pre-defined environments and automated deployments save time and money.  By defining environment configurations and then storing them as code, DevOps teams can easily provision an environment and have it pre-configured quickly and easily.

Monitor and auditing systems
The mature DevOps team doesn’t just build and measure, but it learns.  It learns from the data it gathers.  Monitoring and auditing systems are key to understanding what is going on and essential for learning.  Monitoring and auditing are often the last tools DevOps teams put into place, but it is none-the-less a fundamental tool in a DevOps organization.  How can you learn if you don’t understand what’s happening?  And how else can you authoritatively know what’s happening without monitoring and auditing systems?

Conclusion
The path to a healthy DevOps organization starts with assessing what your strengths and challenges are.  Are your development and operations organizations communicating effectively and working together in an effective way?  Do you have a healthy agile development practice?  Are you using cloud technologies in support of your environments?  Do you automate?  Do you use configuration management tools?  These are but a few questions you should be asking yourself.

Here are a few ways you can immediately improve your DevOps practices:

  • Use DSC and PowerShell to manage your configuration.
  • Leverage Azure for managed development and test environments.
  • Increase the amount of unit test code coverage you have.
  • Improve your software development agility. (Check out our “Hack Your Agility” Blog!)
  • Start using dashboards you already have available (Azure, Chef, Jenkins, and MySQL to name a few)

Some of these recommendations are easier to implement than others, but all of them will deliver rewards in labor savings, and improved delivery times.

If you’d like to know more about ways to improve your DevOps practices, let us create a custom DevOps roadmap for you, help you improve your agility, coach you on ways to adopt configuration as code, and/or improve your unit testing practices.  We are DevOps experts and would love to help you!

Print Friendly
  • ZephanS

    Best… nwcadence comic… ever! _”OOPs, UH… Self-provisioned environments, FTW!!!”_
    Also the content makes excellent case for DevOps and enabling automated deployment.

    *REQUEST:* I would love to have a short list of “Configuration as Code” features & tools that work well with TFS. PowerShell and DSC are mentioned but not how they fit in. Chef recipes are worth mentioning I think… perhaps with pointer to related blog/MSDN topics covering integration with TFS? Also Microsoft’s InRelease integrated with TFS makes sense to mention as part of this landscape. If “Configuration as code” tooling and TFS integration is too big to squeeze in as edit or comment here then consider writing a follow-up blog post.

    *FYI:* some keywords are showing up in this article as green with underline but have no hyperlink or alt text appearing. Perhaps my IE10 browser doesn’t like the HTML (IE10 used a bit longer for Enterprise env compat testing :-)) or perhaps I just have too many windows open (GDI resource starvation?). Either way I thought I’d mention it just in case it is issue with the content itself. 🙂
    Cheers! -Zephan

  • Thanks, Zephan, for the kind words! Feel free to copy this comic and share as you wish. We just want attribution!

    I will work on a short list of CaC features and tools that work well with TFS, Powershell and DSC. Great idea.