Coming out of EMC World earlier this year and after a recent IT Transformation Week, I am finding many customers asking the same question over and over. Where should I start with respect to DevOps tools? I know, I work for EMC and you are expecting me to say infrastructure automation and the Federation Enterprise Hybrid Cloud solution. While these are foundational to any EaaS or PaaS initiative, I typically answer this very simply, namely version control and workflow.
Version control allows you to repeat and reuse managed collateral and artifacts so you can create idempotent automation processes. Version control should manage all scripts, code, and artifacts (like binaries, libraries, configurations, etc.) needed to create the infrastructure and deploy the application residing on that infrastructure. Version control is typically a collections of tools that include source code and artifact repositories that allow you to easily locate and assemble an application environment. In mature organization database schema, boot strap data, and even production snapshot are versioned and stored for reuse as needed. Without a comprehensive version control system, it is nearly impossible to create/recreate known good starting points upon which future changes can be verified and validated.
Workflow, on the other hand, mirrors the flow of work across and through your organize. It can provide you with visibility and measures into the development process that enable you to make intelligent decisions around where to best invest time and money related to agility, resiliency, and acceleration. Workflow should replicate your end-to-end process including all manual, outsourced, and automated steps along the software development lifecycle (SDLC). It should span departments like application development, testing, and operations so all changes related to given application environment are tracked similarly.
In my experience, many companies have some version control system implemented. In its least mature implementation, we commonly see source code control tools, like Git, TFS, Subversion, etc. and file shares. In more mature implementations, these tools are coupled with artifact repositories, configuration management systems, and more. What I rarely see is a workflow engine. As you move more towards DevOps, a workflow engine becomes critical to manage pipelines and provide visibility into end-to-end system. It is through this workflow that tools are integrated together enabling infrastructure, build, and test systems to work in concert accelerating the throughput of change.
Recently (Oct 2014), VMware acquired Code Stream to add workflow management to their existing automation and orchestration platform, vRealize. Code Stream is a DevOps offering that automates software release processes and enforces governance across release stages. At its core, Code Stream is basically made up of three components:
- An API library that enables integration with industry leading tools like Jenkins, Git, Artifactory, Nexus and VMware’s own vRealize suite
- A modeling tool that can map out basic SDLC development and deployment pipelines (Note: these workflows can be extended using vRealize Orchestrator and or custom scripts)
- A dashboard to provide optics into a commonly invisible and complex process
In short, Code Stream provides a solid workflow modeling platform for defining and managing deployment pipelines in support of continuous delivery.
Unlike other standalone tools in the market, Code Stream is unique in that it is built into the vRealize appliance. This relationship affords Code Stream much tighter alignment and integration with the underlying infrastructure automation platform, namely vRealize Automation. Where many tools struggle with that ability to trigger infrastructure services, Code Stream can not only employ provisioning tasks of a vRealize Automation Service but also access its catalogue of machine blueprints. This becomes particularly useful with multi-machine profiles, complex network configuration, and other policy-based parameters that are often needed to construct an end-to-end application environment to support a legacy applications like Oracle or SAP. Other tools in the market can directly connect to management APIs of the hypervisor to provision virtual machines but they lose the policy-based decisioning capabilities that are included in vRealize.
As you begin your DevOps journey and are wondering what tools to start with, think version control and workflow. For VMware shops especially those that haven’t already made a significant investment in Jenkins, Go, TeamCity, etc., Code Stream is a powerful DevOps tool that can quickly enable teams of infrastructure and development people to model processes and integrate tooling to automate both infrastructure and application development processes.