I’m often asked if cloud computing provides so many great benefits, why aren’t more organizations taking advantage of cloud computing throughout the entire organization? To answer this question let’s step back for a moment and explore why and how most organizations develop and operate their infrastructure and applications at scale. I like to think of each version of an application as a “generation” of that software package.
Production critical applications that operate typical line of business applications tend to fall into one of two categories: applications that generate revenue for the company (think NetFlix or the Amazon store front), and applications that support the business (think enterprise databases, ERM, CRP systems).
Let’s start with the more traditional applications that support a typical enterprise today. From an operations view the approach has been slow is better. Change introduces risk and risk means potential downtime. Down time means work halts. Think of an assembly line and if one piece of the supply chain breaks, all work comes to a screeching halt. I have worked in these types of environments and attended daily “change management” meetings for years. Everyday was an analysis of any changes that required approval from all departments (network, storage, servers, development, etc.) prior to any upgrades to systems. Why was all this necessary? The reason was because the software was not designed to fail, it required an infrastructure that was available at all times and the software was not aware of changes, it simply stopped working. New software packages were rolled out very slowly and often had multiple year road maps and release cycles. Each release cycle was a “generation” of the software with unique characteristics and the each generation tended to live for a long time and evolve very slowly.
Is this type of development a bad thing? Not necessarily. There are many organizations that do not need to go fast. Data integrity and constant uptime may be “good enough”. They may be happy with their current generation of software and as they say “If it ain’t broke, don’t fix it”. This is something many technologists in our industry forget. Inertia is a powerful thing, especially if that object is at rest. These “go slow” systems also tend to be the systems that are locked away behind firewalls and store data but do not typically interact with an organization’s customers on a daily basis.
Now, let’s move on to the second type, applications that generate revenue for the business. Because the application brings home the bacon, the application gets lots of attention (i.e. development budget). The better the application, the faster the business can go, the more money the application can potentially generate for the organization. This type of application tends to be the layer the consumer interacts with at some level and can change drastically as the needs of the consumer changes. Because these changes can be quick and at times unpredictable, methods to quickly develop and maintain these systems became necessary. Because of this need terms such as devops (combining development and operations into a flexible and robust way) and continuous development lead to multiple releases per day. Combining devops with cloud computing leads to flexible production operations that can pivot as the users require and have led to the current wave in cloud computing. As you can see, the concept of software generations really is no longer relevant. When an application is written to take advantage of the unpredictable nature of the underlying infrastructure as well as to grow and shrink as needed, a new development method was needed. Some devops shops perform multiple releases per day and a software generation may only last for hours or even minutes. The reason why cloud computing is successful in this area is because it is not only advantageous but required to survive and thrive in today’s environment.
Two methods are utilized to meet two different needs and both are relevant to the requirements of the applications. As many are starting to discover there is no Silver Bullet in cloud computing, there is only the right tool for the job.