Software development teams, whether they are within large or small enterprises are looking to become agile.
With the agile movement, however, we have seen a higher demand on operations to deliver more quickly and with more flexibility.
Often the infrastructure can get in the way of quick and frequent changes.
It goes beyond just the hardware itself, leading to a lack of operations resources or prioritization to make changes happen.
Related Article: Tech Savvy: How to Talk Cloud at Cocktail Parties
How the Cloud Can Help Agility
By leveraging cloud architectures, a development team can quickly spin resources up and down for testing and deployment. As development teams begin their development efforts, they don’t have to wait for provisioning of servers and databases; they can leverage cloud environment tools to provision what they need and get started with deployment.
This doesn’t mean that an operations person shouldn’t be part of your agile team. However, it takes a lot of the pressure off of them to be in the middle of every aspect of provisioning, and allows operations to focus on what brings real value to the business:
- Performance optimization
- Responding to and resolving issues
- Putting the right hardware in place or working with their cloud vendor(s)
Virtualization began with the need for developers to quickly and easily deploy test environments, and then subsequently deconstruct them and build them back up again. This is what led to the popularity of virtualization, long before anyone was talking about the cloud. Now, the cloud gives us the ability to expand virtualization beyond testing, into production.
Templates and Cloning
Many cloud providers give you the ability to take existing virtual machines and create templates, or to clone existing virtual machines for immediate reuse. This plays very well when trying to work in an agile environment because you can click a button and go, and no longer have to wait on deployments of your configuration.
By leveraging templates and cloned servers, a development team can take on some of the responsibilities that often lie within the operations organization. That said, we need to remember that development is not operations. But if the operations team helps set up the templates, this takes some of the pressure off of them and can speed time to testing and sprint completion. Operations still needs to be involved, and certainly should be a part of the agile team, but the idea is to lessen the dependencies while increasing team efficiency.
Beware of the Unused Cloud
When it comes to one of the biggest wastes of expense in the cloud, you don’t have to look any further than unused or unneeded, but turned on instances. In an agile environment where teams are spinning up cloud instances for testing and prototyping, you MUST remember to turn those instances down or off when you are finished with your task.
Great benefits of the cloud are the ability to quickly spin up and down instances, increase resources on those instances and have the exact environment you need available at a moment’s notice. However, if you don’t keep track of what has been spun up, you will quickly see your bills going up and benefit going down.
A best practice to follow in this instance is to have a team member responsible for the environments, use tools usually provided by the cloud vendor to see what instances are up and running, evaluate the need for the instances on an ongoing basis and turn off anything that isn’t needed at the time. Don’t forget, with vendors that support the templates and cloning, you can quickly spin back up and be testing in minutes, reducing the cost of running the environment continuously, while speeding your time to testing.
Agile software development is no longer a question, it is a mission. The more effective we can make our teams in delivering the software that our businesses need – as quickly as possible, with the highest quality – the better off we will be. With the increased use of the cloud, we can become even more agile, but it comes with both risks and rewards.
Remember that the cloud is just another technology and doesn’t replace the need for operations to be part of your agile team. It doesn’t mean that you no longer need to be involved in your environments. What it does bring, however, is speed to testing, freedom to deploy and ease of reuse. All major factors of agile software delivery.