Le Cloud n’est pas la martingale

Je vois de plus en plus de devs et autre afficionados technolo-geek commencer à ne jurer que par le cloud, alors à défaut de présenter une vision partiale et totalitairement contre, ce que je ne suis pas, j'aimerais bien tempéré un peu ces ardeurs.

En même temps... Fais pas bon critiquez le cloud ces temps-ci, récemment c'est David Cramer (créateur de Sentry et dev chez Disqus - la plus grosse application Django du monde) qui s'était exercer avec un article que je vous conseille comme annexe “The Cloud is not for you“. C'est mal parce qu'enfin avec le cloud (et le NoSQL), on nous vend du rêve !


Pour résumé, si vous ne le saviez pas déjà, avec le cloud vous allez :
- pouvoir “scaler” jusqu'à l'infini votre application pour gérer des milliards de requêtes par secondes;
- pouvoir enfin “vous abstraire” des machines, des base de données (ORM Mon Amour), et de toutes ces choses “sales”;
- et avec des services comme Amazon vous allez atteindre la haute disponibilité à 99.99999999999999% le tout en ayant “que” à mettre la main au portefeuille;

J'en passe et des meilleurs... Je vais mettre un peu mon grain de sel (ça donne toujours du gout ! et j'espère que ça sera utile pour certains !) parce qu'en tant que dev et ops d'APPARTINFO, la startup que nous construisons depuis bientôt 2 ans, j'ai un petit parti pris dans cette histoire.

En tant que développeur, et en tant que personne cherchant à faire notre travail, je considère que nous ne sommes pas là que pour développer, nous construisons un produit, une expérience utilisateur, une utilisation des resources mises à notre dispositions, nous rendons un service et construisons un outil.

Ce que nous vend le cloud, et qu'à très bien illustrer Nicolas Martignole dans “Le Cloud pour le développeur“, c'est pour moi un rêve pourri, une contre-utopie où le développeur pourra enfin rester totalement dans sa cave, à faire couche d'abstraction sur couche d'abstraction pour enfin ne plus avoir de lien avec ni la machine, ni le métier. Youhou !

Voilà quelques vérités que je trouve importante, et sur lesquelles je rejoint David Cramer :

- Le Cloud (version Amazon, Heroku etc.) donne juste l'illusion de pouvoir scaler une application en un rien de temps. Le Cloud permet, c'est vrai, de dépenser de l'argent en rajoutant des machines, mais au fond dans l'optique de scaler une application, on a rarement besoin de pouvoir rajouter 50 machines dans une demi heure !

Clairement il faut distinguer les utilisations, amazon trouve sa place dans les besoins de puissances de calculs instantanées, mais à moins d'être le New York Times et d'avoir besoin de générer en 5 minutes 10 Milliards de PDF, ce n'est pas ce qui va gérer vos problèmes de charges en tout cas pas les miens, ni ceux de Disqus.

- C'est la chose la plus stupide au monde que de vouloir s'abstraire à un niveau supérieur des machines sur lesquelles toute application repose. Java n'est pas vraiment “Compile Once, Run Everywhere” et C/C++ est encore le langage le plus utilisé quand on cherche la performance. Sans compter que tous nos composants critiques, Base de données, Caches, Queue Managers, Reverse Proxy, Serveurs d'applications et surtout le système d'exploitation, tous s'appuient sur des particularité, des routines et des algorithmes au plus proche de la machine. Même l'utilisation des B-Tree pour les systèmes de fichiers et bases de données est privilégié en partie à cause de l'utilisation de disques dur à cylindres...

Tout ça pour dire qu'encore une fois, on vend aux développeurs et aux décideurs ce qu'ils adorent, une couche d'abstraction supplémentaire permettant de se dire qu'enfin on va pouvoir se passer d'admin sys (c vrai que c encore des gens avec qui il faut discuter 🙁 ... ), on va aussi pouvoir se passer de comprendre les protocoles HTTP/TCP/WSGI/... ou de comprendre que quand la RAM est pleine, une application swap et que quand la swap est pleine... ben tout crash...

Sous le pretexte de la “Separation of Concerns” on dit au développeur, “toi tu dev et le reste c'est pas tes affaires”. Seulement un développeur qui ne s'occupe pas de sa mise en production, des performances et de l'impact de ses process sur les machines, de la sécurité de celles-ci, pour moi, il fait mal son travail.

Est ce que ceux qui défendent le Cloud coûte que coûte ont aussi bien compris qu'alors, on ouvrait tout les process critiques, les bases de données, les caches etc... sur Internet ?

On va bien s'amuser quand une série de failles sera utilisées sur les bases de données “enfin accessibles”. Je vois même pas pourquoi je parle au future, je suis sûr que linked voit de quoi je parle.

Voilà c'était mon petit grain de sel,

Vale