A couple years ago, when talking to a client about the speed at which servers could be provisioned, he explained me very seriously his company could do it in 6 weeks if a spare server was available in the warehouse. He went into details and explained the average time for each of the steps in the process. Where I have no reason not to believe him, such approach is not helping the business in the current environment. Potential clients have gotten used to ever updating mobile applications giving them new functions even before they think about needing them. Companies pop out of nowhere to take on existing market segments with totally new business approaches. The business needs to react quickly, and quickly often means a matter of days or weeks, definitely not years.
Frustrated by the slowness of IT, business people tend to source services from outside, bypassing IT all together. This is what has been called shadow IT. It gives the business the impression to act quickly, but often causes more headaches and issues than it resolves problems. Indeed, integrating those external services with the existing IT environment is difficult as they have not been developed with the existing environment in mind. Securing the combined environment is another issue that urgently needs to be addressed. Recent incidents have demonstrated that hackers become increasingly sophisticated and that careful security planning is required.
How to provide the business with the possibility to deliver new functionality quickly? Combining three highly relevant topics, Cloud, DevOps and Agile, enable IT to build the responsive organization that can address the needs of the business. Let’s analyze each of them in more details.
Cloud and fast provisioning
We can no longer afford 6 weeks to provision a server. This has to happen “instantaneously”, which in practice means in a matter of minutes to one hour. Cloud, being it private or public cloud, is an ideal way to do this as most cloud platforms provision environments quickly. As you’ll need servers for development, testing, staging and production, it’s important to decide which cloud to use for each of those environments.
Create ahead of time a “Cloud Policy”, defining for each functional area which cloud type is acceptable. The above picture shows such policy matrix. You may want to be more granular and decide whether you use AWS or Azure for public cloud etc. But having a policy matrix allows your users to know which cloud to use at which stage in the lifecycle. It greatly facilitates the work of the developers and operations people while limiting the options and standardizing platforms. In setting up such matrix, think about data privacy, compliance and all other items you need to take into account in your environment choice.
DevOps and fast deployment
We’ve talked about DevOps at multiple occasions on the CloudSource Blog. But let me come back to it once more. Continuous integration enables the automation of the testing of the application as it is being developed. By automating most of the tests, not only does it frees up the developer time, but it also allows to perform regression tests, ensuring that new developments do not have an adverse effect on existing code. Through the use of a code repository, source code is protected and made available for re-use. Implementing an InnerSource approach within the enterprise creates a re-use culture which enables faster developments. But DevOps can also be used for Continuous deployment, automating the deployment process. This leads to faster and more consistent deployments and reduces the implications of human errors. But, if DevOps is implemented correctly, it enables the standardization of the deployment of databases and middleware, facilitating the job of operations and reducing complexity. These all lead to faster deployments and risk reduction.
Agile, develop what the business needs and get it out quick
Complementing cloud and DevOps with agile development optimizes the development & deployment process. By involving the business directly within the skunk team, ensuring the development truly addresses the needs of the business is greatly improved. Having sprints every other week, allows regular releases of functionality giving the impression of a fast response to a treat or an opportunity. It also allows the business to quickly test new business models and options without having to wait till the whole project is finished. It truly delivers speed.
Going Cloud Native complements the options.
You may actually want to go one step further and develop your applications as Cloud Native. This not only means they are fully using cloud features such as scale up and scale down, which might be very useful if the number of concurrent users is fluctuating largely, and unknown at this point in time. But it also eliminates the need for lengthy re-deployment every time one function or module is changed. Indeed, with cloud native applications you may be able to just replace one module, often referred to as a microservice, with a more recent version without even having to stop the complete application. It makes you even more flexible and able to respond quickly to changing demands of the business. Working with microservices also facilitates re-use. But doing this implies a well-defined application architecture and a strong governance which not all IT departments have implemented at the moment.
Responding to the needs of the business often imply changing the culture
Yes cloud helps speeding up the deployment of new functionality, but it is not alone in that. DevOps, Agile and Cloud Native are additional capabilities that should be implemented within the enterprise IT department. Most companies talk about the tools required to do so, but frankly the tools is the easy bit. What is critical is changing the culture of the organization and enabling it to work in an agile manner, experiment with new approaches and technologies and work as empowered and trusted teams. In the current climate, the latter is probably the most difficult in large enterprises as most no longer trust their employees. Rather than specifying processes for every decision to be taken and controlling employees continuously, enterprises need to learn to trust them. Obviously if they do not follow the rules, appropriate action needs to be taken, but give them the breeding space to experiment rather than forcing them to ask permission for everything. This has little to do with cloud and technology, but it is a major barrier for companies to gain the agility level of start-ups and be able to respond in this new, digital world.