DevOps is not a physical or virtual product, nor a cloud based offering. It is a set of processes (a framework) implemented in organizations to establish seamless communications between Development and Operations teams, primarily used to roll out new instances or upgrades to applications quickly and reliably. Business applications are the key to any business today – and keeping these applications up to date is crucial to fulfill security and compliance requirements. DevOps serves an operating system for today’s organizations that rely heavily on their applications being current, and always available anytime anywhere for their customers.
Reducing the speed to market for new products and new releases is an ongoing challenge for businesses. By defining and following processes that allow the developers to pick the latest stable version of an application or software, add or update any code sections that need tweaking, perform preliminary functional and integration testing, and deploy the updated code – all in an automated fashion with a single click of a button – immensely increases the speed to fix any discovered errors in production environments, and guarantees a consistent deployment every time.
Let us take a look at some of the common use cases for implementing DevOps, as well as some challenges associated with it.
Infrastructure as Code
Customers may have hundreds or thousands of business applications in their environment. These range from business critical tier1 applications to backend system supporting applications. Also, there may be a mix of custom applications and commercial-off-the-shelf (COTS) applications. The application owners and architects, responsible for making sure their applications are always up and running, may end up consuming Cloud capabilities and resources if their own internal Infrastructure teams are unable to cope up with the ever increasing computing demands and agility from the application teams. In order to address this phenomenon, the Infrastructure teams need to implement the same agile processes that traditionally have been the cornerstone of application development.
Setting up infrastructure as code involves – a) breaking up infrastructure components in to smaller divisible core components that can be reused, b) creating “golden images” of vetted infrastructure configurations, and saving them in central repositories, c) deploying the same configurations consistently and automatically, to reduce or eliminate configuration drift caused by human errors. By coordinating infrastructure release cycles with application releases, and using similar version-control methodologies, infrastructure teams can now provide solutions (on-site or in the cloud) with flexibility, speed and cost effectiveness for the hosted applications. This agility now allows infrastructure teams to deliver infrastructure as code.
Implementing a CI/CD pipeline
A Continuous Integration and Continuous Delivery pipeline is an implementation of the automated software delivery process. A CI/CD pipeline connects to a code repository, and has an automated process that picks up the latest code changes, builds and packages them, and deploys them to higher environments. As the code progresses from Development to QA environment, role based access control limits the development teams from making any further changes to the packaged code so as to preserve the integrity during testing. As the code is moved from QA to Production, access is limited only to the application and infrastructure administrators. Having a well-implemented CI/CD pipeline reduces mean time to resolution (MTTR) as it allows for smaller code changes and streamlined testing.
A few challenges
To implement DevOps best practices, most of the challenges are related to the change in processes, or related to change in people culture. Traditional infrastructure teams need to be trained on microservices, agile methodology, and the concept of treating and deploying infrastructure as code. Traditional application owners and developers need to work with their internal IT teams to outline specific requirements for application availability, scalability, compliance, and security – so the IT teams can better prepare for those requirements – rather than practice shadow IT by consuming available Cloud offerings directly. The teams need to understand the new metrics and measurable KPIs for the new processes, as well as get trained on new tools and technologies that help implement DevOps much easier. All this can take time and effort, but once implemented, the IT organization can help differentiate the business against their competitors – since the business is now able to respond to business application challenges and security threats much faster.