Not every performance problem can be fixed with caching, but assuming you have done your due diligence and your “slow” application is already tuned and well designed, adding caching can dramatically improve response times and reduce the load on backend systems. Here is an interesting new article with the analysis of the performance improvements possible due to the use of the cache. To quote the article:
“Caching content directly in the application server JVM has one obvious benefit: access to the cached content is extremely fast because no network traversal is required. Unfortunately, it also has a number of limitations:
• The maximum size of the cache is limited to the available heap in the JVM. A large and very full JVM heap can lead to long garbage collection pauses, slowing application response time.
• In a cluster of JVMs, content will be cached redundantly in each JVM, making for inefficient use of available cache space.
• A newly started JVM must populate its cache, which means slow initial response times and high load on the back end content source while the cache is warmed.”
What I like the most about the use of the caching described in the article is that it does not require any custom programming or redesign of the application. All you need to do to make your Portal, Commerce or Content Management software to become faster is to configure the cache at deployment time. Of course this is only possible if the Portal or whatever application in question has built-in cache capability, which is exactly what IBM did with our WebSphere Portal, WebSphere Commerce, IBM Web Content Manager and some other IBM software not mentioned in the article (such as WebSphere Application Server, WebSphere Message Broker, WebSphere Process Server, etc.)
In the area of data caching both IBM and Oracle offer first class products with a good track record. IBM has developed its WebSphere eXtreme Scale (WXS) product in-house and has a number of high profile customers using the product in mission critical applications for several years (take a look at this cool video where ESPN’s Director of Engineering explains how they used WXS to redesign their website).
Oracle acquired a company called Tangosol and rebranded their product as Oracle Coherence. The Coherence product has been around for a bit longer than IBM’s WXS product, but both have good reputations in the market and Forrester rated the IBM caching product higher on strategy and similar on technical capabilities compared to Oracle (I can’t post the official Forrester Wave report or even a picture here, but feel free to visit Forrester website and search for the “The Forrester Wave: Elastic Caching Platforms”).
Both products – IBM WXS and Oracle Coherence have a very comprehensive set of features, including Java APIs, REST, .NET support, automatic replication of data across multiple cache servers, high availability and failover, monitoring and reporting capabilities and more. There are few features in WXS that Coherence does not provide, such as Disk Off-load or Disk Snapshot support, which enables faster restoration of the grid post failure or maintenance. The alternative is to do the grid data replication over the network. The disk snapshot is stored locally on every machine with container JVMs running. Another WXS advantage is the ease with which new caching JVMs can be added to the grid. Performance for large scale implementation is another area where WXS shines compared to Coherence. Unfortunately Oracle software license does not allow anyone to publish their performance results without the Oracle written permission (and do you think they will allow anyone to publish any result that shows Oracle lacking?). Hence I can not share any specific numbers comparing WXS and Coherence, but I do suggest that you run your own performance tests to see which product is faster. I am sure Oracle can come up with a couple of things Coherence does well that WXS does not provide (if you know of any – please let me know).
In addition to technical advantages, IBM also wins on cost:
- WXS has lower license cost
The current WXS list price is $152 per PVU while the current Oracle Coherence Grid Edition list price is $25,000 per processor core (I will explain how this compares in examples below).
- WXS supports VMware and other software hypervisors, Coherence does not
What this means is that regardless of the number of cores you are using to run your caching product, you would have to pay for entire server with Oracle and only pay for the cores you actually use with IBM. The only hypervisor supported by Oracle is OracleVM, but chances are it is not what your company uses for virtualization. Take a look at my other post on this subject: “IBM and Oracle software licensing and support in virtualized private cloud environments”
- IBM provides Disaster Recovery, Warm Backup at no charge
Oracle wants you to pay for all of those.
- IBM provides Cold Backup at no charge
Oracle wants you to pay for Cold Backup in case you failover to it for more than 10 days in a year, including testing.
- First year of support for WXS is included into the license cost
With Oracle you pay for the 1st year of support on top of the license fee.
- IBM support cost is 20% of the license fee
Oracle charges 22% for support.
I have explained these cost differences in great deal of details in my recent webcast: “Save money with IBM WebSphere over Oracle WebLogic”.
Let me illustrate some of the above considerations with specific examples. Suppose you decide to run a cache on a grid of 4 servers and for those servers you decide to use IBM BladeCenter HS22. These are blades well suited for heavy caching workloads with high-speed I/O (up to four 10 Gigabit Ethernet to each blade and up to eight ports of total I/O per blade), can take up to 192 GB of ultra fast memory and have two Intel Xeon 5600 series processors, up to 3.60 GHz. The IBM PVU rating for these machines is 70 PVUs per core and Oracle core factor is 0.5. The table below provides an illustration of the cost difference between WXS and Coherence for such configuration, where each machine runs VMware hypervisor so that only select number of cores on each machine is used to run the caching software. Please note that in case of Oracle this makes no difference as licenses must be procured for all cores on each machine.
My examples below show three different configurations. The only difference between these configurations is the level of virtualization. First example shows the cost of a 4 server setup where only 2 cores out of total 8 cores on each server are used to run the VMware guest with WXS or Coherence. In second example I use 4 cores out of total 8 to run the VMware guest. The last example shows configuration where no virtualization is being used (i.e. native OS install) or VMware guests are using all 8 out of 8 total cores on all servers. IMPORTANT: All pricing examples are using list prices. As you well know, discounts are available from both IBM and Oracle, and the street prices that you would pay would be lower than the ones shown below.
As you can see WXS has significant cost advantage over Coherence in all cases, but it is mostly pronounced in the case when small percentage of the cores is used to run the caching workload. Since caching is memory intensive and not CPU intensive, the case where you use virtualization and only dedicate small number of cores to caching is more realistic scenario.
While the software version of the software provides choices for the deployment platform and the operating system, the appliance form factor offers significant advantages over traditional software. IBM delivers appliance with built-in WXS caching capability sold as the IBM WebSphere DataPower XC10 Appliance and is designed to work in heterogeneous environments. Appliance can be used as external cache by your custom application or by any of the IBM or 3rd party products that are capable of using Java or REST APIs. Once again, this article I mentioned earlier provides an example how XC10 can be used to accelerate Portal and Content Management applications.
One might ask – why would I ever want to use cache appliance if I can simply use cheap hardware and install software cache products? The answer is – simplicity and ease of deployment and operations. While software caching might be more flexible and highly customizable, many customers found that IBM XC10 caching appliance provides a very compelling value by being very easy to use and very fast to deploy, thus with significantly lower Total Cost of ownership. In those cases when customers need extensibility and additional flexibility, software caching may be better, but in many cases the simplicity and ease of use of appliance outweighs the flexibility and programmability of the software version of WXS. To illustrate my point, let me use this example of the tasks required to setup a new cache node in appliance form factor vs. software based caching:
As you can see, the fact that appliance embeds the software and comes pre-installed and tuned out of the box makes a big difference. But this comparison between software vs. appliance goes beyond just the time to setup, it also has large impact on the Total Cost of Ownership as I show in the table below:
Note 1: Cost comparison assumes $150 per hour labor rate and dual socket six core server for Oracle Coherence server
Next time you have performance and scalability issues with your application, consider the possibility of using caching. Also consider the flexibility of the software caching vs. the ease of use and simplicity of the cache appliance. There is no one answer to every problem, but with IBM you have a choice. With Oracle you do not.