Petit Déjeuner GigaSpaces – 17 Novembre 2008

GigaSpaces organise, en partenariat avec FastConnect un Petit Déjeuner Exécutif le 17 Novembre 2008 dans les Salons Etoile Wagram à Paris : http://www.gigaspaces.com/Upcomingevents.
Si vous voulez vous inscrire, c’est aussi simple que çà.

L’objectif de ce petit déjeuner est de présenter comment les solutions de Grilles de Données (DataGrid) et de serveur d’application virtuel (Scale Out Application Server) de GigaSpaces peuvent aider à:

  • garantir la performance de vos applications, quels que soient les volumes de données traitées
  • assurer le bon fonctionnement de vos applications en cas de charge imprévue du système

4 présentations sont prévues à l’heure actuelles, dont 3 animées par des clients et partenaires de GigaSpaces.

J’animerai la première présentation, en introduisant la problématique de gestion de la performance et de garantie des temps d’accès sous contrainte de volumes croissants à travers l’utilisation de grilles de données en mémoire et de techniques de virtualisation applicative.
L’objectif pour moi est de présenter comment des technologies comme GigaSpaces permettent de déléguer la gestion des Non Functional Requirements à une infrastructure implémentant les bonnes pratiques de scalabilité et de performance capable de fournir la scalabilité linéaire nécessaire aux architectures techniques actuelles.

Ensuite, Luc Taguet, Responsable de l’Architecture Technique pour les Dérivés Actions chez Calyon présentera la mise en oeuvre du produit GigaSpaces Enterprise DataGrid en combinaison avec DataSynapse GridServer dans le cadre du déploiement d’une nouvelle solution de pricing distribué à la Direction Informatique des Marchés de Capitaux.

Mandhir Gidda, Head of Technical Architecture chez Avenue A Razorfish, un partenaire britannique de GigaSpaces, présentera un framework SOA de nouvelle génération basé sur GigaSpaces qui est utilisé chez un grand opérateur mobile anglais et qui met à profit les capacités de la plate-forme.

Enfin, Uri Cohen, Product Manager GigaSpaces présentera la dernière version 6.6 de GigaSpaces Extreme Application Platform, le serveur d’applications ‘scale-out’ de nouvelle génération qui inclue maintenant la capacité de déployer un war et de bénéficier immédiatement des atouts de GigaSpaces.

Il est très intéressant de voir comment GigaSpaces a évolué d’un « marché de niche » orienté hautes performances, latence faible et scalabilité horizontale pour se lancer à la conquête des grands espaces dans le monde du Serveur d’Applications, de la Virtualisation Applicative et du Cloud Computing.
Originellement, GigaSpaces embarque dans son implémentation un certain nombre de services de la spécification JINI dont la plate-forme tire sa force.
Il y a quelques années GigaSpaces a fait le bon choix de mon point de vue en se « mariant » au framework Spring afin de fournir le niveau d’abstraction suffisant pour éviter le « vendor lock-in » et faciliter la réutilisation de code existant (entre autres).
Ils ont ensuite fait évoluer la plate-forme afin de ne pas fournir une plate-forme uniquement dédiée à la communauté Java mais en prenant en compte les besoins des communautés .Net et C++.

La convergence des visions technologiques sur le développement d’applications d’entreprises modulaires et scalables de sociétés telles que GigaSpaces et SpringSource (et d’autres), me semblent être un signe d’une évolution du modèle traditionnel de développement d’applications.
La tendance est clairement à l’utilisation de plates-formes souples, non intrusives, légères, intégrables facilement dans des Usines Logicielles et fournissant un ensemble de services et d’implémentations de bonnes pratiques d’architecture afin de nous permettre de nous concentrer sur la logique métier et pas uniquement dans le domaine des applications Web.

Adaptées au modèle technique et économique (‘Infrastructure à la demande’) proposé par les vendeurs de Cloud Computing tels qu’Amazon (EC2) elles permettent le développement d’applications extensibles adaptables à la charge et dont le coût opérationnel correspond à l’utilisation effective des ressources.

Nous sommes dans l’ère de l’application élastique !
C’est Mr Fantastic qui va être content ;-)

L’intérêt pour un responsable IT est que ce type d’approche permet d’adresser des besoins de scalabilité applicative en réduisant les coûts de développement, d’intégration et opérationnels, et, cerise sur le gâteau, est bénéfique pour l’environnement par son intégration naturelle dans des environnement virtualisés.

J’espère vous voir lors de cet événement.

Plus d’infos sur GigaSpaces en allant sur le blog de Nati Shalom (CTO GigaSpaces) ou directement sur le site Web de GigaSpaces.

Back from CITCON 08

A few weeks ago I went to CITCON (the Continuous Integration Conference Europe 2008) in Amsterdam.

The Venue

The Venue (IBM Amsterdam)

It was my first Open Space Conference and I think many others will follow. If you have never tried one, you should probably look for the next barcamp in your city.

Proposing a subject

Proposing a subject

Even if CI is the main purpose of the conference, only few sessions were exclusively targeted to CI and CI tools.
Of course, there was a « CI servers » session, 7 servers were presented: CruiseControl, build-o-matic, Hudson, JetBrains TeamCity, Rational BuildForge, Zutubi Pulse2, Cruise.   But many sessions were devoted to agile methodologies and how it could help/enable the CI process.
To mention few of them: Selling Automated Acceptance Testing, Automated Regression Testing, Release Management and Automating Deployement, a Coding Dojo, and the most contreversial Is Scrum Evil? (a follow-up of this discussion by Eric Lefevre).

Globally I enjoyed participating in those discussions and gathering feedback on CI usage (especially during the informal discussions before and after the conference).

If you want to know more about the conference, don’t miss the CITCON wiki: http://citconf.com/wiki/index.php?title=CITCONEurope2008Sessions

The final Planning

The Final Planning

And see you at CITCON Europe 09!

Compute Grid – Parallel Processing new generation

GridGain introduced some years ago the neat capacity to execute remotely some Java code without any deployment in a MapReduce style. New GigaSpaces 6.6 release introduces a similar feature.

How do they compare? Are they equally powerful? To try answering this question we will develop on both platforms a simple application summing characters of some words.

API

A similar high level interface allows to execute multiple times a task then reduce all results in a final answer. In GigaSpace this interface is Task, in GridGain GridTask.

While similar in appearance their usage is quite different.

In GridGain a task will be split in several Jobs server side with full control on those individual Jobs. This includes arguments but also job types. Each individual job execution can then be split into sub jobs

In GigaSpaces a task will be executed on some (or all) nodes but identically. You cannot split and generate dynamically parameterized tasks. This can be simulated using ExecutorBuilder but client side. In our case we will have to manually reduce client side our results. Tasks executions are here intended to be parallelized on a set of partitions then reduced thus limiting dynamic behaviors.

Both products allow to control what to do with incoming results during reduce phase and when to stop and return final result.

GigaSpaces

Our sample implementation would be here divided into two pieces.

The task itself:

import org.openspaces.core.executor.Task;

public class GridWordCountTask implements Task {
  private static final long serialVersionUID = 1L;
  private final String word;

  public GridWordCountTask(final String word) {
    this.word = word;
  }

  public Integer execute() throws Exception {
    return this.word.length();
  }

}

and the client side code:

final IJSpace proxy = IJSpace.class.cast(SpaceFinder.find(args[0]));
final GigaSpace gigaSpace = new GigaSpaceConfigurer(proxy).gigaSpace();
final ExecutorBuilder executorBuilder = gigaSpace.executorBuilder(new SumReducer(Integer.class));
final String sentence = "This is a very simple test.";

for (final String word : sentence.split(" ")) {
  executorBuilder.add(new GridWordCountTask(word), 0);
}

Pros:

  • Native support with GigaSpace component.
  • Resources defined in your Processing Unit server side.
  • Built in reducers.

Cons:

  • Classes definition modification implies space restart. This is currently a known limitation GigaSpaces R&D will overcome in a further release.
  • Routing execution has to be manually handled.
  • Multiple concurrent executions are strictly identical. You can’t provide different arguments (you have to retrieve arguments as part of the logic -through the space for instance-).

GridGain

Here is the task implementation:

public class GridWordCountTask extends GridTaskSplitAdapter {

  private static final long serialVersionUID = 1L;

  @Override
  protected Collection split(final int gridSize, final String argument) throws GridException {
    final List jobs = new ArrayList(1);
    for (final String word : argument.split(" ")) {
      jobs.add(new GridJobAdapter(argument) {

        private static final long serialVersionUID = 1L;

        public Integer execute() {
          return word.length();
        }

      });

    }
    return jobs;
  }

  public Integer reduce(final List results) throws GridException {
    int sum = 0;
    for (final GridJobResult result : results) {
      sum += (Integer) result.getData();
    }
    return sum;
  }

}

and the client code:

GridFactory.start();
try {
  final String sentence = "This is a very simple test.";

  final GridTaskFuture future = GridFactory.getGrid().execute(GridWordCountTask.class, sentence);
  System.out.println("Sentence <"+sentence+"> has <"+future.get()+"> characters.");
} finally {
  GridFactory.stop(true);
}

Pros:

  • Annotation facility based on AOP (Gridify).
  • Easily extensible/pluggable to a number of products.
  • Good documentation/samples.
  • Progress indicators of tasks/jobs can be generated.

Cons:

  • No user interface.

ExecutorService support

Both products support ExecutorService to execute tasks. This almost remove the vendor specific code and facilitate switching between local and remote execution (might be useful for testing).

The only mandatory step is to ensure that your Callable is Serializable. Relying on following interface will do the job:

public interface GridCallable<E extends Serializable> extends Callable<E>, Serializable {
}

Conclusion

While still young GigaSpaces native support of remote java code is a good news and will certainly become a killer feature. Integrated approach advocated by GigaSpaces allows to really easily submit task execution which can natively using the simple Space API access in memory information. Furthermore data affinity is a key feature here and doesn’t have to be managed.
On the other hand GridGain focuses on task executions and allows to plug a number of components (including caching component) through their nice SPI support. Remote execution is more mature and supports concepts such as job stealing and pluggable load balancing.

For now GridGain specialized framework allows more complex remote execution work flows but introduction of this new Executor feature gives us a sign that GigaSpaces is willing to fill the gap sooner than later.
GigaSpaces integrated (by design) approach (in memory caching, virtual ESB, parallel processing and transactional support) is definitively worth a look if you privilege ease of use and management or are looking for very low latency application platform providing capabilities you may have to incorporate into your application by linking several pieces of technology together.

Resources