serverless

Une fausse idée courante que les gens ont après avoir entendu le mot "serverless" est qu'il s'agit d’une informatique sans serveur. Eh bien, ce n'est pas du tout le cas. Dans cet article, nous allons examiner de près ce que signifie le serverless, ses principales caractéristiques, ses avantages et inconvénients afin de vous permettre de mieux comprendre cette approche de serverless computing dans le Cloud.

Sommaire

    Le serverless, qu'est-ce que c'est ?

    L'histoire du serverless

    Initié par AWS en 2014 avec son service Lambda, le serverless est un modèle de Cloud computing.

    AWS Lambda

    La technologie serverless est un véritable accélérateur de mise sur le marché. Contrairement à ce que son nom laisse entendre, le terme “Serverless Computing” ne désigne pas une informatique qui n’aurait plus besoin de serveurs pour s’exécuter mais davantage une approche IT dans laquelle la partie matérielle est totalement abstraite. Avec le serverless, le Cloud provider s’occupe de tout et le client a seulement à s’occuper du code !

    Le serverless computing est un modèle de conception cloud natif, basé sur une architecture ne nécessitant pas de gestion de serveurs pour créer et exécuter des applications. Dans la lignée des services Cloud visant à faciliter le recours à des services innovants en limitant les investissements de capital, le serverless est un vrai choix stratégique, avec des enjeux liés à la stratégie fournisseur et au service rendu aux utilisateurs.

    Après Amazon Web Services (AWS) en 2014, Microsoft lui a emboîté le pas avec Azure Functions en 2016. Google, pour sa part, s’est lancé dans le serverless en août 2018 avec Google Cloud Functions

    serverless

    Son fonctionnement

    La facturation ne se fait que sur la quantité de ressources utilisées pour exécuter le code et le temps d’utilisation des ressources. Le code est généralement exécuté dans des conteneurs sans état pouvant être déclenchés par divers événements, notamment des requêtes http, des événements de base de données, des services de file d’attente, des alertes de surveillance, des téléchargements de fichiers, des événements planifiés (tâches cron), etc.

    Eh oui, lorsqu'une fonction serverless n'est pas utilisée, le client n’est pas facturé, ce qui est un avantage pour les sites avec peu de trafic !

    Comme vous l’aurez compris, le serverless élimine certains tracas habituels de maintenance de l'infrastructure informatique sous-jacente, pour au contraire créer de nouvelles applications et ajouter de la valeur en construisant facilement de nouveaux services à partir de zéro. Le développeur n’a plus qu’à fournir son code, sous forme de fonctions, au provider de service serverless ou FAAS (pour Function As A Service).

    Zoom sur le FaaS

    Le FaaS est un modèle d'exécution orienté événements. Les développeurs écrivent du code qui est déployé dans des conteneurs entièrement gérés par le cloud provider, et qui sera ensuite exécutée à la demande.

    Contrairement au BaaS, le modèle FaaS offre un plus grand degré de contrôle aux développeurs qui peuvent créer des applications personnalisées plutôt que d'avoir recours à une bibliothèque de services pré rédigés.

    Quels sont les avantages et les inconvénients du serverless ?

    Avantages

    • L'informatique serverless permet d'améliorer la productivité des développeurs car ils ne se chargent plus des tâches courantes d'approvisionnement et de gestion des serveurs, les développeurs ont plus de temps à consacrer à leurs applications.
    • Étant donné que le client n'a qu'à s'occuper du code, c'est le cloud provider qui est responsable du bon fonctionnement des fonctions serverless, quelle que soit la charge de trafic traitée par l'infrastructure. Avec une approche classique, le client doit déployer plus de serveurs si son trafic augmente : c’est le principe de l'autoscaling. De plus les infrastructures serverless réagissent particulièrement bien aux pics de charge comparées aux approches classique.
    • L'informatique serverless encourage l'adoption des pratiques DevOps. Avec les serverless c'est les développeurs qui déploient une grande partie de l'infrastructure, ils doivent donc avoir un niveau de compréhension plus élevé de l'infrastructure et vont donc plus collaborer avec les Ops.
    • Le serverless permet au client de réduire son impact énergétique puisque l’hébergeur utilise les ressources des serveurs non utilisées pour d’autres applications. L’utilisation optimisée des serveurs réduit non seulement le nombre de serveurs mais aussi la consommation d’énergie. Le serverless permet au client d’adopter une green attitude, démarche louable lorsqu’on sait que des milliers de datacenters répartis dans le monde consomment 18% de la production mondiale électrique.

    Inconviénients

    Le serverless apporte certes de nombreux avantages pour les développeurs, mais cela ne va pas sans compromis.

    • Le serverless est très “vendor locking”. En effet, si vous décidez de migrer votre infrastructure en serverless sur AWS, cela risque d’être compliqué par la suite, de changer de Cloud provider. Une fois que votre architecture est en serverless, vous devez continuer avec le cloud provider avec qui vous avez commencé. C'est d'ailleurs une des raisons pour lesquelles les cloud providers poussent autant le serverless !
    • Il s'avère parfois compliqué d'estimer les coûts de votre infrastructure à l’avance et le serverless peut engendrer beaucoup de coûts cachés (par exemple sur AWS le stockage des logs coûte plus cher que les fonctions).
    • L’introduction du serverless dans les politiques de sécurité vient ajouter encore plus d’hétérogénéité et donc de complexité. Le serverless tend à augmenter la surface d’attaque en multipliant les points d’accès et les technologies. La sécurité de vos ressources serverless ne doit pas être négligée et réclame une attention particulière même si les plateformes et les infrastructures sont, elles, bien protégées et défendues par l’opérateur cloud.
    • Les plateformes serverless sont pensées de façon optimale pour la montée en charge. La conséquence directe de cette conception, c’est que si une base de données ou une fonction (dans le cas du Function as a Service) n’est que très rarement appelée, elle affrontera un temps de démarrage plus long surtout comparé à des ressources équivalentes exécutées sur un serveur dédié. L’infrastructure serverless cherche, en effet, à optimiser l’usage de ses ressources sous-jacentes et donc libère tout ce qui n’est pas fréquemment utilisé entraînant un temps de réveil plus long (puisqu’il faut remplir les caches et recharger les frameworks d’exécution).

    Le serverless : l'avenir du Cloud computing ?

    Il existe une corrélation entre l'adoption du serverless et la taille de l’infrastructure de l’entreprise. Actuellement, cette technologie est principalement utilisée dans les grands environnements. Par exemple, 75% des entreprises ayant adopté le service Lambda d’AWS comptent parmi les plus grandes infrastructures AWS. Pour les petites entreprises, cette adoption a du sens pour des cas d'utilisation n’étant pas liés à leur cœur de métier et pouvant être confiés à un fournisseur de services cloud, tels que faire passer à l'échelle une base de données ou un site web de façon automatique.

    Les services informatiques passent en effet moins de temps à se concentrer sur les détails et la mécanique de la technologie ; ils se concentrent plus sur les bénéfices à en tirer. Résultat, la plupart des fournisseurs de cloud ont investi massivement dans cette solution : AWS Lambda, Google Cloud Functions, Azure Functions et bien d’autres encore.

    Si les solutions Cloud ont fini par convaincre la très large majorité des entreprises, force est de constater que certains DSI continuent de voir plus loin, persuadés qu’il est probablement possible de louer de la puissance serveur en faisant face à moins de contraintes.

    Le serverless ne marque pas la fin des serveurs. Il s’agit au contraire d’une ressource de plus pour les architectes afin d’optimiser la plateforme et répondre aux enjeux de l’usage à adresser, ce qui est une possibilité offerte aux développeurs de gagner du temps dans la conception d’une application pour un usage ponctuel. Autant dire que le serverless a des beaux jours devant lui…