When people hear the word agile, they usually think of words like scrum, kanban, and velocity. Agile methodologies are geared toward churning out faster iterations of software, but the speed of software development does not always correlate to an organization being agile. What makes an organization agile is when the software that is being delivered is producing enough value to meet the business demand. In order to increase the value of our releases, we need to stop spending so much precious time racking and stacking infrastructure and managing application servers and databases, and spend more time adding valuable features for our business partners and customers. In other words, we need to embrace the cloud.
Agility in Action
Today, in a couple of hours, I created a demo system that would have taken me many weeks to do pre-cloud. Here are some of the things I was able to accomplish because AWS has provided me with APIs that abstract away the complexity of installing physical servers, networks, and disk infrastructure and provided me with PaaS-like services for security and database management:
- Set up a Virtual Private Cloud (VPC) with a public and private subnet
- Provisioned a RHEL virtual machine in 5 minutes
- Installed an entire LAMP stack on the virtual machine in minutes
- Cloned the machine 3 more times and launched a total of 4 web/app servers in the public subnet across multiple zones
- Installed a load balancer to round-robin traffic to the 4 servers
- Used RDS to install a multizone MySQL database with regularly scheduled backups in minutes in the private subnet
- Securely connected the web/app tier to the database tier with only the necessary ports open
- Wrote a quick PHP web app to query the RDS database and to display a web page stored on S3
- And finally, used CloudFormer to script the entire environment so that it can all be built by running a simple script if I want to create a similar environment another day.
One person, a couple of hours, a fully redundant application with multizone failover. Pretty impressive, I think. I am not a DBA, system administrator, or security architect, although I know enough to be dangerous. The cloud has given me the tools to be self-sufficient and to implement best practices around security, failover, scalability, and more. I know this is a trivial example, but think about how much time and how many people I would have had to involve in a traditional data center. I probably could not have filled out all of the paperwork in the time it took me to set this all up.
Now, think about an organization with mature processes for managing cloud infrastructure. What if each developer was provided with the necessary tools to self-provision resources in a non-production environment? What if teams could reduce development times substantially because they could whip up servers, databases, load balancers, etc.? What if developers could experiment with different hardware configurations until they find the right combination of infrastructure and application performance?
This is what the cloud gives us. The ability to be agile. By having access to on-demand compute resources, we can eliminate so much wait time from our development lifecycle. Notice I said the ability to be agile. I did not say cloud gives us agility. It provides us with the tools to be more agile, but a fool with a tool is still a fool. It still takes good architecture, good processes, and good governance to fully take advantage of the cloud. I have seen too many companies jump into the cloud with no real plan and no real architecture. They quickly create the same mess they had on-premises in the cloud and don’t really gain anything.
I started my IT journey in the ’80s on mainframes. I saw the first Windows operating system on a PC and witnessed the Internet take hold of the enterprise. All of those eras were significant, but they pale in comparison to what the cloud brings today. A few years back, the cloud was a startup’s best friend, but now the cloud is taking root in enterprises, and the enterprises that embrace the cloud and take a pragmatic approach to cloud computing have the opportunity to be more agile than ever before. Cloud computing will have a profound impact on how we deliver solutions going forward. Those who don’t make the transformation with be rendered irrelevant, because they won’t be able to keep pace with the rate of change.