Doing my research for this article, I can see that this subject was argued about a lot a couple of years ago. Recently however, the discussion seems to have disappeared. As marketing media will do, the term cloud has become a broad brush that can be applied to anything on the Internet. The result is a lot of completely different technologies have been painted a much-abused shade of cloud gray.
The best way I can think of to discuss this is in a series of questions and answers. This may sound like a sort of self-aggrandizing way to do an interview, but actually these are questions we have gotten in discussions with companies moving to the cloud.
Q: What is the difference between virtualization and cloud computing?
A: Virtualization is a technology that is available in several forms to allow technical resources (applications, network services, etc.) to be separated from the physical machines they run on and treated as an abstraction. A good example is a number of virtual servers running on one physical server. Each virtual server runs on its own virtual machine and can be managed by the tools provided by the type of virtualization being used.
Cloud computing on the other hand leverages virtualization technology to provide a model for access to a shared pool of configurable computing resources. One of the best and cleanest definitions I have found is the NIST draft definition.
Notice the five Essential Characteristics they have identified:
- On demand self-service, by the customer without the intervention of the provider.
- Broad network access. Notice that this goes beyond the Internet to include a wide range of client platforms.
- Resource pooling, that allows the provider’s computing resources to be shared in a multi-tenant model with resources assigned and reassigned on demand.
- Rapid elasticity allowing resources to be rapidly and elastically provisioned and scaled out and in either manually or in the best case, automatically either from set parameters or from application logic.
- Measured service that leverages metering capabilities to automatically control and optimize resource usage according to service parameters.
The three Service Models: Software as a Service (SaaS), Platform as a Service (PaaS) and Infrastructure as a Service (IaaS)
The four Deployment Models: Private, community, public and hybrid.
So while virtualization provides a technical way to separate services from the infrastructure or system that supports them, cloud computing goes beyond that to provide a range of of models you can use to implement computing services economically and dynamically. As Garter has pointed out, there is a lot of confusion in the market aided by a lot of self-interest. SaaS providers need to be aware of this discussion and it’s implication for their businesses.
Q: Why is Cloud Computing important for SaaS providers to understand?
A: For a SaaS provider, business scalability is critical for success. If you can’t achieve scalability in a reasonable period of time and continue to sustain it over the long term, your odds of failure greatly increase. While the technical side of scalability is only one aspect of the equation, for SaaS companies cloud computing represents an opportunity to achieve operational efficiency rapidly and at a much lower cost than was possible before it became widely available. To take advantage of this opportunity, SaaS companies need to leverage one or more of the three service models and insure they are using vendors who provide services that include the essential characteristics as mentioned in the NIST draft. Many vendors say they provide “cloud computing,” but a careful review of their service model will often show that they are offering little more than access to a proprietary implementation of virtualization. The heavy lifting required to provide rapid elasticity or measured service is left to the customer and where it is available, cannot easily be passed through to clients. The effort required to build in the necessary service characteristics on someone else’s system is not trivial and requires a good understanding of the underlying virtualization technology. In the end, the investment becomes something of a barrier to entrance and once it is spent, a barrier to exit for the SaaS ISV.
There is no prefect cloud computing platform for SaaS providers, at least at this time. Most cloud computing providers at the IaaS and PaaS level are focused on the enterprise market and the simple movement of enterprise datacenter assets to their service. But there are systems that meet the classic definition better and provide a lot more opportunities for the SaaS provider to leverage them through to the client level. At this moment, Microsoft Azure and Amazon AWS meet the definition best, but the market is very competitive and there are ways to use other services in combination to achieve some of the same benefits available from these vendors.
Q: So, if I just put my existing application on one of the “best of breed” cloud computing providers, I will then have an efficient and scalable SaaS Cloud Computing implementation?
A: Unfortunately, if you are an ISV with an existing application it depends.
If you have a small application without a lot of features and complexity, you are using current methods for web services, you can adopt multi-tenancy and you use some tools for scaling out and in, it should work out just fine. There is no need to change, other to insure your business operations (pricing, billing, settlement, metering, etc.) are automated and will also scale properly, and you can manage maintenance tasks while keeping your reliability within your client expectations.
However if you have developed a large, complex, enterprise application, your cost and efficiency on a cloud computing model, IaaS or PaaS, will not be radically different than on hard metal with traditional clustering techniques. The problem is, your application is likely to be built for scaling up – rather than out. If it is a complex, monolithic architecture, you will scale simply by starting additional instances. The application will require large virtual machine instances, which are considerably more expensive than small instances. It will take longer to deploy new instances (scale out) or decommission instances (scale in) when they are not needed. Performance will be tied to the busiest functionality in the application, regardless of how many concurrent users you are carrying. So, a payroll function in an HR application will drive scaling of the entire application, even though the primary overhead is in computing the payroll itself, not in personnel assessments for instance. This impacts cost (for scaling and maintaining large instances) and operational efficiency.
In addition, complex enterprise applications tend to also have complex databases. On platforms like Azure, the functionality available is tuned to many small, federated databases rather than large monolithic databases. There are many things you simply cannot do on SQL Azure that you could in a standard installation. If you use other cloud computing platforms, you can cluster but clustering large databases requires considerable bandwidth for synchronization. In the end, a little modeling may show that is indeed easier to stay on traditional hosting if your database is large and complex.
In the case of large, complex and monolithic applications, the best bet is to realize that over time they will need to be re-imagined as a group of components that can run on smaller instances and scale independently based on their direct use. This doesn’t mean the entire application has to be redeveloped before a cloud IaaS or PaaS is used, but it does mean that there should be a plan for development of new functionality in a component style and gradual migration of functionality that can be segmented from the core application to separate components. Especially in the early days of deployment of a SaaS application, it is unlikely you will be overwhelmed by clients and you have time to gradually move toward a more efficient application configuration as you meet the demand of the new market your application will be facing. Take your success and plow it back into gradual operational improvement.
Q: We’re planning for an entirely new SaaS application. Do we have to design for the cloud immediately?
A: If you are using the current Lean approaches to product development, no – depending on the stage of product development you are in. In early stages, when you are still working to find an acceptable business model that produces value with visionary customers, use every tool at your disposal to keep development overhead low. Use tools that keep needed coding to a minimum, change turn arounds quick and investment costs low. Don’t become heavily invested in application code that you will probably have to throw away.
Once you have a proven product and market, then spend the time to break down the service functionality and develop a scalable, component architecture as is necessary for cloud-based SaaS. Use tools and methods that are proven for commercial grade, scalable development. Now your investment counts toward the ultimate goal – a scalable business built on a solid foundation.
A new SaaS application is a great opportunity to do things right and not spend a lot of money trying to change out your engines while you are hurdling down the runway. Using component-based architecture gives you a lot more flexibility over time to tune and enhance individual parts of the application without risking everything. And – if you are in the enterprise market – you will find that most of your customers are virtualized anyway. Depending on how you use the tools available from the cloud PaaS or IaaS provider you select, you can still transfer the application cloud to your customer’s virtual environment where necessary.
Q: Isn’t using platforms and cloud infrastructure risky? Won’t it lock my business to the fortunes and lifecycle of the PaaS or IaaS vendor I pick?
A: Yes, but is that a bad thing?
If you chose well, you will have the advantage of a large number of tools that will lower the time and expense necessary to develop your product. In development today, programmers don’t code directly in assembly for the processor in a target server anymore. In fact, we’re less and less concerned with the base our application will run on, especially on the client side. This is because we leverage abstraction, frameworks, environments – platforms to make development faster, easier and the results usable in a wide range of contexts. The leading cloud computing platforms are simply the next step in that continuing evolution of computing.
Of course, not every cloud service vendor is going to win in the long run, but we can pretty easily pick the ones that will last long enough to make it worth using their services. They have an established history and user base that is easy to assess. They are competing and innovating not at the distant edges of the technology – they are right at the core where the changes they make have a strong impact on business capability.
In this light, a lot of the “fear-mongering” we hear is nothing more than media hype. You have to evaluate and make choices, but that is a normal business process for selecting any vendor or partner. You can’t afford to go it alone these days.
Q: This is a lot to absorb. There are a lot of changes in the industry right now. Do you offer services to help companies navigate cloud computing as they develop applications and services?
I guess you could call us a Cloud Computing Enabler. Scio is a partner of both Microsoft and Amazon. We have worked with companies from startups to leading Cloud SaaS providers in the field. We offer services for business and technology assessment, application planning, development, tuning and maintenance. We are focused on continuing to develop tools and services for the cloud computing market.
But that said, we will honestly say there is no “one-size-fits-all” solution in cloud computing. Every project has its own goals and each client has their own constraints. Our job is to use our knowledge and experience in the field to find the best fit for the work in front of us and not the one solution we can squeeze everyone into.
The conversation continues:
If you are a member of LinkedIn and part of the Software + Services (SaaS) group, you can join the conversation.