dimanche 12 avril 2009

Quel crédit donner aux résultats affichés par le DashBoard de GoogleApp Engine (GAE) ?

Le DashBord de GoogleApp Engine (version java), présente des résultants intéressants, mais quelle est la vérité derrière ces données, la prochaine section on va tester les résultats.

Cette section a pour objectif : la Vérification de valeurs présentées par le Tableau de Bord de GoogleApp Engine (GAE) :

Pour cela, nous allons utiliser un outil de simulation classique dans le monde des études de performances : le fameux Jmeter

Installer un outil de simulation de charge

Télécharger jmeter à partir de http://jakarta.apache.org/jmeter/

Lancer Jmeter et créer un Script de simulation d'exécution de l'application

Attention, le teste a été réalisé à partir d'un ordinateur Portable connecté à Internet avec un débit limité, ADSL 1Mo (théorique), ça n'a pas de valeur intrinsèque pour mesurer les performances de la plateforme, mais permettra de comparer les résultats.)

On lance une simulation de 20 utilisateurs virtuels simultanés (20 Threads)

http://kbdsoft.appspot.com/

http://kbdsoft.appspot.com/pagesManagement.do

http://kbdsoft.appspot.com/menuManagement.do

http://kbdsoft.appspot.com/user.do

http://kbdsoft.appspot.com/audit.do

http://kbdsoft.appspot.com/rolesManagement.do

http://kbdsoft.appspot.com/index.do

Le scénario est exécuté 100 fois.

Exécuter la simulation de charge

Réaliser une simulation de montée en charge

On remarque qu'au début de la simulation

Après quelques minutes et à la fin des

Ce Tableau de Bord permet de suivre en temps réel le comportement de l'application : il s'agit de la mise en ouvre du concept SAM (Service Activity Monitoring, permet de suivre les SLA fixé dans le contrat, pour la version payante)

Ainsi, après 100 exécutions du script, les résultats présentés par Google sont résumés ainsi :

De l'autre coté, après la fin des 100 exécutions du script, les résultats présentés par Jmeter sont résumé ainsi :

Comparer les résultats de Jmeter et GAE

On remarque une bonne concordance des résultats (bien sûre il s'agit d'une simulation courte et pour avoir des résultats plus détaillés, il faut se rappeler que les mesures de performance doivent suivre une étude statistique et utiliser les lois de grands nombres)


Jmeter

Résultat vue par le client

GAE DashBord

Résultat vue par les serveurs de Google

http://kbdsoft.appspot.com/

1.135

1.2

http://kbdsoft.appspot.com/pagesManagement.do

2.265

2.4

http://kbdsoft.appspot.com/menuManagement.do

2.275

2.4

http://kbdsoft.appspot.com/user.do

3.411

3.6

http://kbdsoft.appspot.com/audit.do

1.142

1.2

http://kbdsoft.appspot.com/rolesManagement.do

1.144

1.2

http://kbdsoft.appspot.com/index.do

1.147

1.2

Total

12.59

13.5

Les résultats montrés par Google sont ainsi validé par les résultats de Jmeter, on peut se fier à ce tableau de Bord.

Conclusion :

Pour ce premier test, je suis « tombé sous le charme » : il m'a fallu moins d'une demi-heure pour déployer une ancienne application (simple) basée sur Struts sur le cloud de Google

Aucune modification n'a été nécessaire !

Certes : il n'y a avait pas de transaction, de base de données, de Spring, de Hibernate …

Un Tableau de Bord (DashBoard) permet de suivre l'activité de l'application et de voir les logs et les temps de réponse et même la facturation (n'a pas été testée dans ce tutorial).

Le travail avec GAE parait

  1. Simple

  1. Permet de recycler les « réflexes » des développeurs Java
  2. Permet de recycler les « anciennes application » Java
  3. Le Dashboard donne des informations proche de la réalité et vérifiables


La suite : continuer à tester :

-impact des bases de données (JDBC/JPA/JDO)

-L'utilisation des Framework classiques : Spring, JaxB, Axis, Hibernte


Le cloud coumputing en marche ...

samedi 11 avril 2009

Cloud Computing : Google App Engine à la conquête des développeurs java

On l'attendait pour le milieu de l'année, mais Google vient de la lancer officiellement au début du second trimestre 2009 : La « déclinaison » java de sa plate-forme Google App Engine est désormais là.

C'était logique : il fallait réagir rapidement : pour faire barrage à Microsoft Azure.

La manouvre est habile : supporter Java 6 et offrir un plugin Eclipse, permet à Google d'élargir la base de développeurs cible.

Google vise ainsi à faciliter la réutilisation de code source et à introduire les langages dynamique de type Groovy…

Et pour mon premier test, je suis « tombé sous le charme » : il m'a fallu moins d'une demi-heure (moins de 30 minutes pour déployer une ancienne application (simple) basée sur Struts sur le cloud de Google)

Aucune modification n'a été nécessaire !

... et l'application "est dans les nuages".

la courbe d'apprentissage est "rapide".

Certes : il n'y a avait pas de transaction, de base de données, de Spring, de Hibernate …

Voir le résultat en bas ou allez : http://kbdsoft.appspot.com/

Un dashBoard permet de suivre l'activité de l'application :

Mais,

Attention : l'accès gratuit est limité aux 10 000 premiers inscrits.

et on attend un plagin Grails spécialement conçue pour la création d'application Grails pour google appengine

mais ceci est un autre sujet (à suivre) ...







à suivre "le tabeau de Bord : donne t il des données vérifiables"

jeudi 9 avril 2009

Appel à la définition d’un Cloud Computing Basic Profile (CC-I Basic profile)


OXIA est, désormais, l'unique SSII maghrébine à faire partie des sociétés qui adhèrent à l'Open Cloud Manifesto, visant à faciliter l'interaction entre les différentes approches de cloud computing.

L'Open Cloud Manifesto est un manifeste destiné à prôner un système de cloud computing ouvert et interopérable.

Parmi les défenseurs de l'OCM, on note les présences, d'IBM, de Sun, de Red Hat, de Cisco, d'EMC, de Juniper, de Novell, de SAP et de VMware.

De l'autre coté, on note le refus de Microsoft et Amazon d'adhérer à cette démarche et l'absence de réaction de Google.

Notons, qu'il est désormais, obligatoire que les Editeurs, les SSII et les utilisateurs se rencontrent, pour débattre et se mettre d'accord sur les bases d'interopérabilité du cloud computing.

Il faut définir un Cloud Computing Basic Profile (CC-I Basic profile), à l'instar du fameux WS-I Basic Profile établissant le minimum d'interopérabilité des web services.

En effet, la prolifération de nouveaux standards de facto, dans une guerre entre les fournisseurs pour protéger leurs parts de marché ne peut qu'être néfaste pour l'avenir du Cloud Computing

Je pense que le partage de certaines règles de base doit permettre d'accélérer l'adoption du cloud computing, par les développeurs et les éditeurs.

En effet, beaucoup d'autres eux, n'osent investir dans le Cloud Computing, par peur du ticket de sortie trop chère et la forte dépendance au fournisseur.

A faire à suivre ...


La liste des défenseurs de l'OCM: http://www.opencloudmanifesto.org/supporters.htm


lundi 30 mars 2009

Oracle Application server 10g n’aime pas les coupures d’électricité

Suite à une coupure d'électricité, le serveur n'arrive plus à démarrer les instances de OC4J.

L'administrateur du système (chez un client) m'appelle : « OAS ne marche plus et réclame une file d'attente JMS, le problème c'est qu'il n'y a jamais eu besoin de cette file d'attente ? »

En effet, le lancement du serveur ne s'effectue plus et le message d'erreur (dans le fichier log) est bizarre :

09/03/30 15:47:10 *** (SEVERE) Failed to set the internal configuration of the OC4J JMS Server with: XMLJMSServerConfig[file:/F:/product/10.1.3/OracleAS_1/j2ee/APP_FRONT/config/jms.xml]

09/03/30 15:47:15 ATTENTION: Application.setConfig Application: default is in failed state as initialization failedjava.lang.InstantiationException: Error initializing ejb-modules: Resource exception(OracleASjms) for MessageDrivenBean event during endpoint activation: failure looking up ConnectionFactoryJndiName:jms/XAQueueConnectionFactory: javax.resource.spi.ResourceAdapterInternalException: Looking up jms/XAQueueConnectionFactory: javax.naming.NameNotFoundException: jms/XAQueueConnectionFactory not found

30 mars 2009 15:47:15 com.evermind.server.Application setConfig

ATTENTION: Application: default is in failed state as initialization failedjava.lang.InstantiationException: Error initializing ejb-modules: Resource exception(OracleASjms) for MessageDrivenBean event during endpoint activation: failure looking up ConnectionFactoryJndiName:jms/XAQueueConnectionFactory: javax.resource.spi.ResourceAdapterInternalException: Looking up jms/XAQueueConnectionFactory: javax.naming.NameNotFoundException: jms/XAQueueConnectionFactory not found

09/03/30 15:47:15 Error initializing server: Error initializing ejb-modules: Resource exception(OracleASjms) for MessageDrivenBean event during endpoint activation: failure looking up ConnectionFactoryJndiName:jms/XAQueueConnectionFactory: javax.resource.spi.ResourceAdapterInternalException: Looking up jms/XAQueueConnectionFactory: javax.naming.NameNotFoundException: jms/XAQueueConnectionFactory not found

09/03/30 15:47:17 Fatal error: server exiting


Heureusement, c'est bénin (pour ne pas dire banal):

Il suffit de se rappeler qu'OAS gère un système de fichiers LOCK dans le répertoire

%OAS10g_HOME%\oc4j\j2ee\home\persistence

Le nettoyage n'ayant pas été fait, lors de la coupure d'électricité, les fichiers de gestion de LOCK sont restés. Cela empêche OC4J de démarrer.

Malheureusement, il n'est pas programmé pour détecter ce type de situation.

La solution :

Il suffit (pour toutes les instances de OC4J)

  1. de supprimer les fichiers LOCk (*.lock)
  2. redémarrer le serveur (OC4J)

il faut avouer, ce n'est pas aussi simple qu'avec du Tomcat.



Architecte SOA & Professionnel Open Source Headline Animator

 
Khaled BEN DRISS
Cloud Computing, SOA et Web 2.0 : Des sujets techniques sur SOA et l'Open Source : de Java & .Net, PHP5, Symfony, à SaaS / PaaS en passant par Azure, google appengine, le BPM, la Modélisation et d'autres sujets du coté du serveur et cloud computing.