Google Compute Engine

Au delà de notre savoir faire sur la Data, chez Affini-Tech nous conservons une fibre forte sur l'infrastructure. Cette compétence est nécessaire puisqu'au quotidien nous mettons en place des infrastructures et du Cloud pour satisfaire les besoins de nos clients. Nous avons récemment eu l'opportunité de travailler sur un projet qui utilise le Cloud de Google, et notamment "Google Compute Engine" qui est la déclinaison IaaS de la firme de Mountain View.

De prime abord il s'agit d'un IaaS comme tous les autres, très proche des Amazon ou Azure avec lesquels nous avons l'habitude de travailler. On retrouve les grandes abstractions classiques de réseau, disques, VMs, mais l'essentiel n'est pas là, la différence se situe dans ce qu'il y a autour. GCE est réellement un IaaS conçu par des développeurs, et ça se traduit à deux niveaux que sont la richesse du framework pour construire des applications, et l'orientation très DevOps de l'outillage pour faire tourner l'infrastructure.

GCE est le prolongement des outils cloud que Google à mis à notre disposition depuis des années et s'intègre très finement dans le paysage global du Cloud  de Google. L'IaaS peut directement avoir accès à GG Storage, à AppEngine, au Cloud Datastore, etc... Pour ces raisons il devient très simple de construire des workloads hybrides combinant IaaS et PaaS, voir même SaaS avec le lien qui peut être établi avec Storage et Google Apps.

Sur un second plan l'expression "Infrastructure as a Code" prends toute son ampleur. L'interface web qui par certains cotés est très spartiate n'est qu'un habillage aux lignes de commandes et API. Pas de fioritures à attendre ici, c'est simple et efficace, et tout est fait pour vous orienter vers l'utilisation scriptée de la plateforme. Dans chaque écran de lancement d'une opération (création d'une VM, d'un réseau, Arrêt d'une VM, Ajout d'un disque, etc...), vous avez accès à un lien vous proposant l'équivalent en REST ou en ssh. Il n'y a plus qu'a copier-coller et vous avez un script de mise en oeuvre de votre infrastructure qui est prêt. Un utilitaire "gcutil" permet d'exécuter les commandes depuis une machine distante et associe votre compte local avec le compte Google utilisé pour manager la plateforme. Lors de la première création d'une VM l'absence de fonction "Arrêter" est assez surprenante quand on vient d'autres IaaS. Ici on détruit la VM et sa configuration, en gardant éventuellement le disque persistant, et on la re-créera ex-nihilo lors du prochain redémarrage.  Un serveur de métadonnées très complet est mis à disposition, et permet par exemple de stocker des paramètres globaux de configuration facilement accessible depuis les différents noeuds. Pour conclure sur cette logique "DevOps" Les startup-scripts associés aux configurations permettent d'envisager de ré-installer complètement un serveur au démarrage et ainsi ne plus avoir de disques persistants pour limiter les couts.

Nous commençons à avoir les premiers retours d'expérience de cette plateforme, avec des workloads déployées. Nos premiers tests démontrent que les performances sont beaucoup plus élevées tant en CPU brute qu'en I/O par rapport à la concurrence. On est par exemple à près de 3 fois plus de performance sur des I/O par rapport à la référence du marché. L'une des faiblesses que Google promet de corriger à moyen terme est la couverture d'OS.  En effet on ne trouve que CentOS ou Debian comme image disques de base, ce qui limite nécessairement l'envergure des projets qui vont être adressables.

Nous reviendrons avec des exemples concrets d'utilisation dans de prochains blogs, avec notamment des focus sur l'automatisation des opérations, et les grands différentiateurs de GCE.