Devops represents a culture change in how development and operation teams partner, and a set of best practices that drive automation, reliability, and speed in deploying changes. The alignment is driven by a shared understanding between agile development teams who want to release code to production frequently and by operations employees who must support high reliability, security, and scalability of applications, databases, infrastructure, and networks.
Automations such as CI/CD (continuous integration and continuous delivery) and IaC (infrastructure as code), platforms built using containers, and environments managed with AIops are all devops practices and technologies. For many organizations, maturing these primary devops practices may require hiring people with the needed skills, training others, testing new technologies, iterating on the implementation, and developing approaches to scale and standardize practices.
Although it might be tempting to experiment with all these practices, in reality it can be a tall order for many technology teams. It’s more practical to identify a small area to start, rack up some wins, and then expand the program.
Understanding business and technical objectives
Whenever a technology organization invests in a new tool or practice, it’s best to consider the drivers, impacts, and KPIs (key performance indicators) that underpin the initiative. Before kicking off a devops program, the team should identify a handful of business sponsors and develop a statement identifying and prioritizing problems and opportunities. Some example problems might be:
- Long MTTR (mean time to recovery) for an application.
- Configuration discrepancies between development, test, and production environments that compromise application testing.
- Manual application deployment practices that are error-prone and prevent development teams from deploying changes as frequently as required by the business and end-users.
Opportunities might include:
- Instituting infrastructure standards while migrating from on-premises to cloud infrastructure.
- Investing in microservices or other architecture changes where implementing cloud-native and automated configurations yield long-term benefits.
- Improving test automation for applications that are experiencing increased usage and investing in new features.
Leaders should review the KPIs associated with devops programs and then consider how to force rank the full list of problems, opportunities, and KPIs. The ranked list should help decide which devops practices to focus on first.
When to prioritize CI/CD and continuous testing
Some organizations invest heavily in their applications and release improvements on a regular schedule. If dedicated development teams are assigned to release application improvements, that’s a strong indicator that starting devops by developing CI/CD and continuous testing may make sense.
There are other considerations. Not all applications are of equal importance to the business or get the same investment in development. Most organizations prioritize application development efforts by business factors, including revenue, the business impact of workflows, and usage. It stands to reason that applications that are of higher business priority or experiencing growth in usage may be the right starting areas.
The underlying architecture is also a consideration. Architecture that is complex, has tightly coupled components, uses legacy technologies, or harbors significant technical debt, isn't the best choice for early CI/CD efforts. The best opportunity is with an application or platform that’s a business priority and has a simple architecture.
When to start devops with IaC and containers
Let’s say you aren’t doing a lot of application development and deployment but still maintain many computing environments for different business purposes. You might have CRM or CMS systems and BPM tools deployed to private or public cloud environments. There may be little development done on these platforms, but they still require development, testing, staging, production, disaster recovery, and other types of environments to support different lifecycles.
There may be little need to support CI/CD for these commercial or open source platforms, but the operations teams may yield significant benefits by configuring its infrastructure as code.
Another example is supporting large data science teams who are testing models, building databases, and integrating new data sources. Standardizing the infrastructure for data science teams enables ramping up and resizing compute capacity based on their needs.
If the infrastructure is the focus area, then selecting an automation platform between Chef, Puppet, Ansible, or others is an important decision. Equally important is to determine whether and how containerized workloads and services provide advantages, and whether to use Kubernetes, Docker, or other technologies.
What is AIops and when to consider this priority
Let’s say you already run applications in a private or public cloud such as AWS or Azure and have stable environments that don’t change frequently. There might be little motivation to rebuild these environments with IaC. Similarly, if applications are deployed infrequently and only small support and maintenance issues fill the agile development backlogs, investing in CI/CD may yield only marginal benefits.
A third path to devops is by increasing the level of monitoring and using machine learning to aid in incident response, now more commonly termed AIops. This path to devops may be most critical to better support unstable applications, multicloud environments, or when operations teams are inundated with system alerts managed by many monitoring tools.
AIops platforms, including BigPanda and Splunk, are designed to aggregate data from log files and multiple monitoring platforms, process the data using machine learning, and route incidents to the correct parties.
AIops can help engineering teams improve their MTTR and help developers discover the root causes of application issues. An AIops solution can provide the data to prioritize where to address technical debt and whether to replatform applications that are experiencing growth or stability issues.
The best time to begin a devops program
Timing is everything, especially when it comes to investments in technology practices and platforms. Devops investments can’t be done easily under the radar, so determining the priorities and timing is essential to garner organizational support. Here are some opportune times to consider prioritizing devops or bundling practices into an existing business initiative:
- Cloud migrations are great times to invest in IaC and containers.
- When a development team is considering new architectures, automating the IaC and then configuring CI/CD is best considered after any proof of concepts are done but before development begins.
- Business leaders are concerned about IT systems stability, or specific applications are growing in usage.
Wherever and whenever you begin, keep in mind that to achieve business results and improve KPIs, instrumenting the platforms and practices is not enough. Culture change needs to be a priority so that developers, engineers, and technology leaders collaborate around the implementation and drive real impact for the business and end-users.