Cloud computing offerings started on public clouds, but aren’t limited to them. Establishing private clouds is one of the most important current trends to modernize enterprise IT. Organizations are looking at private clouds as an approach to protect their investments and control core assets while taking advantage of cloud technologies. Another motivation for the increasing popularity of private cloud solutions among larger IT organizations are enterprise requirements, which often exceed the functionality offered by public cloud providers and their standard services, especially in areas such as security and compliancy, reliability, control and customization.
Experience has shown that enterprise cloud strategies that have an infrastructure-centric viewpoint and focus only on Infrastructure as a Service (IaaS) solutions proved to be insufficient to unveil the benefits of cloud computing technologies. The IaaS cloud model abstracts the underlying infrastructure but falls short when it comes to addressing complexities imposed by the software solution stack. Many enterprise IT organizations started to consider other cloud services models such as Database as a Service (DBaaS), Mobility as a Service (MaaS) and, ultimately, Anything as a Service (XaaS) to provide:
• A standardized foundational solution stack to run business applications
• Consistent, automated application management and deployment
• Commoditized platform services that can be consumed and shared by business applications via Application Program Interface (API) calls.
Enterprise application development teams have found that using these cloud computing models simplifies their work and can speed time to market for business applications. For enterprise infrastructure teams, cloud platform services provide the benefits of increased infrastructure utilization and standardization, reduced licensing costs and management overhead.
This two-part series focuses on cloud capabilities beyond IaaS; it translates the familiar architectural patterns, traditionally utilized to architect high-performance, highly available applications and underlying solution stacks, into the context of private enterprise cloud solutions.
This article examines the key principles, techniques, patterns and architectural choices you must consider when establishing one of the core platform services in a private cloud solution—a distributed, in-memory elastic caching service. It will also discuss one of the commercial caching frameworks, IBM’s eXtreme Scale, as a foundation for an elastic caching service.
A follow-up article will address various aspects of establishing a low-latency, High Availability (HA) elastic caching service infrastructure in an enterprise cloud environment, which may span multiple data centers and various hardware platforms ranging from IBM System z to VMware ESX.
Caching: An Essential Service
Data caching is one of the critical components of the modern application stack since it lets you effectively improve scalability and performance of distributed, composite applications and reduce the cost associated with scaling application tiers. Multi-tiered and Service-Oriented Architecture (SOA) composite applications frequently have numerous hops between tiers or services, and cost of data serialization/de-serialization is often the biggest factor negatively impacting application performance.
In the Web 2.0 application model, inherently stateless RESTful (Representational State Transfer) services require an efficient mechanism to store conversational state. Also, content-rich Web 2.0 clients need to present media types such as video, file downloads and so forth. The common solutions to achieve desirable performance and scalability for these scenarios are expressed in architectural patterns that include various caching mechanisms.
Practically unlimited hardware resources available on cloud platforms don’t automatically translate into an application’s scalability or improved performance. Cloud models, which heavily favor horizontal scaling (essentially adding more servers to run workload as demand increases), can further aggravate the bottlenecks in multi-tiered and SOA composite applications since various application components, tiers and services may scale differently. To address these challenges, many cloud solution providers invest in implementing data caching strategies and offer caching services as a way to facilitate application scalability and improve performance and throughput.
In the context of cloud solutions, the well-known performance-enhancing architectural patterns have transformed into the following strategy, widely used by various cloud providers and customers: Keep conversation data closer to the compute resources in the cloud and static, presentation data closer to the user in a Content Delivery Network (CDN).