By now, most organizations understand the benefits, and more importantly, the need to shift to an agile, DevOps model to survive in today's rapidly changing and hyper-competitive digital world. In our four-part series, we have discussed how DevOps can transform your organization, and how to prepare for the transformation through the critical first two steps of the DevOps journey: implementing governance and workforce management. In the final blog, we will discuss implementing the "automation of everything" (don't worry, we'll explain what that means below). Even though this will wrap up the series, it's important to understand that the DevOps journey does not end here, as creating an agile environment that facilitates continuous improvement and integration requires an ongoing effort.
What does the automation of everything mean?
While automation is a core component of DevOps, a typical mistake organizations make is treating the two as equal. While automation is an essential tool to enable DevOps, it is not the ultimate panacea.
Instead, a successful DevOps implementation requires a complete overhaul of operational processes and company culture to align IT with the overall business strategy. As business strategies and requirements are continually changing and new technologies and services must be rolled out faster than ever, organizations need to be agile enough to respond quickly and efficiently across all tiers, and that's why careful governance and workforce management plans need to be in place before embarking on the "automation of everything", or the actual execution of agile DevOps processes and automation technologies that are based on carefully planned rules and policies.
Once you have established a firm foundation for your DevOps environment, you can take the next steps to systematically automate the processes and applications being deployed on your infrastructure. Based on the governance processes and the workforce management policies you have created, you can ensure that the right people will be assigned and held accountable for the designing, building, deployment and running functions throughout the ongoing journey. In other words, you are now on the path of turning your environment into an automated assembly line that allows you to rapidly introduce new features, functionalities and services in a controlled and managed fashion.
Automate the infrastructure
The first phase of your automation-of-everything journey should be to design the infrastructure components of your environment and deploy tools that enable all infrastructures to be defined in software. The most effective approach is to start with the infrastructure systems that are changed most often. This may be access control changes, or application deployments; whatever is touched the most should be the first to be automated.
Some common and useful DevOps automation tools are Chef and Terraform. With these, for example, you can do things like define your network configurations such as subnets and access controls on firewalls or manage security access systems such as AWS security groups. However, many organizations are moving to hybrid on-premises and cloud environments, and implementing automation can be pretty tricky. For example, automating on-premises or collocated systems that are running traditional compute, storage and networking systems is not as straightforward as it is on cloud-based systems with more advanced and native automation capabilities.
To facilitate and accelerate this part of the journey, working with a partner who understands the DevOps toolsets and has substantial experience with tried and true automation techniques is an option well worth considering. Managed service providers can also help guide you through the process in proper order so you can make your agile DevOps vision a reality. The end goal? Enabling faster time to market and more efficient use of resources to design, build, deploy and run the services that are creating the value for your organization.
While the DevOps journey will be different for every organization, there are five key steps every business needs to take to be successful in automating everything.
- System deployments. Define and implement the automated deployment of all base systems. Include: compute, considering the use of containers. Storage with engineered solutions for block and object storage that permit the use of tiered solutions to lower the costs of long-term storage of untouched but needed objects and file systems. Networking, by implementing SDN as quickly as possible; and security with engineered solutions the cover compliance needs and can be fully automated for deployment, monitoring, and resolution.
- Application deployments. Define and implement the automated deployment of all BSS, OSS and customer applications to enable a hands-off process from development to production. This step should also include all of the automated testing needed to ensure full user regression to enable continuous integration and development (CI/CD).
- High availability and disaster recovery. Define and implement automated recovery processes that permit the detection and recovery of failures. You also need to ensure that this can be simulated during the systems build process both on individual components and the entire system.
- Scaling. Define and implement performance testing and orchestration of system components to enable scaling of components and the platform for cost management in a reliable and automated fashion.
- Cybersecurity. Define and implement intrusion detection and prevention systems that monitor application security during coding and QA to prevent unwanted access to systems and application data during operations.
Why automate everything?
The journey to DevOps requires careful planning and an overhaul of company culture, and automation is at the core of a truly agile business. Implementing automation not only enables you to get products and services to market faster but also frees up time to work on more strategic initiatives. According to the State of DevOps 2017 report presented by Puppet and DORA, in fact, high performers in the world of DevOps are doing significantly less manual work after automating: 33 percent more of configuration management, 27 percent of testing, 30 percent of deployments and 27 percent of change approval processes.
In another example, HP's LaserJet firmware division invested in a continuous improvement initiative which included a significant investment in automation and automated testing. In doing so, the team was able to spend a whopping 700 percent more time on developing new features.
While the business value of adopting DevOps is quite clear, and many forward-thinking businesses have DevOps on the roadmap, doing it right is not easy - and, doing it wrong can end up hurting your business. Simply put, implementing DevOps requires a new mindset that breaks down the traditional silos of yesteryear and one that accepts that this is an ongoing journey, not a one-off project. Many organizations just don't have the bandwidth, budget or expertise to take it on in-house. In those cases, working with a managed service provider that has proven experience building agile business processes and extensive knowledge about the latest automation and orchestration technologies is the best way to get you headed in the right direction from the beginning of your ongoing journey.