There is a plethora of benefits to be gained from utilizing public cloud computing. Whether cost savings, improved security or increased agility is your primary driver, there are many additional compelling reasons to make the move to public cloud. To us, one of the most important value-adds of the cloud is speed — specifically, speed in provisioning infrastructure.
I once worked for a very large enterprise that had the typical challenges with the time required to provision IT resources. My role was an application owner working with a new application in a demo instance provided by a vendor. After the procurement was complete, and we were ready to deploy the application in the on-premises data center, I gathered all the required information and submitted the various service requests to Operations for resources. I needed one Windows 2012 server and one Oracle 11g database. The application server took four months to provision and the database, ten months.
Fast forward a few years, and now I am provisioning application infrastructure exclusively in the public cloud. I will never forget the first time I spun up infrastructure in the cloud based on code. It was quite an eye-opening experience for me, and I knew this was the future for IT provisioning.
Unlike my experience in traditional provisioning, once I had my account, roles and permissions, access keys and tools configured, I was ready to define my infrastructure as code (IaC). Defining infrastructure as code allows deployments to be easily repeatable without clicking around in the management console. Verbose IaC languages with high code readability can also be considered self-documenting, which allows others to easily pick up where you left off in the development. Your IaC can also be maintained via version control, just as you would with any other code.
There are many tools available to define infrastructure as code. In this case, I used Hashicorp Terraform to define it. I was able to spin up a virtual machine in the cloud in five minutes, and a database in half an hour. That is a 99.9% improvement in time to provision the application server, and a 99.99% improvement in time to provision the database. It may be hard to believe, but these are real numbers and this is a real story!
Over the course of a single day, I provisioned and terminated my application stack eight times. This deployment speed allows for rapid iteration of ideas, and vastly increases productivity and agility. The speed to provision infrastructure allowed me to focus on the value of the work I was doing without having to worry about procuring and deploying servers.
The most amazing part? Since the code I wrote was parameter based, it can be used again and again in another cloud account, virtual private cloud (VPC) or environment — or even for a different client. This ability of infrastructure as code to be reused further speeds up time to provision it in future work.
Speed to provision allows an enterprise to focus on what differentiates the business – not the infrastructure. Reusing templates allows an enterprise to easily and efficiently scale out, a great advantage versus racking and stacking more physical servers and all the gear required to support them (switches, routers, SANs, etc.)
When developers share common code templates, an organization can scale products much faster and further than was ever thought possible. In today’s market, speed to market is everything. The speed of the cloud provides enterprises with the ability to get their products out to market faster, as well as the ability to quickly update and deploy features customers demand.