In the late 1990s and early 2000s, the rise of the professional Configuration Manager brought new techniques for continuous integration and deployment. The integration of software configuration management and build and test tools helped decrease the ever-increasing complexity of product development. The proliferation of the internet and adoption of public clouds shifted delivery of software from physical CDs and DVDs to on-demand downloads and software as a service. This led to the emergence of multiple product releases per day and the release->break->fix->release approach to product deployment. And without physical media, the cost to release a software product was reduced.
But things are changing again and other factors have propelled DevOps, and the new Configuration Management Build Engineer, into the limelight. Techniques such as function as a service (FaaS), micro-services, and cloud-aware apps are driving new development, test, and deployment models. The complexity of applications is increasing as the number of services and functions increase dramatically. Additionally, infrastructure is being offered as a service on-premises (private cloud) and off-premises (public cloud). Emerging hybrid cloud models require the orchestration of deployed services across those clouds to give even more flexibility to the deployment of applications. The adoption of those new development techniques is making the job of managing and reliably releasing and maintaining software and services extremely complex.
Everything is working fine now, why change? There is something to be said about having a well-vetted process that has already been automated. Why mess with it? Good question! The benefits of modernization can mostly be seen through an increase in reliability, highly predictive performance, decreased costs, increased flexibility, and decreased build/test/deploy cycle times.
With a little up-front planning, you can get a handle on modern DevOps processes in your enterprise. Here are some things to consider when developing your new DevOps solution.
- De-coupling services, deployment and infrastructure. Decreasing the dependencies between the different layers of the solution means things can change independent of each other and will increase your reliability and scalability.
- Understanding and planning for a hybrid cloud. What is the difference between multiple clouds and hybrid cloud. Is your infrastructure one big pool of resources or segmented along cloud barriers?
- Managing multiple environments. How do you manage multiple environments across an abstracted infrastructure? How do you enforce policies, security, and compliance across environments?
- Continuous integration and delivery. Create automation for build, test, and deployment through code pipelining and integration with hybrid orchestration and infrastructure.
- Setting up a multi-environment, hybrid cloud deployment system. Evaluate different solutions that map to your new modern DevOps system.
- What about FaaS in modern DevOps? How does FaaS play into this new way of doing things?
I’ll be tackling each of those six issues in more depth in a series of blogs over the next few months. If you want to learn more in the meantime, check out intel.com/cloud or watch my webcast on DevOps and hybrid cloud.