By Peg Eaton
As Practice Director for VMware’s DevOps & Cloud Native Apps Professional Services team, I lead a a specialized team of developers with decades of experience helping customers reach their DevOps goals.
In our experience, many organizations have accepted that they need to apply DevOps best practices to accelerate application delivery, and they are in the early stages of developing their strategy for moving forward.
They’ve heard terms like continuous integration and continuous delivery, but have difficulty mapping out what their optimal DevOps tool chain would be, faced with a large, and growing number of technology options, a lack of standardization, and very often, widely differing opinions within the organization on what’s right for them.
In this short video, I walk through our own best-practice example of a Continuous Delivery Pipeline, discuss the software stacks that comprise the tool chain, and pass on DevOps best practice advice along the way.
The Continuous Delivery Pipeline
The Continuous Delivery Pipeline contains inter-related software stacks which support the pipeline stages and activities; enabling repeatable and reliable software delivery by application teams.
You will notice notice as we go through the stacks….you have options. You might choose VMware solutions for some of these areas. Or you might have made other investments. That’s ok. We believe in our products, but we’re committed to helping you create a seamless integration between all these moving pieces, regardless of which software solutions you choose.
Let’s start with the Planning Stack. This software stack supports agile development throughout the delivery pipeline — planning and tracking software releases; creation of user stories; sprint planning, backlog management, and issue tracking. Typical tools used in planning are JIRA, Redmine, Trello, GitHub Pages, and MS TFS
Next in the toolchain is the Coding Stack. The software in this stack is used for the coding effort against the user stories. We have integrated development environments, editors, debugging tools, and unit-test tools. Geany, Atom, Eclipse, MS-TFS, and vRealize Orchestrator are commonly used tools. Other software in this stack used to support application development: pre-configured developer-workstations, and the environments for application unit-tests (essentially a set of VM blueprints).
The Commit Stack supports version control and many best practices including: daily check-ins, committing assets early and often, automated style-checking, and code reviews. Typical tools include Git, GitHub, MS TFS, and Gerrit.
Developers need fast useful feedback once code is committed; continuous integration tools support automated software builds and automated smoke tests. The Continuous Integration Stack, uses tools like Jenkins, Gerrit Triggers, and vRealize Automation.
The Testing Stack is used in managing testing throughout the software development lifecycle. The key to high productivity and quality code is developer-driven testing in production-like environments for each phase of the lifecycle — it is more effective to expose and remediate issues earlier in the lifecycle. For this stack, you can use tools such as Selenium, REST-assured, soapUI, SonarQube, and vRealize Automation.
The Artifact Management Stack supports the management of application artifacts including binaries; and provides package version control and dependency management of the artifacts. Tools for artifact management include JFrog Artifactory, and vRealize CodeStream.
The next stack focuses on Continuous Deployment and provides support for consistent deployments to every environment – UAT, Staging, and Production. You can use tools like Jenkins, Ansible, vRealize Automation, and vRealize Orchestrator, and vRealize CodeStream.
Next in the tool chain is the Configuration Management Stack, which supports application and environment configuration and is often tightly integrated with the deployment stack. Typical tools in this stack are Ansible, Chef, Puppet, and Chocolatey.
The Control Stack comes next, and is used for application and infrastructure behavior monitoring — alerting, dashboards, logging, capacity management throughout the release process and into production. You can use the vRealize Suite at this stage, including vRealize Operations and vRealize Log Insight, as well as Nagios.
Last but not least is the Feedback Stack, which provides automated feedback to the right people at the right-time during all phases — alerts, auditing, test results, build results, deployment — touching all areas of the pipeline. Github Issues and Slack can be effective tools in this stage.
There are a LOT of moving pieces – it is COMPLEX – and I am sure you are concerned about how in the world to make them all play nicely together! Our capability is in getting all of these moving pieces to work together for a continuous, well monitored flow.
So how does this tool chain help your Dev and Ops team to accelerate application delivery?
Well, application development teams today have moved into the traditional infrastructure and operations space in order to accelerate application delivery.
Application teams require fast-feedback and optimal execution flow during the development life-cycle, and for this they need consistent, production-like environments everywhere and on-demand, continuous integration and deployment, and automated testing throughout the application release lifecycle.
As a result, the dev teams are deploying and managing tools, and automating tasks throughout the life-cycle to support these requirements.
Infrastructure & Operations teams that are concerned with governance and stability can participate in this “shift-left” by working in a high-trust culture where Dev & Ops collaborate to build the optimal execution flow.
Treating infrastructure like code benefits both Dev and Operations, enabling you to version infrastructure definitions with code and use consistent, production-like environments everywhere
A shift-left takes the burden of tool-chain management off the development teams and provides the infrastructure & operations team the visibility, governance, and control to support the business.
VMware DevOps Foundation Solution
The VMware DevOps Foundation Solution (currently available in North America only) enables our customers to implement and operate a Continuous Delivery tool chain with prescriptive stacks of best of breed tools based on common industry patterns and your own environment’s requirements, whether your apps are developed using C#, Java, Python, Go or other programming languages.
The fact that our stacks are pre-integrated means they are ready to use much more quickly, thereby providing a faster time-to value in delivering your applications.
Worried that you are already using a certain tool that you didn’t see in this presentation – don’t worry, these stacks are flexible and we have worked with almost every tool on the landscape.
Creating the DevOps tool chain that will work for you can be complicated, but we’re here to help.
To get started, contact your VMware rep to set up a 1-hour meeting with my team to discuss your goals for Continuous Development. We will then schedule a half-day workshop on continuous delivery and DevOps best practices with your development and operations leaders to kick the project off on the right foot.
We look forward to working with you to make your dreams for accelerated application delivery a reality!
Peg Eaton is a practice director for VMware’s DevOps and Cloud Native Apps Services Organization and is based in Massachusetts.