Ah, the cloud. It will redefine our datacenters, lower our staffing costs and increase our scalability. If you give it a treat, it may even follow you home and provide everlasting comfort. Let’s talk scalability though. That term can be applied to the cloud in a multitude of ways. Once you build your company up to be a full-fledged Enterprise, it is important to understand this term and how it can be applied.
For the purposes of this article, I’m going to assume you know basic cloud terminology. Also, only scalability is considered, not security or other things you should think about when picking a cloud provider.
User Scalability
The first type of scalability is easy. Moving to the cloud, especially for SaaS based applications, gives you a massive level of user scalability. Depending on your contract, you can scale the licenses you need as your company grows or shrinks. For Saas, this is perfect because a one-size fits all application, like email, grows without you having to add on-premise resources.
The pitfall here is flexibility and expandability. With a one-size fits all application that can scale to a great amount of users comes a lack of flexibility in some cases. The reason is often that, in trying to keep the cloud subscription rates low, a cloud company providing SaaS may not invest in the resources to grow APIs or add functionality. Complexity becomes the enemy of their operating model and, as a result, customizations are limited. This could lead your company to engage multiple cloud partners providing various services to meet your requirements. Your savings have now vanished! A good contrast here would be Google Apps vs. Microsoft. Take a look at the investments over time in improvements by each. If there’s any question in your mind about what I’m talking about, go run Google Apps Sync for Microsoft Outlook. Yikes!
For expandability, you might be looking at development work for those providers willing to allow customizations. In that case, you may be hiring staff to support a development effort to stay in step with the cloud provider, but also expand functionality as requirements come up. This can be a good thing if the solution is flexible or a bad thing if they hit a wall on capabilities. Either way, it is something to consider.
Processing Scalability
This type of scalability makes a lot of sense when considering the cloud. Consider an application that does a heavy amount of processing, but only part of the time. The application is critical to your business, but you may not want to dedicate on-premise resources that will sit idle most of the time. These applications and the resources fall into PaaS or IaaS typically.
For example, consider a bank. All day long, they take in transactions. At the end of the day, there might be processing that needs to be done. A cloud solution might be preferable to on-premise because you could burst all that processing into the cloud after hours and bring down the results before the next day begins. You have no expensive hardware to maintain on-premise and only use periodically.
Another great example can be found in companies running huge e-commerce websites or web applications. These become the lifeline of the company, so there will be massive teams dedicated to these types of applications.
The scalability pitfalls may be the same development complexity as stated above, but the result would seem to justify the means. Even if the cloud infrastructure was affected, you have a portable enough application to move it freely to another resource and can expand it as processing needs grow. This is one reason OpenStack is so appealing and a big reason the cloud providers operate in different regions. If one region is affected and your application is portable, it can be brought up somewhere else quickly.
The bigger pitfall here can be management’s expectations vs. reality. If management is driving the cloud initiative down, they must understand that the cloud isn’t a catch all for every application and that other cost saving measures like server virtualization might make more sense. Segway approaching!
Scalability as a Consideration
Be wary when management asks you to look at your internal applications for the cloud. If your company is running smaller sets of applications that are used by small groups of people throughout the day, you will most likely find that the larger IaaS providers cannot match the cost of an on-premise solution and that processing scalability is moot. Also, the complexities involved in getting your applications portable and potentially backing up this critical data might also keep you from moving. You need to be sure that you understand how some IaaS providers offer their services because many require recoding of custom applications. They want you to conform to a platform so they can keep their costs down (enter OpenStack again). There is a great article over at GIGAOM about customers who don’t require cloud scalability, but still want to move. They do recommend a potential solution for these types of application sets and these options are worth investigating.
Balance of User and Functionality
When faced with a cloud initiative, scalability is often discussed, but may not truly be understood. User and processing scalability will only get you so far in a cloud-based world, but each has its place. The solution you choose must be flexible enough to meet all your requirements to make it worth the investment. Consider the product roadmap and your own internal company’s long term strategy when considering the user side of scalability. For those companies with an intensive processing requirement or the burden of servicing millions of users, the cloud can easily provide scalability and potentially, a quick return on investment. The question is – does your Enterprise have such applications? If your management has given the cloud-first directive, scalability may fall to the way side entirely and other factors will start to emerge that show you how applications are really used and that you may have already made the right decision in keeping the applications on-premise on hardware or virtualization.