Sans serveur

Le modèle informatique sans serveur est le service cloud entièrement géré où le fournisseur de cloud gère l'infrastructure sous-jacente et alloue et désalloue automatiquement des ressources pour les exécuter et les adapter à la demande immédiate de l'application. Cela signifie que les développeurs n'ont pas à se soucier du provisionnement de l'infrastructure de calcul sous-jacente. Au lieu de cela, ils peuvent se concentrer sur l'implémentation des fonctionnalités métier dans l'application. En bref, les développeurs doivent se concentrer sur l'écriture de code pour leur logique d'application, qui sera déployée sur des fonctions et exécutée sur des événements déclenchés par l'application ou l'utilisateur. Le modèle informatique sans serveur est facturé en fonction de l'utilisation et facturé en conséquence, ce qui en fait un choix plus rentable lorsque des changements inattendus dans la charge de l'application se produisent souvent.

L'informatique sans serveur est un développement récent dans le cloud computing, qui a gagné en popularité ces dernières années. Il est populaire pour le concept sous-jacent d'exécution de code sans gestion ni provisionnement de serveurs. Les fonctions Oracle Cloud Infrastructure (OCI) pour l'implémentation de plates-formes sans serveur sont basées sur le projet open source Fn, qui est open source, natif de conteneur et sans serveur, avec la possibilité de s'exécuter dans n'importe quel cloud et sur site.

Avantages

Le sans serveur offre de nombreux avantages par rapport aux autres services disponibles dans le cloud et présente un avantage en raison des facteurs suivants :

  • Temps système opérationnel réduit : le calcul sans serveur a éliminé la surcharge liée à la gestion de l'infrastructure, des serveurs et de la mise en réseau, et permet aux équipes de développement de se concentrer sur l'écriture de code et le développement de nouvelles fonctionnalités métier.
  • Délai de mise sur le marché plus rapide : le calcul sans serveur accélère la mise sur le marché car les applications peuvent être déployées plus rapidement que les autres services de calcul proposés dans le cloud.
  • Évolutivité accrue : le calcul sans serveur évolue automatiquement en fonction des demandes de charge de travail pour l'augmentation et la réduction. Tout pic de charge prend soin de lui-même.
  • Rentabilité : le calcul sans serveur est rentable car vous n'avez à payer que le temps d'exécution du code d'application, ce qui permet de réaliser des économies par rapport aux modèles de calcul traditionnels.
  • Fiabilité améliorée : l'informatique sans serveur dispose de mécanismes de redondance et de basculement intégrés, ce qui améliore la fiabilité des applications.
  • Flexibilité accrue : l'informatique sans serveur prend en charge divers langages de programmation populaires pour offrir une flexibilité aux développeurs. Il prend également en charge des modèles de déploiement tels que les conteneurs et l'écriture de code déployés sur l'informatique sans serveur.

fonctionnement

L'informatique sans serveur, souvent appelée fonction de service, permet aux développeurs de se concentrer sur l'écriture de code et le déploiement de code sans se soucier de l'infrastructure sous-jacente requise pour exécuter le code d'application. Procédez comme suit pour exécuter du code sur des implémentations sans serveur telles que des fonctions OCI.

  1. Ecrivez votre code dans le langage de programmation de votre choix et packagez-le dans une image de conteneur à partir de la fonction.
  2. Fournissez la définition de fonction dans func.yaml, y compris la durée d'exécution maximale et la consommation de mémoire.
  3. Poussez l'image de conteneur vers le registre de conteneurs à extraire avant l'exécution.
  4. Téléchargez les métadonnées de la fonction (restrictions de mémoire et de temps) vers le serveur Fn.
  5. Ajoutez la fonction à la liste des fonctions dans la console.
  6. Déclencheur à partir de la commande CLI ou déclencheur externe tel qu'une demande HTTP, une planification et un service d'événement
  7. Dans la fonction de déclenchement, identifiez l'image du conteneur et extrayez-la du registre de conteneurs.
  8. Exécutez la logique définie dans l'image de conteneur sur une instance d'un sous-réseau associé à l'application à laquelle appartient la fonction.
  9. Après l'exécution ou la période d'inactivité, l'image de conteneur est enlevée et les ressources libérées.

Plates-formes

OCI prend en charge le sans serveur en tant que service, appelé OCI Functions et OCI Container Instances.

  • Fonctions : Functions est une plate-forme de service fonctionnant en tant que service, entièrement gérée, colocative, hautement évolutive et à la demande, conçue sur une infrastructure de niveau entreprise et optimisée par le moteur open source du projet Fn. Avec les fonctions, vous pouvez écrire du code en Java, Python, Node, Go, Ruby et C#.
  • Container Instances : Container Instances est un service de calcul sans serveur qui vous permet d'exécuter rapidement et facilement des conteneurs sans gérer aucun serveur. Il fournit le même niveau d'isolement que les machines virtuelles.

Meilleures pratiques

Serverless est conçu pour répondre aux pics imprévisibles de la demande de ressources de charge globale, mais il doit être conçu et implémenté avec les meilleures pratiques recommandées pour tirer parti d'une utilisation efficace.

  • Rapide et optimisé : il doit être implémenté pour une exécution rapide, utiliser les ressources efficacement et éviter les dépendances inutiles.
  • Orienté événement : le sans serveur est le mieux adapté à l'architecture orientée événement pour lancer le traitement à partir du déclencheur de l'événement afin de réduire les coûts et d'améliorer l'évolutivité.
  • Implémentation avec des services gérés : l'intégration sans serveur avec des services gérés réduit la complexité et les besoins d'évolutivité. Les services gérés tels que la base de données, le stockage et la messagerie interagissent généralement avec des services sans serveur.
  • Surveillance : surveillez les performances et les coûts pour le sans serveur afin d'optimiser les fonctionnalités lentes et coûteuses. Tirez parti de l'implémentation de surveillance recommandée par OCI.
  • Sécurité : les données inactives et en transit doivent être cryptées avec un accès permettant de contrôler les attaques afin de minimiser les risques de sécurité.

Cas d'emploi

Serverless a plusieurs cas d'utilisation pour des besoins professionnels et fonctionnels individuels. Les cas d'utilisation courants sont les suivants :

  • Traitements batch : processus déclenché selon une planification et une fréquence prédéfinies.
  • Application orientée événement : processus lancé à partir d'un événement externe, tel qu'un message ou une demande HTTP.
  • Microservices : implémentation de services minces et indépendants.
  • Modèle de machine learning : Déployez des modèles sur des adresses d'API rentables et évolutives.

Déplacement de la charge globale vers Serverless

Le passage de votre charge de travail existante au sans serveur peut vous aider à réduire les coûts, à augmenter la résilience et à améliorer l'évolutivité. Les informations suivantes décrivent les étapes permettant de déplacer votre charge de travail d'un environnement sur site vers un environnement sans serveur.

  1. Identifiez la charge de travail que vous souhaitez transférer vers le sans serveur et identifiez la taille, la complexité et les dépendances.
  2. Evaluez la plate-forme sans serveur si une fonction convient le mieux ou si une instance de conteneur est plus appropriée.
  3. Déterminez les dépendances de service externe, telles que la base de données, le stockage et la messagerie pour la charge globale.
  4. Refactorisez le code de l'application pour optimiser les performances et le conteneuriser, si nécessaire.
  5. Testez les fonctionnalités attendues de l'application dans l'environnement sans serveur. Utilisez l'environnement de test recommandé ou similaire.
  6. Déployez l'application sur la plate-forme sans serveur en vue de son exécution.
  7. Surveiller les mesures de performances des applications et l'utilisation des ressources.
  8. Optimisez l'application, si nécessaire, pour améliorer les performances à l'avenir en fonction des mesures capturées à partir de la surveillance.
  9. Automatisez tout ce qui est possible à l'aide du pipeline DevOps pour la création et le déploiement.

Défis et limites

Le sans serveur présente des avantages, mais tenez compte des éléments suivants pour le déploiement de la charge globale.

  • Démarrage à froid : les serveurs sans serveur sont conçus pour se déclencher en fonction de l'événement, de sorte qu'ils ne sont pas facilement disponibles pour démarrer le traitement. Même s'ils nécessitent un temps de démarrage considérablement négligeable, tenez compte des exigences de latence très faible.
  • Délai d'expiration de l'exécution : Serverless est conçu pour permettre une fonctionnalité et une libération rapides des ressources. Par conséquent, il existe un délai d'attente associé pour que le serveur sans serveur gère les scénarios imprévus de verrouillage inopiné ou de boucles et d'interruptions infinies. Ces scénarios peuvent entraîner une perte de données et des scénarios d'état instables.
  • Accès limité à l'infrastructure : le calcul sans serveur dispose d'un accès minimal à l'infrastructure sur laquelle il est exécuté. Il doit donc s'appuyer sur des services de stockage ou de gestion d'état externes pour que les informations soient conservées.
  • Complexité : l'architecture traditionnelle avec des flux de travail et des dépendances complexes peut augmenter la complexité de la gestion avec la technologie sans serveur pour le débogage et le dépannage des problèmes.

L'avenir du sans serveur

L'avenir du sans serveur consiste à éliminer la nécessité de gérer des infrastructures complexes et de faire évoluer manuellement les défis. Il s'agit également de gérer les surtensions inattendues de la charge des applications tout en payant uniquement pour l'utilisation. Plusieurs structures et solutions sont en cours de développement et d'évolution sur serveur pour minimiser les efforts des développeurs pour gérer les scénarios d'entreprise prêts à l'emploi. Passez en revue le paysage de la CNCF pour plus d'outils, de frameworks et de plateformes installables sur sans serveur.