Way back, we used to be able to determine resource requirements easily. We knew how many transactions our mainframe/mini computers could handle a minute, and we knew how many transactions our staff were likely to action per minute. If there was a disparity, we simply upgraded vertically.
Fast forward to today and the situation is nowhere near as simple. Resource requirements of complex multi-homed applications are inherently difficult to estimate. They are also likely to change rapidly, often by the hour. And in this situation, cloud computing helps to make resource allocation easier. However, there are some issues that need to be considered before moving a business-critical application development to the cloud.
Ineffective Cost Control
Because cloud platforms can scale resource allocation intelligently and automatically, we know that if our application needs a little more grunt, it will always be there. We also know that we only pay for these increased resources when we need them.
However, this has a somewhat negative impact upon DevOps. In a non-cloud environment, the development team always has to ensure that application updates will stay within current resource constraints. In a cloud environment, the DevOps team knows that if more resources are needed, then they will be available. In effect making them less likely to keep resource usage in mind when rolling out updates. If this habit is repeated, resource usage will continue to grow and costs can spiral out of control.
Every cloud provider makes a range of tools available for the user to evaluate performance and tweak service provisioning. This is, of course, a good thing. But there is a danger that the Ops part of the DevOps team begins to apply too many man hours to analyzing logs, visualizing resource metrics and looking for potential performance gains.
The adage, “if it isn’t broke don’t fix it” comes to mind here. Sure, our operations team might be able to wring a little more performance from our applications by constantly monitoring and tweaking the cloud platform. But are these probably small performance increases a profitable payoff for the time the time invested to achieve them?
Becoming Truly Agile
Instant resource provisioning, instance cloning and all of the other great tools that cloud providers make available to customers can really boost the agile development process.
However, if our DevOps teams are not truly agile in their methodology, and many are not despite the fact they think they are, then these tools are wasted.
Cloud PaaS tools deliver the ability to prototype and test code very easily, completely compartmentalized from the production environment. In theory, an application instance can be cloned, updates tested and the instance then closed down in almost real-time. This means that DevOps teams need to get on board with the idea of using cloud resources as a development tool.