The Need of DevOps in Digital Transformation
Today, Global 500 companies to small startups are facing an increasingly competitive business environment in which they need to survive and hopefully grow. Almost all businesses are getting digitized today and run on software and outreach using mobile computing. The digital transformation is about creating new business models by blurring digital and physical worlds. Even the traditional or smaller businesses around the world are transforming digitally to achieve unprecedented agility beating competition. A local key-maker in rural part of India has the poster on the road side flea market in India asking customers to text him to connect with him and you get a text back when your keys are ready. Companies around the world are looking for agility in mission-critical IT services, Digital Business, Mobile Apps, Big Data and analytics apps, e-Commerce apps and emerging IoT applications. They need instantaneous updates to these applications that run their business, in many cases to survive.
Applications that run such businesses have evolved over time from developers taking months to plan, to developers deploying app updates to production in minutes. The applications types have also evolved to match the speed, from monolithic client server apps to 3-tier apps, cloud-hosted to micro-service apps which are now delivering dramatically better web user experiences and know-me or connected mobile experiences. How does this transformation happen for a business achieving speed using agile development? How are these businesses gaining speed of deploying updates to production? How application environments are getting setup in application dev to production? This is when Dev has to meet Ops achieving continuous integration and delivery of application updates in production that may be in Data Center or hybrid cloud with partial leverage of public cloud.
The role of infrastructure in DevOps
The origin of DevOps momentum started with the notion of “Agile Infrastructure” as faster Agile at Agile 2008 Conference. DevOps term became popular in the following years building up on agile development methodology. Organizations that have adopted agile software development are seeing increasing quantities of releases, and rapid deployment of such releases in staging and production is the obvious next steps to speed up time to value. DevOps was essentially born from this increasing popularity of agile development and need of realization of business value from it. DevOps is development methodology that builds on agile development with a set of practices aimed at bridging the gaps between development and operations/production, emphasizing communication, collaboration, continuous integration with automated QA and deployment. Because DevOps is a cultural shift and collaboration between development, operations and testing, there is no single DevOps tool, rather a set or “DevOps toolchain” consisting of multiple tools for coding, building, testing, Packaging, releasing, Configuring and Monitoring.
Infrastructure as code is the prerequisite for common DevOps starting points aligning with tools for version control, code review, continuous integration and automated testing. These DevOps starting points are critical for you to achieve continuous delivery of quality software that pleases your customers.
Dev and Ops coming to the same table for DevOps
Once an organization decides to bring the culture shift required for DevOps practices, the expectations are sky high on getting DevOps implemented and its benefits realized. This move to DevOps could be very disruptive. Recently, I met a Global1000 customer and the team was looking for advise on getting started on DevOps with their LOB dev teams and IT running UCS-data center. We approached the conference room table and the dev head sat towards my left, the Ops head was on my right, the infra admin lead facing me to the right while network admin and security admins were facing me but sitting to my left and server admin took the seat directly in front of me. Virtualization admin was absent as he had gone to some other cloud conference. All eyes were on me as if I was supposed to take out a magic wand and that makes DevOps happen. I could see that the teams were struggling to gain trust of each other and looking for advice on various topics. This situation is seen in many many organizations today and most DevOps initiatives fail several times in the beginning due to not taking foundational steps first e.g. Infrastructure Automation for implementing infrastructure as code and not understanding the criticality of the Culture Shift of DevOps.
Key best practices for getting started on DevOps revolve around 3 things - Automation, Automation and Automation of everything you do! My advice to many such challenged organizations is this –
- Create Center of Excellence(CoE) for DevOps for getting key stakeholders to continue to buy into DevOps culture shift.
- As part of CoE DevOps, create a team of devops engineers(overlay team) and program managers that participate in every development epic/sprint team and understand what needs to be; and can be automated in the dev lifecycle including QA.
- Have the devops engineers from the CoE DevOps, work with the Ops team to capture application delivery and compliance requirements and implement automated delivery of the application changes as soon as possible.
- CoE team should work with Infra admins to automate infrastructure and creation of necessary application environments that need to be spun up and down during automated delivery and testing of application changes.
- Choose key metrics and important status data points from the “DevOps tool chain” and create a dashboard for DevOps that various teams can refer to. There are many so-called DevOps platforms that weave in the tool-chain but be ready to create a custom view to gain visibility and control into the DevOps transformation.
Infrastructure as code – Foundation for DevOps
So we established the fact that you want to implement DevOps practices and you do want to take on the culture shift among the Dev and Ops teams. You have already been doing Agile development for a few years. Your DevOps journey further truly requires accomplishing automation in infrastructure configuration for consumption and automation in consumption of the consumable infrastructure during CI/CD automation. This infrastructure related automation and programmatic consumption of infrastructure is the concept called Infrastructure as code. With Infrastructure as code, you can deploy application changes faster, with greater reliability, because you no longer have to map out and manually deploy every step towards production. To achieve infrastructure a code, there are two important best practices that need to be established in Data Center and even in hybrid environment –
Infrastructure Automation – This is about automating manual steps in infrastructure configuration of compute, network, storage and virtualization by Infrastructure Developer – a role that is typically played collectively by IT admins. Like you have seen in the QA test automation evolution where automation engineer role was born with dev-like skill set and the traditional QA engineer fell short unless they acquired the development skills to automate. Similarly, in infrastructure automation, the new breed of infrastructure developers is surfacing to implement infrastructure automation with right set of automation and management tools so the infrastructure is consumable in the form of a private cloud and augmented by public/hybrid cloud from the DevOps CI/CD automation scripts.
Application CI/CD Automation – This automation is all about creating automation of automation (AoA) seen within each individual tool of the DevOps tool chain as below. This automation role is performed by the developers or the emerging devops application developer.
Code – Code development, repository and review, Version control tools, code branching and merging Build – build integration tools, build status
Test – Test and results, determine performance changes
Package – Artifact repository, application pre-deployment staging
Release – Change management, release approvals, release automation
Configure – Infrastructure configuration and application environment mgmt, Infrastructure as Code tools
Deploy – Deploy the applications based on the desired configuration
Monitor – Applications performance monitoring, end user experience
Common CI/CD automation tools are Ansible, Saltstack, Puppet, Chef etc. that weave in the DevOps tool-chain achieving end-to-end automation for DevOps.
Automation of UCS-based Data Center and Private Clouds
Cisco Unified Computing Systems enabled organizations around the world to transform their Data Centers with converged and now Hyperconverged infrastructure with compute, network, storage and virtualization, cutting down operational costs while delivering the highest performance infrastructure for running various types of applications in various deployment environments with policy-driven end-to-end automation.
To implement infrastructure as code to fast start DevOps, UCS Unified Management offers UCS Manager and UCS Director to help implement the two important automation practices as below –
Infrastructure as Code Powered by Unified UCS Management – Unified UCS Management portfolio includes UCS Manager, UCS Central, IMC Supervisor, UCS Platform Emulator and UCS Director. UCS Manager(UCSM) provides comprehensive programmability to rapidly standup compute infrastructure for application environments via choice of various forms of APIs including Python SDK and integrations into 3rd party automation tools like Puppet and Chef. If you are already on the path to create infrastructure automation using 3rd party tools, UCSM programmable interfaces help you close the gaps with UCS. e.g. Bare metal provisioning, setting up service profiles, policies, pools, equipment, network and storage, synchronize UCS domains etc. UCS Central adds multi-domain UCS support by taking advantage of the programmability of UCSM.
The UCS Platform Emulator an amazing innovation by Cisco to help infrastructure developers or Application devops developers to start on getting infrastructure automation and DevOps CI/CD automation code. The UCS Platform Emulator mimics the all UCS programmability so the developers can complete the automation even before the new UCS hardware arrives.
Unified UCS Management programmability is about automating manual steps in infrastructure configuration of compute, network, storage and virtualization by Infrastructure Developer, so the infrastructure is consumable in the form of a private cloud and augmented by public/hybrid cloud. UCS Management Portfolio tools further enable the CI/ CD automation by the devops application developers.