Brands are investing in digital experiences to compete for customers and revenue. Those digital customer experiences are made up of the latest features and functions delivered and deployed as part of a software development lifecycle. With so much at stake, these companies must minimize time to market and address their customers’ expectations more frequently than ever before, continuously.
As Forrester notes in their recent research, DevOps Makes Modern Service Delivery Modern, the required automation to quickly meet consumer demands must not introduce risk; “To meet this demand, developers are making use of Agile practices to create small, targeted releases. An increase in speed, however, must not result in software quality and production environment issues. Customers today expect reliability, quality, and a continuous stream of additional functionality.”
For leading brands, automated, rapid and no-risk releases require a collaborative focus by infrastructure, operations, application development and business leaders to organize into an agile and modern service delivery model. This organizational discipline is often referred to as “DevOps” (Development + Operations) and has given rise to concepts like “Continuous Deployment”, “Continuous Delivery” and “Continuous Integration”.
Behind the buzzwords and confusion around the definitions, your take-away should be simple; just about anything “continuous” is important to enable an agile marketing operation.
What is it? Continuous Delivery, Continuous Integration and Continuous Deployment
Continuous Delivery is the practice of ensuring that code can be rapidly and safely moved (aka “delivered”) between development, testing and staging environments. Every application/code change is delivered to a “production-like” environment through rigorous automated testing. This system for testing code incrementally and frequently to ensure quality is referred to as Continuous Integration. The value lies in the practice of continually integrating changes, so the system can catch errors and failures while they’re still small and manageable. Your automated, continuous integration system provides a level of confidence that the application can be deployed to production (in theory with a push of a button) when the business is ready.
Continuous Deployment is the next step in this model. Every change that passes the automated tests and is approved for “go live” is deployed to production automatically. Continuous Deployment should be the goal of most companies, however, few have their network, development, operations and business teams in sync to facilitate that level of agility. With modern tools like Docker, Tutum, Jenkins, Puppet and dozens of advancements in related domains like CDNs and front-side caching engines (ex. CloudFlare, NGINX, Varnish Plus), today’s DevOps teams have a lot of capabilities at their fingertips and are advancing these disciplines to realize the most common benefits:
Speed & Agility. Short time to market delights your customers with the latest features and functions. Business stakeholders seek the agility to meet market demands and compete for the customer’s attention.
Scope & Scale. Automation testing mitigates risks by testing every new iteration of your code, instead of testing once a day, or once a week. That limits the damage that can be done if something breaks. Testing incrementally also makes it easier to identify and remediate errors.
Governance & Quality. Fast changes, and lots of them, require organizational alignment. Automation, when designed correctly, facilitates communication and workflow across diverse teams. Automation eliminates — or at least vastly reduces — the opportunity for people to cause errors.
Let’s review some of the specific tools we have been working with to establish modern application delivery, integration and deployment processes. In the following example, we highlight the use of Hippo CMS with Docker and Tutum.