Saturday, May 28, 2011

Elastic Caching Providers

In my previous post we have discussed about how to increase performace & scalability of web applications. Also, cloud based application growing day and night, I thought it would be nice to point out most of caching providing. In todays world we have different clients (web, mobile, ipad etc) for an application and as developer you have to make sure that your application handling users load, and these requirements have produced a diverse elastic caching market that includes not only the large vendors but some open source solutions:

Oracle Coherence and GigaSpaces eXtreme Application Platform (XAP) are the veterans. Oracle and GigaSpaces have the longest presences in the distributed caching market. Both offer elastic caching products today to both enterprise and Web customers, although mostly to enterprise customers. Oracle incorporates its Coherence product into two of its Fusion Middleware bundles but sells the product separately as well.

IBM and Terracotta challenge Oracle and GigaSpaces across the board. IBM and Terracotta (now Software AG) arrived later to the elastic caching platforms market but are challenging the veterans for both enterprise and Web accounts. IBM’s WebSphere eXtreme Scale will get attention as they came with XC10 device, IBM now has hit stride with the product primarily as an extension of architectures based on its WebSphere Application Server.

Terracotta makes its software available under both open source and conventional licenses, and it focuses almost exclusively on selling through developers. Terracotta expanded its offerings by buying Ehcache, a popular open source client-side product, and positioning Ehcache as the primary API to its elastic caching platform. As Amazon is one of the Elastic Caching Pioneer and they provides terracotta caching solution with EC2.

Spring GemStone is focused on big enterprise projects. GemStone has focused almost exclusively on large enterprise projects in financial services, defense, and intelligence. GemStone is a software industry veteran with a history in the Smalltalk language and object-oriented databases and has applied its expertise and technology to the problem of elastic caching. Gem Store will be integrated with other spring framework and Spring TC server (offering session replication at extreme scale), as per spring, other potential area to integrate with spring web flow to provide (transparent flow replication).

Red Hat JBoss is an emerging player. Red Hat’s JBoss middleware division has begun phasing out its distributed caching software (bundled with JBoss as JBoss Cache) and will replace it with the new Infinispan elastic cache. Infinispan is in a very early stage of commercialization, and I it to gain lots of attention from Java developers and eventually build a position in the market as a strong alternative.

Membase which is now part of CouchBase, provides distributed, key-value ("NoSQL") database management system optimized for storing data behind web applications. These applications are characterized by their need to serve many interactive users concurrently; they must create, store, retrieve, aggregate, manipulate and present data in real-time.

Now since we have listed most of the players from EC world. If I would have to choose one or two from above i'll go with terracotta or IBM as they provides more option for developer and their EC solutions seems to better compare to some other one.

Have fun with EC...

Saturday, May 14, 2011

How to scale your application: Cloud & Cache

From last few days, I have been reading a book about "Web Scalability" and some intresting articles about “scalability”. In a nut shell, how to improve performance and better scale your application. With this post today I’m going to discuss some major choices to dramatically raise the scale of applications:

Scaling option # 1: Add servers to increase capacity. Add servers or virtual machines to cache user Web sessions, execute business logic, and process transactions. Each added server carries the cost of hardware, software, electricity, and ongoing management. Even if you buy more application servers, your database may then become a new bottleneck. Databases can be redesigned to scale up or out, but it is often very costly to do so. The new buzz, Cloud computing can deliver server instances on demand, but it cannot redesign your application code and data to take advantage of additional resources. And soon or latter one will realize and say, “We can’t just keep throwing hardware at the problem.”

Scaling option # 2: Re-architect the application for greater capacity. Redesign the application for greater capacity by sharding databases, going stateless, splitting functions, improving the layering and separation of concerns, and/or adding asynchronous processing, common services, caches at every layer, single-function appliances, etc. or thorowing new pattern to re-factor some or most of code will take lots of time and money. Most organizations find this remedy too slow to deliver results and sometimes too risky and expensive. Your management and more likely users will say “We’ve got a problem now — we can’t wait a year to solve it.”

Scaling option # 3: Add caches that scale easily. Elastic caching platforms add a fast, scalable, and fault-tolerant data-access layer that can be used to cache transaction results, user session objects, shared application data and other data. Most organizations find that elastic caches easily fit into existing Web architectures and improve scale at a lower cost than the first two options. Also since mobile development is on high right now, that area can really get advantage of cachine solution, as they can choose what object, variable to cache or not to cache. Once you use this solution no one will go back to previoud options.

If you didn’t get bored so far and reached here, Congrates!!! And by now it would have been clear to most of you, that I’m going with 3rd option to gain scalability of web applications. Hopefully in coming days will post more about major caching players.