Nati Shalom, CTO of GigaSpaces, talks about eXtreme Application Platform 7.0

DZone 's Guide to

Nati Shalom, CTO of GigaSpaces, talks about eXtreme Application Platform 7.0

· Performance Zone ·
Free Resource
GigaSpaces Technologies last week announced the launch of eXtreme Application Platform (XAP) 7.0, an enterprise grade application server designed for deploying and scaling distributed applications.  DZone had a chance to bounce a few questions off Nati Shalom, CTO of GigaSpaces about XAP 7.0.  Here's what he had to say.

DZone: Although you've made some dramatic performance improvements, especially on multi-core machines, is R7.0 more than just a performance release?

Nati Shalom: Yes, the new version provides at least three major benefits beyond the performance boost:
  • XAP 7.0 offers all the patterns you need to build scalable applications in a simple and cost-effective way – based on lessons learned from our demanding enterprise customers and from the new generation of Internet services such as Google, Amazon and Twitter. These patterns include asynchronous even-driven design, partitioning/shards, parallel execution and Map/Reduce, consistency without distributed transactions, and moving the database to the background while persisting all data with 100% reliability and consistency (more details on all of these in my blog). XAP 7.0 offers all these patterns working out-of-the box, on a single platform, without forcing the user to shop around for different packages and point solutions, figure out how to glue them together, and take the risk that the weakest link in this complex chain will break the entire application.

  • Platform-level support for multi-core which abstracts the complexities of concurrency from the programmer, and provides much higher utilization for your existing code, without requiring any special skills. This is much more than just a performance issue – it is a big step forward in our ability to easily take advantage of today’s highly concurrent, multi-core environment. See more details under question (3) below.

  • Opening the product's entire clustering framework with an all-new cluster management API – the new cluster management API package in XAP 7.0 adds a new level of transparency and fine-grained control to GigaSpaces’ simplified distributed computing model. Developers now have programmatic control over all aspects of the system, from the single object level up to the entire cluster behavior. The new API also enables full automation of deployment of large cluster environments, including peripheral entities such as database and load-balancer. Perhaps most importantly, the API provides on-the-fly feedback on system behavior, enabling users to take action automatically when anything goes wrong or when the system doesn't meet a given SLA at a specific point in time. All this can take place while the system is still running!
Also, you might want to attend our 7.0 Launch Webinar, where I’ll be covering the vision and high-level benefits of the new release, together with the lead architect of eBay subsidiary Marktplaats, who will describe how they've taken advantage of XAP to scale the Netherland's most popular online marketplace.

DZone: How well is XAP suited for SaaS and Cloud Computing?  Is it a stepping stone, an alternative or a good fit?

Nati:  It is a stepping stone.  In this release we provide users with the option to use XAP completely as a service.  We provide a new web service on our website that enables users to try out the product and run a full production-ready environment that includes load-balancer, web container, data grid and database, in just one click.  This new service includes enhanced integration with Amazon cloud that allows us to provide a Platform as a Service solution.  You can see more details on our new cloud page at http://www.gigaspaces.com/cloud and on my blog at http://natishalom.typepad.com/nati_shaloms_blog/2009/07/p.html.

Also, many GigaSpaces customers are using XAP to conduct testing of enterprise software on the cloud. XAP creates an identical, portable environment which runs on the cloud and in your local testing site, so you can develop locally, and then deploy an identical system on the cloud. This enables scaling up to hundreds of machines and simulating extreme load scenarios, without needing to provision any hardware or setup an environment.

DZone: Concurrency is a tough problem for even the battle-hardened developers.  How has R7.0 has made concurrent programming simpler for the developer?

Nati:  With 7.0 we made our data model lock-free, which enables our users to take full advantage of multi-core. The user uses a layer of Spring Framework abstractions, which provide a simple event-driven programming environment similar to the Scala/Erlang Actor model. The user writes simple POJO and all concurrent event interactions happen behind the scenes.

Here is a snippet from a blog post that I wrote which can shed more light on how this works:

Instead of executing a long transaction and blocking until everything is committed, break the operation into small individual steps where each step can fail or succeed individually. By breaking the transaction into small steps, it is easier to ensure that each step can be resolved within a single partition, thus avoiding all the network overhead associated with coordinating a transaction across multiple partitions. This has been one of the core concepts in designing scalable applications with Space Based Architecture (SBA). The Actor model that was introduced with new functional languages like Scala and Erlang is built into the SBA model, with the difference that in SBA, actors can share state and pass events by references, and thus avoid the overhead of copying the data with every transaction.
This is a diagram which might make things even more concrete, taken from a technical post by Shay Bannon on the SBA Actor model. In his post, you can also see code snippet demonstrating how the user code would look like using this model. The diagram shows a simple polling container that wraps a service (Actor). The polling container removes data, processes it, and writes data back to the data grid. This functionality is built into the core of XAP 7.0.

DZone: Developing for clusters, grids, highly scalable applications is one challenge.  Managing such complexity in production is just as tough, if not tougher.  What manageability and administration conveniences are included in R7.0?

Nati: Quoting from a post by Guy Nirpaz, our head of R&D, on the new release:

New monitoring and administration tools:  
  • Groovy and Java Cluster Monitoring and Administration API. This API enables to automate, monitor and control the entire GigaSpaces XAP runtime environment. …
  • GigaSpaces Agent. … GigaSpaces servers and applications can be controlled from a remote location whereas the physical location of the hosting machines may reside within the enterprise data center or even remotely on a public cloud. …
  • Zones SLA. … Users can define fine-grained redundancy constraints. For example, users may want to ensure that primary partition and its backup are not hosted on the same machine …
  • Revamped Management Console. GigaSpaces XAP allows users to gain full control on their system, from the physical machine layer, through GigaSpaces grid infrastructure, up to the internal application components. …

DZone:  How does GigaSpaces help companies with economies of scale? In other words, can I grow with GigaSpaces with a cost-effective licensing model?

Nati: There are two ways to answer this question – from the perspective of just the GigaSpaces XAP license cost, and from a TCO perspective. Regarding the license cost, we have several options for growing with our product:

  • GigaSpaces offers volume discounts for large-scale deployments
  • For large-scale deployments, we also offer unlimited licenses, where you pay a fixed price, either per application or for the entire organization (ELA) and can use XAP on as many CPUs as you want.
  • We now offer pay-per-use pricing on the cloud, so you can start using XAP with no upfront investment. If your volumes grow and you’re prepared to commit to a yearly subscription, you’ll get a 30% discount on XAP’s hourly rate. We also offer a yearly subscription model if you use XAP off the cloud.
  • Another way to grow with XAP is to start with the free XAP Community, which is the full product for one cluster node; move on to the low-cost Standard Package which is limited to two nodes (8 cores); on to the Premium Package which offers unlimited cluster size and is suitable for large enterprises.
  • We also offer a lower-cost package which includes just our In-Memory Data Grid functionality; if your needs evolve, you can add more value by moving to the full-blown XAP with reliable messaging, parallel processing, web container integration, and so on.

 But there is also the broader TCO perspective. Without GigaSpaces XAP, as soon as an application needs to “scale out” beyond one machine, scalability becomes very expensive - there are diminishing returns from each additional machine, until at some point adding more machines actually decreases performance (as stated by Amdahl’s Law). Because XAP scales applications linearly, it changes this reality and substantially saves on total cost as your application grows. With XAP you’ll need to purchase much less hardware in order to scale up – our calculations show that the hardware saving ranges between 15-90%. For example, in a database-centric web application which needs to scale up by 150%, scaling up with GigaSpaces XAP will save at least 45% of the additional hardware. Not to mention our ability to achieve extreme scalability with commodity hardware, which is much cheaper to purchase and maintain than the usual high-end hardware. If you’re interested, this page summarizes XAP’s total-cost benefits related to economies of scale: http://www.gigaspaces.com/linearscalability

DZone:  Thanks, Nati, for taking the time to chat to us.

Nati: I hope this answers your questions and thanks for the interest in our new release!


Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}