Sans serveur
Le modèle de calcul sans serveur est le service en nuage entièrement géré où le fournisseur gère l'infrastructure sous-jacente et alloue et désalloue automatiquement des ressources pour l'exécution et l'évolutivité en fonction de la demande immédiate de l'application. Cela signifie que les développeurs n'ont pas à se soucier de la façon dont l'infrastructure de calcul sous-jacente est provisionnée. Au lieu de cela, ils peuvent se concentrer sur la mise en œuvre des fonctionnalités de l'application. En bref, les développeurs doivent se concentrer sur l'écriture de code pour leur logique applicative, 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 de calcul sans serveur est facturé en fonction de l'utilisation et en conséquence, ce qui en fait un choix plus rentable lorsque des modifications inattendues du chargement de l'application se produisent souvent.
L'informatique sans serveur est un développement récent de l'informatique en nuage, qui a gagné en popularité ces dernières années. Il est populaire pour le concept sous-jacent d'exécuter du code sans gérer ni provisionner les serveurs. Les fonctions d'Oracle Cloud Infrastructure (OCI) pour la mise en oeuvre de plates-formes sans serveur sont basées sur le projet Fn Project à code source libre, qui est à code source libre, natif de conteneur et sans serveur, avec la possibilité de s'exécuter dans n'importe quel nuage et sur place.
Avantages sociaux
Serverless offre de multiples avantages par rapport aux autres services disponibles dans le nuage et présente un avantage en raison de :
- Frais généraux d'exploitation réduits : Le calcul sans serveur a supprimé les frais généraux de gestion de l'infrastructure, des serveurs et du réseau, et maintient les équipes de développement concentrées sur l'écriture de code et le développement de nouvelles fonctionnalités d'affaires.
- Délai de mise sur le marché plus rapide : L'informatique 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 offerts dans le nuage.
- Augmentation de l'évolutivité : L'informatique sans serveur s'adapte 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.
- Excellent rapport qualité-prix : Le calcul sans serveur est rentable, car vous n'avez à payer que pour le temps d'exécution du code d'application, ce qui vous permet de réaliser des économies par rapport aux modèles de calcul traditionnels.
- Fiabilité améliorée : Le calcul sans serveur dispose de mécanismes intégrés de redondance et de basculement, ce qui améliore la fiabilité des applications.
- Souplesse supérieure : L'informatique sans serveur prend en charge divers langages de programmation populaires pour offrir de la flexibilité aux développeurs. Il prend également en charge les 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-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. Suivez les étapes ci-dessous pour exécuter du code sur des mises en oeuvre sans serveur telles que des fonctions OCI.
- Écrivez votre code dans le langage de programmation préféré et regroupez-le dans une image de conteneur à partir de la fonction.
- Fournissez la définition de la fonction dans func.yaml, y compris le temps d'exécution maximal et la consommation de mémoire.
- Poussez l'image de conteneur vers le registre de conteneurs à partir duquel extraire avant l'exécution.
- Charger les métadonnées de fonction (restrictions de mémoire et de temps) sur le serveur Fn.
- Ajoutez la fonction à la liste des fonctions de la console.
- Déclencher à partir de la commande de l'interface de ligne de commande ou d'un déclencheur externe tel qu'une demande HTTP, un programme et un service d'événement
- Dans la fonction de déclenchement, identifiez l'image de conteneur et extrayez-la du registre de conteneurs.
- Exécutez la logique définie dans l'image de conteneur sur une instance dans un sous-réseau associé à l'application à laquelle appartient la fonction.
- Après l'exécution ou la période d'inactivité, l'image de conteneur est supprimée et les ressources sont libérées.
Plateformes
OCI prend en charge les fonctions sans serveur en tant que service, appelées fonctions OCI et instances de conteneur OCI.
- Fonctions : Le service Fonctions est une plate-forme de service sur demande, hautement évolutive, entièrement gérée et multilocataire basée sur une infrastructure d'entreprise et alimentée par le moteur à code source libre Fn Project. Avec des 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 de serveurs. Il fournit le même niveau d'isolement que les machines virtuelles.
Meilleures pratiques
Serverless est conçu pour répondre à des pics imprévisibles de la demande en ressources de charge de travail, mais il doit être conçu et mis en œuvre avec les meilleures pratiques recommandées pour tirer parti d'une utilisation efficace.
- Rapide et optimisé : Il doit être mis en oeuvre pour une exécution rapide, une utilisation efficace des ressources et éviter les dépendances inutiles.
- Conduit par l'événement : L'architecture sans serveur est la mieux adaptée à l'architecture axée sur l'é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'extensibilité.
- Mise en oeuvre avec des services gérés : L'intégration des fonctions 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 les services sans serveur.
- Surveillance : Surveillez la performance et le coût des solutions sans serveur afin de les optimiser pour des fonctionnalités lentes et coûteuses. Exploiter la mise en oeuvre de surveillance recommandée pour OCI.
- Sécurité : Les données au repos et en transit doivent être chiffrées avec un accès au contrôle pour réduire les risques et les attaques de sécurité.
Cas d'utilisation
Serverless a plusieurs cas d'utilisation pour les besoins fonctionnels et commerciaux individuels. Les cas d'utilisation courants sont les suivants :
- Tâches par lots : Processus déclenché selon une programmation et une fréquence prédéfinies.
- Application basée sur les événements : Processus lancé à partir d'un événement externe tel qu'un message ou une demande HTTP.
- Microservices : Mise en oeuvre de service indépendant mince.
- Modèle d'apprentissage automatique : Déployez des modèles sur des points d'extrémité d'API rentables et évolutifs.
Déplacement de votre charge de travail vers Serverless
Le passage d'une charge de travail existante à une solution sans serveur peut vous aider à réduire les coûts, à accroître la résilience et à améliorer l'extensibilité. Les informations suivantes décrivent les étapes du déplacement de votre charge de travail de l'environnement sur place vers l'environnement sans serveur.
- Identifiez la charge de travail que vous souhaitez passer au mode sans serveur et identifiez la taille, la complexité et les dépendances.
- Évaluez la plate-forme sans serveur si une fonction est la plus appropriée ou si une instance de conteneur est plus appropriée.
- Déterminez les dépendances de service externe telles que la base de données, le stockage et la messagerie pour la charge de travail.
- Refactoriser le code d'application afin de l'optimiser pour la performance et le conteneuriser, si nécessaire.
- Testez l'application pour connaître les fonctionnalités attendues dans l'environnement sans serveur. Utilisez l'environnement de test recommandé ou similaire.
- Déployez l'application sur la plate-forme sans serveur pour exécution.
- Surveiller les mesures de rendement des applications et l'utilisation des ressources.
- Optimisez l'application, si nécessaire, pour améliorer la performance à l'avenir en fonction des mesures saisies lors de la surveillance.
- Automatisez tout ce qui est possible à l'aide du pipeline DevOps pour la création et le déploiement.
Défis et limites
Serverless présente des avantages, mais tenez compte des éléments suivants pour le déploiement de la charge de travail.
- 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 commencer le traitement. Même s'ils nécessitent un temps de démarrage considérablement négligeable, envisagez les exigences de latence ultra faible.
- Temporisation de l'exécution : Serverless est conçu pour effectuer des fonctionnalités rapides et libérer des ressources. Par conséquent, il existe une temporisation associée pour que les serveurs sans serveur puissent gérer des scénarios imprévus de verrouillage inactif ou de boucles et de terminaisons infinies. Ces scénarios peuvent entraîner des pertes 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 s'exécute. Il doit donc compter sur des services de gestion d'état ou de stockage externes pour que les informations persistent.
- Complexité : L'architecture traditionnelle avec des flux de travail et des dépendances complexes peut augmenter la complexité du traitement avec les fonctions sans serveur pour le débogage et le dépannage des problèmes.
L'avenir de Serverless
L'avenir du sans serveur implique d'éliminer la nécessité de gérer des infrastructures complexes et d'adapter manuellement les défis. Cela implique également de gérer des augmentations inattendues de la charge d'application tout en ne payant que pour l'utilisation. Plusieurs cadres et solutions sont en cours de développement et évoluent sans serveur afin de réduire 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 cadres et de plates-formes installables sans serveur.