Cloud / Mobile Development

Hello à tous,

Objectif: Développer une application accessible via un smart phone et/ou un navigateur web.

Je n’entre pas dans les détails « fonctionnels » de l’application. L’application doit avant tout être modulaire (ajout de fonctionnalité).

L’application devra être hébergé « in the cloud« . Le budget initial est approximativement le temps que je passe pour faire une 1ere version « utilisable » de application. Par utilisable, J’entends qui peut être diffusé à un premier groupe d’utilisateurs qui n’ont pas peur des petits bugs . La solution de publicité pour le financement (du projet) est envisagée mais pas souhaitée. L’objectif est plutôt de fournir une application dont la valeur ajoutée est suffisante pour que l’utilisateur accepte de payer pour son utilisation.

Comment restreindre au maximum le cout de l’infrastructure? La solution actuelle est les solutions « Cloud » d’Amazon Web Services, Google App Engine, Microsoft Azure, Rackspace Cloud, etc… L’intérêt de ces offres étant de payer à la consommation de ressource (bande passante, CPU, espace disque, etc…)

Le seul cout est donc le temps (libre!) que je passe à développer la plateforme. N’ayant pas une quantité infinie de temps libre puisque je suis actuellement sur une mission plus que prenante, une vie sociale, etc. il faut que les choix technologiques me permettent d’optimiser le temps à développer tout en prenant en compte les contraintes de la solution d’hébergement.

On écarte .net presque à regret puisque cette technologie semble connaitre un certain « momentum » dans le domaine de la finance ou j’exerce actuellement. Le langage semble cependant assez proche de java mais l’offre d’hébergement se limite à Azure qui est un peu plus cher que les concurrents. Pas de python, ruby non plus. Les quelques articles ou ligne de code que j’ai pu lire/modifier ne m’ont pas fait trop accrocher.

Ayant programmer sur Java pendant plus d’une dizaine d’années, le choix est à priori facile. De plus les offres de Google et d’Amazon ont semble t il choisi Java comme solution principale. Good.

Maintenant l’application a pour plateforme cible les smart phones et là ca se complique un peu. On pourrait penser qu’en 2010 le problème de la portabilité ne se poserait plus mais il n’en est rien. iOS (iPhone / Apple), Android (Google), Windows Phone 7 (Microsoft) chacun a développé sa propre solution et difficile de trouver une solution commune à part en développant une pure application web. La solution de webOS (Palm/HP) semble la plus ouverte puisque les applications se développent en HTML/javascript.

Bref c’est pas la joie. Je pensais que Java avait résolu ce problème il y a 10 ans… :( Seul Android a adopté cette plateforme. On a donc de l’objective C pour Apple. Ouch. De toute facon j’ai l’impression qu’il faut obligatoirement un mac pour pouvoir faire tourner le kit de développement iOS. Un moment d’espoir avec Mono Touch et Mono Droid qui auraient permis de développer en C# sur iphone, Android et bien sur WP7. Mais rebelote Mono Touch requiert un Mac et Mono Droid ne semble pas encore super mature. Point important, c’est payant! Bon solution suivante… Cela reste tout de même des solutions intéressantes pour ceux qui ont investi sur .net…

On cherche mais pas trop de solution à part la bonne vieille web app. On va partir la dessus dans un premier temps. Android propose un dev kit qui permet d’émuler un terminal, la part de marché importante de cette plateforme et le fait que l’on développe en java me permettraient de faire quelque chose rapidement.

J’ai acheté un WP7 il y a moins d’un mois. Je suis très très enthousiaste pour cette plateforme. C’est d’ailleurs cette première expérience avec ce mobile qui m’a poussé à me lancer dans l’aventure de ce projet. Je me mettrais à développer une application dédiée à cette plateforme rapidement.

iPhone a une part de marché énorme mais le cout d entrée est trop élevé pour moi. On verra quand on aura un peu de trésorerie si on peut faire quelque chose…

Bon je pense avoir fait le tour des grands choix techniques: hébergement in the cloud en java, web app pour le prototype mais on développe rapidement une application dédiée (Android ou wp7) pour une meilleure expérience.

La liste des fonctionnalités de la V1 est déjà faite. A présent je vais faire une rapide étude du choix des framework pour le développement du coté serveur.