Plans for private or hybrid cloud are complex, and one key element is often overlooked: the platform software -- the operating system and middleware that will run on the virtual machines or form the basis for Platform as a Service (PaaS). Cloud platform software links applications to cloud infrastructure and frames what you can run and how easy it will be to integrate and administer the final product.
To choose platform software, a company must look at its investment in virtualization, its choice of database, network traffic issues and application security and management.
A company's commitment to virtualization
When choosing cloud platform software, the first consideration is the extent to which your company has deployed virtualization. The easiest way to look at cloud computing is as an extension to virtualization, so if virtualization is already in use, the existing software will be a big factor in selecting the cloud stack and platform software.
If you have an existing investment in virtualization, start your platform software assessment by reviewing the machine images currently running. In the cloud, it's easiest to have a standardized platform software set for all applications -- or at least a small number of standard configurations. Review what you have and select the smallest number of platform configurations that can run everything without undue overhead or licensing costs.
If your company doesn't use virtualization widely, the role of cloud platform software is even more critical -- but it's more difficult to choose one. Most companies have only limited policy control over OS and middleware, so they'll need to do an inventory on servers and applications to determine what they're running. As before, the goal is to identify as small a number of standard platforms as possible, so identify "maverick" configurations that will be difficult and expensive to support because they're rarely used. Find another way to run them.
The choice of a database service
The next significant question for companies reviewing cloud platform software is the database. Nearly every application will need some form of database service, and there are two options available: Deploy a database service as part of your cloud platform or use a cloud provider's Database as a Service (DBaaS) offering.
The big advantage of deploying your own database service is that the strategy will almost certainly be portable across multiple cloud providers, allowing you to switch providers or even use several different ones. The disadvantage is that there is extra work up front to integrate the database service into a platform -- and even a little more work to keep the software up-to-date with maintenance releases or version changes. Cassandra, CouchDB, Hadoop, and MongoDB are all popular platform-installed database tools, and many (Hadoop and MongoDB, in particular) are often available as DBaaS from cloud providers.
Database services that are part of middleware may be either deployed inside the same machine image as the rest of the platform or in an independent machine image. In the former case, integration with applications is likely easier, but it's harder to share a database among multiple cloud applications. With independent machine images, the database is essentially an external application component, in the same way that SQL Server databases are often separate components to Web servers and apps in a traditional data center or hosted deployment. This means you have to bear extra VM hosting charges, and since queries and responses are exchanged via the network, traffic and access charges may also apply.
Network traffic issues
Network traffic is the next platform software issue for the cloud. Some cloud applications will generate significant network traffic, and not all server platforms are optimized for network performance. This is particularly true in virtual-network apps in which the network I/O may pass through intermediary handling by the hypervisor. Many cloud applications now include one or more hosted routers or switches, a form of software-defined networking (SDN), and experience has shown that these applications may run too slowly without some form of enhanced network I/O, impacting the performance of other apps running on the same server in different VMs.
Intel's Open Network Platform and 6WIND's 6WINDGate technology are aimed at making virtualized and cloud servers more efficient at networking. This enhancement has to be added to the cloud platform, and if you're planning on using SDN or virtual switch/router technology, you may also need to add platform software to support your selected vendor. Network optimization software may not work with every OS or even with every server, so it's important to check compatibility.
Application security and management
The final cloud platform software issue relates to application security and management. Management tools and security architectures that can be provided as agent software integrated with the OS can be installed and used effectively in the cloud -- as long as they don't expect to view or control the actual servers. It's important in cloud computing, even private cloud computing, to avoid management and security tools that expect hardware access because it risks competition among applications whose VMs share a single server.
The question of hardware dependency in any form is your last check on a cloud platform strategy. Platforms intended for cloud deployment should interact only with virtual resources, never real ones, or they may be incompatible with public cloud services and create inconsistent or incorrect results even in private clouds. This risk is highest for companies that are moving from nonvirtualized internal IT to the cloud because they haven't faced the difference between virtual resources and real servers and storage. A little review now will save endless problem determination sessions down the line.
About the author:
Tom Nolle is president of CIMI Corp., a strategic consulting firm specializing in telecommunications and data communications since 1982.