Introduction
Le calcul dans le cloud, ou calcul en nuage, fait référence à l'utilisation de ressources informatiques à la demande via Internet. Il s'agit de l'accès à des ressources de calcul telles que des processeurs et de la mémoire vive, hébergées dans des centres de données à distance, pour exécuter des tâches informatiques.
Le calcul en nuage offre une grande flexibilité en permettant aux utilisateurs de provisionner rapidement des ressources informatiques et de les libérer quand elles ne sont plus nécessaires, ce qui permet une utilisation plus efficace des ressources informatiques. Les utilisateurs peuvent accéder aux ressources de calcul via des services de cloud computing tels que Amazon Web Services (AWS), Microsoft Azure, Google Cloud, etc.
Les ressources de calcul dans le cloud sont utilisées pour exécuter des applications logicielles et des systèmes exécutant des processus et des algorithmes, y compris des tâches telles que l'analyse de données, la formation de modèles d'apprentissage automatique, la simulation de scénarios complexes, etc. Les utilisateurs peuvent choisir la taille des ressources de calcul en fonction de leurs besoins spécifiques, et payer uniquement pour ce qu'ils utilisent, ce qui réduit les coûts et permet une plus grande agilité dans le développement de logiciels et l'innovation.
Processeurs
AWS propose une grande variété de types d'instances de calcul pour répondre aux besoins spécifiques de chaque charge de travail. Les types d'instances sont catégorisés en fonction de leurs capacités de calcul, notamment en termes de processeurs, de mémoire et de stockage.
Les types d'instances équilibrées sont adaptés pour les applications générales, les petites applications et les petites bases de données, et comprennent les instances A1, T3, T3a, T2, M6g, M5, M5a, M5n et M4.
Les types d'instances optimisés sont conçus pour les charges de travail nécessitant des performances élevées en termes de calcul, tels que les calculs de haute performance, l'encodage vidéo, etc. Ils comprennent les instances C5, C5n et C4.
Les types d'instances à mémoire optimisée sont adaptés pour les charges de travail nécessitant une grande quantité de mémoire vive, tels que les bases de données à haute performance, les applications de traitement en temps réel, etc. Ils comprennent les instances R5, R5a, R5n, R4, X1e, X1, High Memory et z1d.
Les types d'instances de stockage sont adaptés pour les charges de travail nécessitant une grande capacité de stockage, tels que les bases de données NoSQL, les applications de traitement de données volumineuses, etc. Ils comprennent les instances I3, I3n, D2 et H1.
Enfin, les types d'instances accélérées sont adaptés pour les charges de travail nécessitant une puissance de traitement graphique (GPU) élevée, tels que le traitement de données graphiques, les simulations, l'apprentissage automatique, etc. Ils comprennent les instances P3, P2, lnf1, G4, G3 et F1.
Composition
Les services AWS de calcul en nuage permettent de créer des instances virtuelles (VM) en utilisant le modèle d'infrastructure en tant que service (IaaS). Les instances sont créées à partir d'images système appelées Amazon Machine Images, qui peuvent être configurées avec des données utilisateur pour lancer des ordres préparamétrés. Il est possible de choisir un modèle partagé ou un modèle dédié pour l'emplacement des instances. Les instances disposent d'un stockage interne et peuvent être configurées pour utiliser du stockage externe. Les groupes de sécurité, qui agissent comme des pare-feux, et le monitoring sont également des fonctionnalités disponibles pour les instances.
Il existe plusieurs options de tarification pour les instances. Les utilisateurs peuvent opter pour une facturation à la demande, qui permet de ne payer que pour les ressources consommées. Cette option est recommandée pour les charges de travail irrégulières ou imprévisibles, pour les applications développées ou testées sur Amazon EC2 pour la première fois, pour la réalisation de preuves de concept, ou pour les utilisateurs qui souhaitent profiter des avantages du coût avantageux et de la flexibilité du cloud.
Instances réservées
Les instances réservées sont une autre option de tarification qui permet aux utilisateurs de réserver des instances pour une période de temps donnée (2-3 ans), ce qui rend la ressource plus attractive en termes de coût. Cette option est recommandée pour les utilisateurs ayant des contraintes de licences logicielles, de sécurité des données ou de conformité, ou pour ceux qui souhaitent réduire les coûts en utilisant leurs propres licences (-70%).
Instances dédiées
Les instances dédiées sont une option pour les utilisateurs qui ont des besoins spécifiques en matière de conformité et de sécurité, car les autres clients ne peuvent pas accéder à leur ressource. Cette option est recommandée pour les applications ayant des heures de début et de fin d'exécution flexibles, pour les applications réalisables uniquement à des prix de calcul extrêmement bas, ou pour les besoins de calculs urgents pour de grandes quantités de calcul ponctuelles.
Instances Spot
Les instances Spot sont une option de tarification pour des cas d'utilisation particuliers, tels que le traitement par lots. Les utilisateurs enchérissent sur des ressources non utilisées chez AWS pour des jobs de courtes instants, ce qui permet de payer moins cher une ressource juste pour sa courte utilisation. Cette option est recommandée pour les applications dont les heures de début et de fin d'exécution sont flexibles, les applications réalisables uniquement à des prix de calcul extrêmement bas, ou pour les besoins de calculs urgents pour de grandes quantités de calcul ponctuelles.
Serveurs dédiés
Les serveurs dédiés sont une option pour les utilisateurs qui souhaitent disposer d'un serveur entièrement alloué de manière physique. Cette option est recommandée pour les utilisateurs ayant des contraintes de licences logicielles, de sécurité des données ou de conformité, ou pour ceux qui souhaitent réduire les coûts en utilisant leurs propres licences (-70%). Les serveurs dédiés offrent également un accès aux contrôles matériels avancés.
Connexion
La connexion à une instance EC2 se fait via plusieurs protocoles tels que SSH, RDP pour les machines Windows ou encore Session Manager qui doit simplement être configuré. Pour assurer la sécurité de la connexion, des ACL et des règles de port et de protocoles peuvent être configurées.
Les méthodes d'occupations
Il existe trois grandes catégories d'instances lorsqu'on réserve une instance sur EC2 : équilibré, optimisé et mémoire optimisée. Il est possible d'installer l'OS de son choix grâce à BYOL.
AMI
L'Amazon Machine Image (AMI) permet de déployer des images vers des instances EC2, et il est possible de configurer l'image via un script bootstrap. Le choix du type de mémoire et de stockage est également important. Le stockage interne est éphémère et fournit de bonnes performances, mais les données sont perdues en cas de redémarrage de l'instance. Le stockage persistant, tel que EBS, est indépendant de l'instance et peut être sauvegardé et chiffré.
Monitoring
Le monitoring et la configuration du groupe de sécurité sont également importants pour assurer la sécurité et la disponibilité de l'instance EC2. Les groupes de sécurité permettent d'ouvrir des ports et de spécifier le type d'accès souhaité. Il est également important de vérifier régulièrement les statuts de l'instance pour déterminer tout problème éventuel, qu'il s'agisse d'un problème logiciel, d'un problème matériel ou d'un problème de connectivité.
En outre, les status des instances sont également surveillés par le système de monitoring. Les problèmes détectés peuvent être dus à une configuration incorrecte de la mise en réseau ou du démarrage, à des échecs de vérification de l'état du système, à des systèmes de fichiers corrompus, à un noyau incompatible, ou encore à une mémoire saturée.
Il est donc important de surveiller régulièrement l'état de vos instances et de mettre en place des mesures correctives en cas de problème détecté pour assurer une haute disponibilité et une continuité de service pour vos utilisateurs.
Virtual Private Cloud (VPC)
Un Virtual Private Cloud (VPC) est un réseau isolé et privé au sein d'AWS qui offre une haute disponibilité et une continuité de service pour répondre aux pannes et à la saturation du réseau. Les utilisateurs peuvent accéder au VPC via des endpoints, ce qui facilite l'accès et la configuration du réseau. Le VPC permet un accès complet à la configuration du réseau, y compris les sous-réseaux (CIDR blocks), les tables de routage, les contrôles d'accès réseau (ACL) et les passerelles Internet.
Avant de créer une instance EC2, il est nécessaire de créer un VPC. Dans ce processus, l'utilisateur choisit une zone, un sous-réseau public dans cette zone, et le VPC fournit un routeur qui permet de diriger le trafic réseau vers la passerelle Internet, qui est le point d'entrée et de sortie vers le réseau Internet. La passerelle Internet utilise le routeur pour rediriger le trafic vers les contrôles d'accès réseau (ACL), les tables de routage principales et les groupes de sécurité. Une fois ces éléments configurés, l'utilisateur peut accéder à son instance EC2.
Si l'entreprise de l'utilisateur est connectée à ce réseau, un Virtual Private Gateway peut être configuré pour se connecter à un VPN afin de garantir une connexion sécurisée sans passer par Internet.
Elastic load balancing (ELB)
L'ELB (Elastic Load Balancer) est un service AWS qui permet de répartir la charge du trafic de vos clients vers votre site web ou application, en redirigeant cette charge vers des instances EC2, des conteneurs, des adresses IP ou des fonctions Lambda. Il est capable de gérer la charge variable du trafic de votre application dans une ou plusieurs zones de disponibilité, ce qui garantit une haute disponibilité. Il existe deux types d'ELB : l'ELB réseau, destiné aux applications très gourmandes, et l'ELB applicatif, destiné aux applications courantes.
La configuration de l'ELB consiste à créer un groupe cible, à configurer l'équilibreur de charge (nom, l'écouteur, le port, les zones de disponibilité), à définir les paramètres de sécurité (SSL,...), à définir le groupe de sécurité, et à configurer le groupe de routage. Avant la configuration de l'ELB, il est important de créer les zones de disponibilités pour éviter de devoir tout refaire.
L'ELB est capable de détecter la santé des instances. Il effectue 5 tests, avec un temps de réponse maximal de deux secondes. Si une instance devient défectueuse, l'ELB indique que l'instance est inaccessible.
Auto-scaling
L'Auto Scaling est un service d'AWS qui permet de mettre à l'échelle automatiquement les ressources en fonction de la charge des requêtes. Il permet de dimensionner dynamiquement le nombre d'instances EC2 en fonction de conditions prédéfinies pour garantir une haute disponibilité et une continuité de service. Par exemple, si une instance est surchargée, l'Auto Scaling va créer une nouvelle instance pour répartir la charge et si la charge diminue, il va supprimer les instances inutilisées pour économiser les coûts.
Lors de la configuration de l'Auto Scaling, on crée un groupe d'instances EC2 et on définit le nombre d'instances à lancer pour commencer, le réseau et sous-réseau, ainsi que la période de vérification de l'état des instances. On peut également configurer des stratégies de dimensionnement pour définir les conditions de montée ou de descente de charge. Les notifications peuvent être également configurées pour être informé en cas de dimensionnement. L'Auto Scaling est un service essentiel pour garantir une haute disponibilité et une continuité de service pour les applications à fort trafic et pour économiser les coûts en évitant la surprovision de ressources inutilisées.
Elastic BeanStalk
Beanstalk est en effet une solution PaaS (Platform as a Service) qui permet de simplifier le déploiement, la gestion et la mise à l'échelle des applications web en fournissant une plateforme clé en main, entièrement gérée par AWS. Cette plateforme permet aux développeurs de se concentrer sur leur code et de se décharger de la gestion des ressources sous-jacentes, tout en bénéficiant de l'évolutivité, de la haute disponibilité et de la sécurité des services AWS.
Concrètement, Beanstalk prend en charge la mise en place et la configuration d'un environnement d'exécution pour l'application (serveurs, langages de programmation, frameworks, etc.), la mise en place du load balancer, la gestion des mises à jour, la surveillance et les alertes, ainsi que la mise à l'échelle automatique en fonction de la demande de trafic. Les développeurs peuvent donc se concentrer sur le développement de leur application sans se soucier de la gestion de l'infrastructure sous-jacente.
AWS Lambda
AWS Lambda est un service qui permet l'exécution de fonctions sans se soucier des serveurs sous-jacents. Cette approche est connue sous le nom de "Fonction en tant que service" (FaaS), où les applications sont découplées pour une meilleure scalabilité et une gestion simplifiée. Avec Lambda, nous ne payons que pour le temps de calcul réellement consommé. Il n'y a donc pas de frais si notre code n'est pas exécuté.
Le service est conçu pour être simple à utiliser, nous chargeons notre code et le service Lambda s'occupe du reste. Le dimensionnement de l'infrastructure est également géré de manière autonome, afin de répondre aux besoins de chaque client. Ainsi, l'auto-scaling et le load balancing sont automatisés, évitant la nécessité d'une intervention manuelle.
Pour utiliser Lambda, nous devons configurer des "triggers" ou des déclencheurs, qui peuvent être des événements tels que le dépôt d'un fichier, un clic sur un bouton, ou encore une action d'un utilisateur. Lorsqu'un trigger est détecté, la fonction Lambda est déclenchée pour satisfaire l'action demandée.
AWS gère pour nous les serveurs, la capacité, le déploiement, la mise à l'échelle et l'administration, ainsi que l'exécution de notre code sur un intervalle de temps donné. En revanche, nous devons gérer le code, configurer les déclencheurs et la destination, ainsi que la facturation à l'usage.
Lightsail
Amazon Lightsail est un service VPS hébergé et géré par AWS, conçu pour être une version simplifiée et allégée d'EC2. Ce service est destiné aux utilisateurs qui souhaitent se familiariser avec AWS sans avoir à gérer la complexité d'un service complet. Lightsail est idéal pour les petits sites web, les blogs et les applications de petite taille.
Les fonctionnalités de Lightsail sont assez limitées, mais suffisantes pour la plupart des besoins simples :
- Configuration ultra-simple : Lightsail est très facile à configurer, ce qui le rend accessible aux débutants.
- Choix de la région : vous pouvez choisir la région où votre VPS sera hébergé.
- Accès SSH et RDP en un clic : vous pouvez accéder à votre VPS via SSH ou RDP très facilement.
- Stockage SSD et snapshots : Lightsail utilise du stockage SSD et prend en charge les snapshots.
- Modèles pré-installés : vous pouvez choisir parmi une sélection de modèles de systèmes d'exploitation et d'applications pré-installés.
- Contrôle des DNS et IP statique : vous avez un contrôle total sur les DNS et pouvez utiliser une IP statique.
- Équilibrage de charge simplifié : vous pouvez facilement activer l'équilibrage de charge.
- Provisionnement de bases de données gérées : vous pouvez facilement provisionner des instances de bases de données gérées.
- Le coût de Lightsail est très raisonnable et vous pouvez choisir parmi des ressources maximales proposées qui, en cas de dépassement, vous permettront de passer à EC2 de manière transparente.
En résumé, Lightsail est un service VPS facile à utiliser et abordable, idéal pour les débutants et les petits projets. Si vous avez besoin de plus de fonctionnalités et de contrôle, vous pouvez toujours passer à EC2.