The rise of the internet and the prevalence of mobile devices, including smartphones and tablets, have driven a revolution in application design towards what is commonly known as a Platform 3 application. Platform 3 applications are characterized by a scope of use that spans potentially millions of users, a breadth of access that includes worldwide access 24 hours a day, a volume and variety of data storage and access needs that includes both traditional applications as well as big data analytic platforms, and need to share data sets across multiple instances of a single application as well as across multiple independent applications. As businesses increasingly move towards such platform 3 applications, they can take advantage of a number of tools available in the industry to help them create and deploy their applications. However, it is not sufficient to have a great set of tools in your box; knowing how to use them effectively is just as important.
What are the tools in the toolbox, and what are they good for?
First off, for application deployment and management of running applications, there are tools like Cloud Foundry or Kubernetes. Underneath, there are tools to prepare and manage the overall compute environment, especially OpenStack Glance and Nova. To connect machines and applications to each other requires networking, using tools such as Cloud Foundry or Kubernetes for application specific networks, OpenStack Neutron for general networking or CoprHD for networking between storage and computing elements. For provisioning and managing storage (block and file) resources, there are tools like OpenStack Cinder / Manila or CoprHD, which can work with a variety of existing storage products and provide a product-neutral, application friendly API which abstracts away any product-specific quirks. Last but not least, there are platform 3 oriented elastic storage products themselves, such as OpenStack Swift (object storage), Elastic Cloud Storage ECS (object storage), ScaleIO (block storage), and Isilon (file storage), or Ceph (block, file, and object storage.)
So there are quite a few tools in the toolbox, with overlapping features between them, and the trick becomes picking the right set of tools to match the job at hand.
When choosing a tool, what are the things to look for?
Starting at the bottom, with storage – is the application designed to work on existing legacy data sets, stored on existing products? Or is the application designed for a new workload? If the data is stored in existing storage solutions, then tools like Cinder/Manila or CoprHD can connect a P3 application to legacy storage resources. CoprHD excels at complex, multi-geography environments, as it can automate the creation of multi-site synchronous or asynchronous storage replicas across heterogeneous storage products, and while both Cinder / Manila and CoprHD can effectively manage storage resources in a single geography, CoprHD has additional capabilities related to establishing appropriate networking between application instances and local storage resources on a potentially partitioned fiber channel or Ethernet network.
For new workloads, where elasticity and ease of growth are desired, then scale-out storage such as ECS (object), ScaleIO (block), Isilon (file), Swift (object), or Ceph (block, file, object) is most appropriate. Of the object platforms, ECS has the broadest support of industry standard access methods, including S3, Swift, CAS, and HDFS, and industry leading storage efficiencies for multi-geography environments. For file platforms, Isilon includes support for NFS/CIFS as well as HDFS in a proven, high performance platform that has been used in demanding environments for years, while ScaleIO provides high performance scale-out block services. Ceph and Swift are open-source projects, with Ceph normally used in single data center environments and Swift in environments where multi-geography capabilities are required.
For networking, OpenStack Neutron provides vendor-neutral capabilities to create and manipulate Ethernet networks, IP addresses, and ports, which OpenStack Nova can utilize to create networks appropriate for various virtual machine topology needs. CoprHD also provides networking services and can leverage knowledge of not only the existing Ethernet topology but also of the existing SAN topology to allocate storage or compute workloads in an appropriate location and then manipulate the network and VM infrastructure to ensure proper communication between the workload and its storage resources.
The top level includes deployment frameworks such as Cloud Foundry, Kubernetes, OpenStack Heat, and others. Amongst these, Cloud Foundry goes beyond application deployment to cover the lifecycle of an application, including the building of the application image and the subsequent deployment and monitoring, while Kubernetes focuses on the deployment and monitoring of container based application images. Heat similarly focuses on application deployment and monitoring, also integrating with OpenStack Glance and Nova for application image management and compute infrastructure. All of these also include elements of networking management, specifically to manage communication between application instances and external communication to the application (in contrast to CoprHD, which focuses its networking support on the communication between an application instance and provisioned storage.)
Which tools in the toolbox are the right ones for the job?
In the end, the choice of tool depends on the specifics of the task at hand and the skills of the IT professionals in the environment. Tools either produced by a major company or where a major company is the primary sponsor of an independent foundation (e.g. CloudFoundry, ECS, ScaleIO, CoprHD, Kubernetes) are typically more hardened and likely would have support contracts available, while open source tools (e.g. OpenStack, Ceph) allow a greater degree of customization for the quirks of an individual environment, with the potential addition of specialized 3rd party companies providing support for the tool. If the job is to build a cloud platform for a new application with uncertain requirements, open source tools would provide great flexibility, while if the job is to build an application infrastructure and the cloud is an enabling technology, then hardened tools with explicit support allow the focus of your IT skills to be on the application and the value it brings and not the underlying infrastructure.