A Complete Guide to DevOps

0
76

Modern enterprises are looking at faster delivery of quality software and quick feedback from customers, among other things. This demands the integration of development and operations teams so that they collaborate and communicate better, also known as DevOps.

DevOps is about principles, practices, and creating a collaborative environment that improves software delivery and increases business value. It focuses on people and culture to improve collaboration between development and operations groups.

DevOps is not:

  • A role, person, or enterprise
  • Something only a system administrator can do
  • Something only developers can do
  • Writing Chef and Puppet scripts
  • Tools

The goal of DevOps is to create, operate and manage complex systems with a culture of continuous improvement across all components in the product and service delivery. This includes:

  • Improved deployment frequency
  • Faster time to market
  • Continuous integration
  • Continuous delivery
  • Infrastructure automation
  • Lower failure rates of new releases
  • Faster recovery time from crashes or failures

Challenges in adoption of DevOps

Drawing from my experience in DevOps implementation, the top key challenges in adopting DevOps across large enterprises are:

  • Resistance to change: Transitioning to DevOps involves cultural shifts, process changes, and new tool adoption. Teams may resist changing established processes and roles.
  • Absence of cross-functional teams: Silos between development, operations, and other departments can impede collaboration and slow down workflows.
  • Leadership support: Lack of support from leadership leads to difficulty in initiating changes.
  • Higher budgets: DevOps initiatives require higher initial investment in the form of skills, tools and infrastructure. Aligning budgets for all these can be a challenge.
  • Security integration: Integrating security seamlessly into a continuous delivery model is challenging. Frequent code changes and deployments create security gaps.
  • Microservices architecture: Microservices architecture brings flexibility but also complexity. Managing multiple services, dependencies, and communication channels is challenging.
  • Poor automation: Most interactions between development and operations across enterprises are manual.
  • Tool awareness: The project team needs to wait for trained DevOps specialists to complete specific activities, which may lead to delayed deployment in project delivery. Availability of the DevOps specialist can be a challenge as the tools and technologies are vast in number.
  • Limited feedback channels: A few enterprises follow traditional feedback channels like emails, which leads to delayed decision making and corrective actions.
  • Non-standard processes: Teams sometimes adopt ad hoc implementation processes. There is an absence of centralised governance of approved practices.
  • End-to-end view missing: End-to-end visibility of the engineering lifecycle in real time is missing, and there is an inability to govern custom implementation of pipelines in large enterprises.

DevOps implementation utilises automation tools covering continuous integration and delivery. Figure 1 depicts the DevOps adoption framework and the stages involved in DevOps implementation across enterprises.

Figure 1: DevOps adoption framework

DevOps readiness

This is the first step where the enterprise’s readiness for DevOps adoption is assessed. Current DevOps capabilities and the tools usage across an enterprise are analysed to assess the DevOps adoption maturity level. Applications for DevOps adoption are identified based on the inputs provided by stakeholders.

DevOps planning and road mapping

DevOps planning involves the people, processes and tools to be used across an enterprise. The target stage is defined, and the transformation and execution plans are made. Business strategy and customer feedback are brought into the development lifecycle. DevOps objectives are finalised and an appropriate timeline for achieving them is estimated. A roadmap is developed to implement new DevOps processes, improve existing ones and make a list of the tools needed.

Baseline measurement: As part of baselining, the following data needs to be captured across the enterprise:

  • Number of releases in a year
  • Average time to fix a defect
  • Time taken to complete the software build
  • Time taken to complete execution of unit tests suite
  • Average time to build and test

During this step, the DevOps domain architectures covering business, application, data and technology are defined.

DevOps solution blueprint

The solution blueprint addresses the implementation of continuous integration (CI), continuous testing (CT), continuous deployment (CD) and continuous change management (CCM) subsystems.

This blueprint supports both agile and non-agile development environments to work with physical, virtualised, and mixed hosts. It also supports configuration and control across multiple product boundaries, service layers, and software versions.

Tools selection

The principles that DevOps tool selection is based on are:

  • Maximise tool usage and coverage across all services and focus on value.
  • Utilise fit-for-purpose contractor tools, or leverage customer tools where required.
  • Integration with various sources for analytics.
  • Focus on automation and productivity tools for operations.
  • Enhance application performance by combining dynamic and static analysis tools.

The DevOps toolchain comprises a set or combination of tools that aid in the delivery, development, and management of applications throughout the system’s development lifecycle. It helps to improve productivity, speed up time to market, reduce risks and increase the quality of software.

Seamless cross-tool collaboration is very important in DevOps implementation. An integrated tool system saves a considerable amount of time and effort. Proper connectivity between and across the DevOps toolchain is necessary to create a collaborative work environment around the Dev and Ops teams.

Collaborative development

DevOps supports the interdependence of software development and IT operations, thus helping enterprises to produce software and IT services more rapidly and with frequent iterations. This includes support for polyglot programming, multi-platform development, elaboration of ideas, and creation of user stories, complete with lifecycle management.

Collaborative development includes the practice of continuous integration, which promotes frequent team integrations and automatic builds. By integrating the system more frequently, integration issues are identified earlier, when they are easier to fix.

Collaborative development has the following benefits:

  • Bringing together stakeholders towards a partnered goal.
  • Focused on delivering a tangible and functional business outcome.
  • Working within a time-boxed scope.
  • Using common tools and process platforms.

Source code and software change management

Source code management is used to manage the versions and configurations of assets, merge changes, and manage the integration of changes. Developers can write source code using a code editor to implement the architecture. They need to construct, change and correct applications using a variety of coding models and tools.

Software change management supports software development by providing software configuration control and identification, visibility into the status of software changes, and management of versions of the tools needed to implement the build process.

Build, test and continuous integration

Continuous integration (CI) helps developers to integrate code into a shared repository several times a day. It allows teams to detect problems early and verify each check-in. By integrating regularly, it can detect errors quickly, and locate them more easily.

DevOps host environments may be private, public or hybrid cloud services. Cloud computing is an extremely cost-effective method of deploying, maintaining and securing desktop and server applications.

Containerisation tools

Containerisation tools help in maintaining consistency across the environments where the applications are developed, tested and deployed. It eliminates failure in a production environment by packaging and replicating the same dependencies and packages used in the development/testing/staging environments.

Repositories

Artifact repository is a collection of binary software artifacts and metadata stored in a defined directory structure. A repository stores two types of artifacts — releases and snapshots. Release repositories are for stable, static release artifacts and snapshot repositories are frequently updated repositories that store binary software artifacts from projects under constant development. As an example, GitHub is the central repository where the code is maintained. Bitbucket and Nexus are the other repository tools.

Continuous release management and deployment

Continuous deployment is wherein every change goes through the pipeline and is automatically put into production, resulting in many production deployments every day with greater delivery speed and frequency for complex applications.

In traditional software development, the changes in code are done quickly, but the reflection of those changes in a production environment takes time, which delays the product release. DevOps can solve this issue by implementing a CI/CD pipeline to speed up development, testing, and releases.

Version controls, updates, and releases are continuously monitored by using DevOps tools. Continuous monitoring across all steps of the application development, testing and deployment is crucial for a successful DevOps implementation. Log management solves the problem of aggregating, storing, and analysing all logs in one place.

The metrics that are relevant and derived from DevOps deployments are:

  • Per cent of tests automated
  • Per cent availability of automation test infrastructure
  • Product velocity or release frequency
  • Total cost reduction in capex and opex

Service management

Operations management enables a converged view of application and infrastructure performance across cloud environments. Management information provides behavioural and performance trends with automated event and log analytics.

Monitoring services ensure hardware components, OS, middleware, applications, databases and networking are covered for performance, availability, and utilisation.

DevOps analytics

DevOps leverages analytics and machine learning to automate the manual tasks involved in incident detection, troubleshooting and root cause analysis.

The types of analytics leveraged are:

  • Statistical pattern analytics
  • Textual pattern analytics
  • Configuration analytics

IT analytics tools can be used to help in IT operations.

DevOps governance and careers

DevOps governance involves establishing a set of guidelines, policies, and best practices to ensure that DevOps processes are carried out effectively, securely, and in compliance with regulatory requirements.

DevOps offers a range of lucrative careers.

DevOps architect: Promotes DevOps adoption across the enterprise.

Automation and tools lead: Drives tool implementations across the enterprise. Ensures that service management tools and processes integrate with the service delivery model, and that CI/CD is followed.

DevOps engineer: Manages the entire application lifecycle, and responds to the feedback and analytics collected from the running application.

Leadership responsibilities when adopting DevOps

Vision: Leaders must articulate the vision for DevOps adoption. They must analyse, execute, and streamline DevOps practices, and emphasise the benefits to stakeholders.

Collaboration: They must encourage collaboration across teams, breaking down silos and fostering multidisciplinary cooperation. A suitable DevOps channel must be established across the enterprise.

Process automation: A continuous build environment must be set up to speed up software development and deployment. Processes must be automated with the right tools.

Continuous learning: Developers and operations teams must be guided in case of an issue. Leaders must promote a learning culture and encourage experimentation.

Metrics and measurement: Leaders must define success metrics and measure progress.

Monitoring: Monitoring, reviewing, and managing technical operations is crucial.

Risk management: Leaders must understand the risks associated with change, and balance innovation with stability.

Benefits of DevOps

Implementing DevOps practices brings several advantages to the enterprise:

  • Faster time-to-market.
  • Improved customer satisfaction.
  • Enhanced collaboration.
  • It eliminates silos, promoting collaboration and teamwork.
  • It identifies the vulnerabilities and reduces time to deliver.
  • DevOps helps to deploy often and faster with repeatable, reliable processes. DevOps tools help reduce the time of deployment by 80% to 90% — for example, from 12 hours to 2 hours.
  • Increases quality with automated testing.
  • Enables improved and stable operations, diminished security threats, reduction of re-work, and increased reliability of service delivery.
  • Improves development productivity and overall quality by 20% with automated and early detection of defects in the cycle.
  • Improves customer value through responsiveness to change.

In short, DevOps is about creating value for users and the business.

Previous articleTrusted Platform Modules: Locksmith in the Basement?
Next articleA Beginner’s Guide to Cloud Computing
The author is an Enterprise Architect in BTIS, Enterprise Architecture Division of HCL Technologies Ltd.  Has 28 Years of experience in architecture and design, which includes Digital Transformation and Enterprise Architecture with key focus on IT Strategy, Application Portfolio Rationalization, Application Modernization, Cloud Migration, M&A, Business Process Management, Cloud Native Architectures, Architecture Assurance, Connected Intelligence, Trust, and Realization. Brings a global perspective through his experience of working in large, cross-cultural organizations, and geographies such as US, Europe, UK, and APAC.

LEAVE A REPLY

Please enter your comment!
Please enter your name here