The overall goal of the Cloud Native formula is the shift to DevOps practices, and this section begins to describe how all of these different trends combine to unleash the power of the formula.
As Wikipedia explains DevOps is:
a clipped compound of “software DEVelopment” and “information technology OPeration S“) and is a term used to refer to a set of practices that emphasize the collaboration and communication of both software developers and information technology (IT) professionals while automating the process of software delivery and infrastructure changes. It aims at establishing a culture and environment, where building, testing, and releasing software can happen rapidly, frequently, and more reliably.
This goal of increasing software release frequency is the headline message and is why the approach typically goes in hand in hand with the adoption of Continuous Delivery best practices:
“an approach in which teams produce software in short cycles, ensuring that the software can be reliably released at any time. It aims at building, testing, and releasing software faster and more frequently. The approach helps reduce the cost, time, and risk of delivering changes by allowing for more incremental updates to applications in production. A straightforward and repeatable deployment process is important for continuous delivery.
As the name suggests the goal of a ‘toolchain‘ is to define a collection of different tools, used together to achieve some broader process activity, in this case is key to making possible this higher frequency of software releases by better connecting each step in the cycle.
Given the mix of development languages (Java, .NET etc.), skill levels and existing in-house apps, this combination will vary between organizations, and there are also a plethora of tool options to choose from. For example in the Wikipedia entry for open source configuration apps alone they list numerous options, and also they make the simple but crucial point:
“Not all tools have the same goal and the same feature set.”
Netflix again provides the perfect poster child example for explaining what and how this toolchain is formed, identifying their combination which includes their own Spinnaker tool, and where and how each tool is used in the overall software lifecycle. (Read more in this detailed Netflix case study.)
Popular tools for this goal include Jenkins, a centrepiece foundation for Continuous Integration practices, and Ansible, which can be combined with other tools like Puppet and Chef to define a DevOps recipe, and in this era of Cloud-driven plenitude there is almost no end of possible permutations.
Other tool chain combinations highlight additional dimensions:
- In their white paper Continuous Testing for Continuous Delivery CA defines the role of Testing within an overall Continuous Delivery pipeline.
- Extensions are available to target deployment to specific Cloud providers, such as deploying from Github to Azure.
- xMatters integration with Zendesk to link issues to support communications.