C'est l'histoire de la façon dont nous avons réduit nos coûts AWS de 80 % en un peu moins de deux semaines. AWS est un magasin de bonbons pour les développeurs Je dois commencer par une introduction. Nous utilisons AWS depuis 2018 pour tous nos projets, et cela a fait des miracles pour nous. Nous sommes une équipe entièrement distribuée, et avoir notre propre centre de données quelque part dans le monde serait problématique. Il est beaucoup plus facile de louer des ressources auprès d'AWS et d'éviter toutes les dépenses en capital. Le problème avec AWS est que les développeurs peuvent essentiellement créer n'importe quelles ressources sans avoir à les approuver avec notre service financier. Avec les centres de données traditionnels, ce n'est pas le cas - l'achat d'un serveur supplémentaire nécessiterait d'obtenir une facture du magasin et de demander au service financier de payer pour cela. Donc, fondamentalement, la base du problème est qu'avec AWS, les développeurs peuvent simplement acheter les ressources dans les quantités qu'ils veulent et quand ils le veulent. Qu'avons-nous fait pour réduire les coûts AWS ? Nous ne sommes pas une grande entreprise et nos coûts AWS sont juste un peu plus élevés que 7 000 $ par mois pour tous les comptes AWS. De plus, il convient de mentionner que nous n'hébergeons que des stands DEV et QA, car les stands PROD sont payés par nos clients. Nos ressources sont principalement des machines de développement individuelles, des bases de données de test et diverses ressources personnalisées pour des projets de recherche tels que Kinesis Firehose, Sage Maker, etc. Nous avons donc beaucoup de ressources aléatoires difficiles à catégoriser, structurer, prévoir et contrôler. Alors, comment avons-nous abordé la réduction de nos coûts AWS ? , nous avons commencé à examiner le Cost Explorer et identifié les articles les plus chers : Tout d'abord Nous avons trouvé un nœud Bitcoin qui fonctionnait depuis quatre mois et nous coûtait 600 $/mois car il nécessitait un gros SSD avec une vitesse provisionnée supplémentaire. Nous avons effectué une petite recherche sur les ordinaux Bitcoin et n'avons pas supprimé la machine. Résolution : nous avons archivé le volume (coûte 6 $/mois) et mis fin à la machine virtuelle. Économies : 594 $/mois Nous avons trouvé une machine GPU Nvidia Tesla qui coûte 531 $/mois. Nous l'utilisons jusqu'à ce jour pour des expériences d'IA génératives. Nous envisageons de créer notre propre application qui génère du texte en vidéo, nous avons donc besoin de cette machine. Résolution : déplacé le volume vers une instance ponctuelle. Économie : 360 $/mois Pas la plus chère, mais la découverte la plus étonnante est que nous avons oublié de retirer un stand de démonstration-PROD dans l'une des régions inutilisées où nous avons déployé nos scripts terraform pour tester le déploiement de PROD "à partir de zéro". Économie : 340 $/mois. Beaucoup de petits objets. Résolutions : varient. Économie : 1 700 $/mois , nous avons commencé à déplacer tout ce qui était possible pour repérer les instances. Il s'agit d'une procédure simple. Pour une machine individuelle, vous devez l'arrêter, détacher le volume (n'oubliez pas de noter le chemin de montage), puis terminer la machine. Ensuite, vous créez une nouvelle instance ponctuelle (quelle que soit l'AMI, assurez-vous simplement que l'architecture du processeur est compatible avec votre volume précédent). Une fois l'instance Spot créée, détachez (et n'oubliez pas de supprimer !) le nouveau volume et attachez le volume précédent sur le même chemin de montage que sur la machine d'origine. Pour les environnements Beanstalk, c'est plus simple : nous venons de modifier les paramètres de capacité pour n'utiliser que des instances ponctuelles. Deuxièmement Économie : 1 000 $/mois , nous avons effacé les buckets S3 inutilisés (nous avons créé des robots de trading automatique qui ont accumulé beaucoup de données en continu). Et configurez la suppression automatique des données dans plusieurs compartiments S3, afin que nous ne stockions pas les données de trading pendant plus d'un an car elles deviennent complètement obsolètes et inutiles. Troisièmement Économie : 300 $/mois , nous avons réduit certaines ressources. Il s'agit de vérifier le CPU et la RAM consommés, et si nous voyons moins de 50% d'utilisation constante, nous abaissons le niveau. Quatrièmement Économie : 300 $/mois (ce serait 3 x plus sur les instances à la demande) , nous avons configuré l'arrêt automatique sur des machines individuelles. Nous avons créé plusieurs fonctions lambda pour différents types de tâches : arrêt d'une machine virtuelle SageMaker Jupyter après 1 heure d'inactivité, arrêt de machines virtuelles individuelles, DEV et QA représentent la période de nuit pendant laquelle personne ne travaille. Ces fonctions lambda sont exécutées quotidiennement sur des événements cloudwatch. Il existe des lambdas pour activer les supports DEV et QA afin de faciliter le processus. Cinquièmement Économie : 500 $/mois De plus, nous avons mis en place des solutions plus petites pour des économies supplémentaires, mais elles ne sont pas couvertes dans cet article. Jusqu'à présent, nous avons économisé environ 5 500 $ sur notre facture mensuelle de 7 000 $, soit environ 80 % de tous les coûts ! Je savais que nous dépensions excessivement sur AWS, mais je n'ai jamais su que c'était TELLEMENT cher. Au cours de l'année, cela signifie environ 66 000 $ d'économies. Comment les organisations abordent-elles l'optimisation des coûts du cloud ? Après avoir eu notre propre expérience de l'optimisation des coûts du cloud, j'ai compris à quel point il est important de suivre attentivement les coûts du cloud. Fondamentalement, l'optimisation des coûts du cloud peut permettre d'économiser suffisamment pour dynamiser l'entreprise si vous investissez l'argent économisé dans le marketing. Ou vous pourriez le retirer sous forme de dividendes et acheter une nouvelle voiture. La somme est grande et il y a beaucoup de choses qui peuvent être faites avec. Puisqu'il est hors de question que l'optimisation des coûts du cloud soit une entreprise absolument nécessaire, comment les entreprises l'abordent-elles ? Réfléchissons aux moyens de mettre en œuvre la gestion des déchets dans le cloud, des plus simples aux plus avancés. 1. Acheter uniquement des machines virtuelles Vous pouvez aborder le problème de la manière la plus traditionnelle possible. Niez les innombrables possibilités offertes par AWS et empêchez simplement vos développeurs d'acheter des machines EC2. SQS ? Non. DynamoDB ? Non. Utilisez simplement des machines virtuelles EC2 et installez tout dessus. Avantages: Vous pouvez très bien prévoir les dépenses, car il existe un tarif forfaitaire pour chaque type de machine virtuelle EC2 Les développeurs rempliront les machines disponibles avec les logiciels dont ils ont besoin. Tout comme dans un centre de données physique traditionnel sur site, augmentant ainsi l'efficacité des dépenses d'argent Les inconvénients: Vous passez à côté des avantages de la mise à l'échelle automatique Vos développeurs perdent du temps à implémenter des choses qui existent déjà Vous manquez des mises à jour automatiques de logiciels qui seraient appliquées automatiquement Dans l'ensemble, ce n'est pas une bonne stratégie de travailler avec le cloud comme si vous louiez simplement un hébergement sur GoDaddy. 2. Examinez chaque demande Que se passe-t-il si vous autorisez les développeurs à utiliser et à mettre à l'échelle toutes les ressources, mais qu'ils doivent les négocier avec le service spécial qui contrôle les coûts ? Les développeurs n'ont pas leurs propres droits pour acheter/dimensionner les ressources, mais ils peuvent demander à une personne spéciale d'acheter/dimensionner une ressource pour eux. Supposons qu'un développeur ait besoin d'un point de terminaison Kinesis Firehose (oui, je mentionne un service dont vous n'avez probablement même pas entendu parler). Serait-ce une tâche simple pour le développeur d'expliquer ce qu'il veut au contrôleur ? Et puis le développeur devrait également expliquer le raisonnement derrière la mise à l'échelle et probablement même prouver que le choix de l'architecture est bon et non inutile en termes de gestion des coûts. En fournissant un exemple spécifique, on pourrait voir que cela ne fonctionne tout simplement pas de cette façon. Cela ne pourrait fonctionner que si l'équipe de gestion des coûts est composée d'experts. Et ce n'est que la pointe de l'iceberg. Considérez maintenant : Une ressource devenue inutile du fait du changement architectural Un développeur quittant son emploi et ne supprimant pas les ressources qu'il utilisait à des fins de développement individuel Une urgence lorsqu'une ressource doit être mise à l'échelle rapidement pour éviter des problèmes commerciaux Avantages: Les développeurs sont autorisés à tirer le meilleur parti des ressources gérées par AWS Les dépenses sont bien maîtrisées Les inconvénients: Les déchets du cloud peuvent toujours provenir de ressources inutiles non supprimées L'équipe de gestion des coûts a besoin d'un niveau élevé de connaissances AWS Le niveau de bureaucratie peut nuire aux affaires 3. Engagez une équipe FinOps Un moyen plus avancé serait de trouver et d'embaucher des experts dans AWS qui contrôleraient les dépenses. Ils peuvent utiliser les outils fournis par AWS pour contrôler les dépenses dès le départ. Il a: un explorateur de coûts un sous-système de marquage instances réservées plans d'épargne anomalies de coût beaucoup plus Ces outils ne sont pas conviviaux et nécessitent un personnel bien formé qui sait quoi en faire. Cependant, vous pouvez réellement commencer à contrôler vos coûts de cloud. Cette approche nécessite non seulement des outils et des travailleurs hautement qualifiés, mais également un cadre dans lequel l'équipe travaille : des contrôles périodiques des ressources sous-utilisées, des procédures de réduction et de nettoyage, etc. Une équipe qui est essentiellement DevOps avec une approche soucieuse des finances s'appelle FinOps. Avantages: Les développeurs ont toute la puissance d'AWS Petite surcharge bureaucratique pour les développeurs L'équipe financière a un contrôle total sur les dépenses dans divers aspects : par projet, par équipe, etc. Les développeurs consomment les ressources de manière consciente Les inconvénients: Nécessite un personnel hautement qualifié qui, pour la plupart, n'existe même pas encore, vous devez donc en former un Vulnérable au facteur humain Le temps de réaction est aussi rapide que la période entre les contrôles - une machine EC2 inutilisée peut rester allumée pendant 1 à 2 semaines ou plus 4. Utilisez un logiciel cloud de gestion des déchets Une fois que vous envisagez sérieusement d'embaucher (ou de développer votre propre) équipe FinOps, vous devriez également envisager un logiciel tiers d'optimisation des coûts du cloud, tel qu'Infinops. C'est votre membre automatique de l'équipe FinOps qui travaille 24h/24 et 7j/7 et qui n'est pas susceptible d'erreur humaine. Ces logiciels contrôlent automatiquement votre cloud pour les ressources sous-utilisées et d'autres moyens connus d'économiser, tels que : Utilisation d'instances ponctuelles Utiliser des instances réservées Réduire le nombre de clusters OpenSearch dans l'environnement QA Désactivation des VM personnelles pour la nuit Arrêt automatique des machines virtuelles SageMaker coûteuses avec Jupyter etc. Tous ces conseils viennent automatiquement, car votre système est constamment analysé pour détecter les modifications. Et de tels conseils peuvent . Cela signifie généralement économiser au moins des dizaines de milliers de dollars au cours de l'année. vous faire économiser jusqu'à 80 % de votre facture mensuelle Avantages: Excellent outil pour l'équipe FinOps Aide les FinOps débutants avec des techniques d'optimisation Réduit le facteur humain Applique des examens périodiques de la consommation des ressources Applique les balises, la gestion du cycle de vie, etc. Permet de suivre plusieurs comptes AWS à la fois Les inconvénients: A son propre coût (généralement beaucoup moins que ce qu'il économise) , je voudrais dire que la gestion des coûts AWS peut être délicate. Les 80 % d'économies réalisées par l'entreprise montrent qu'il est possible de dépenser moins avec les bons gestes. Que vous fixiez des limites sur les ressources, obteniez des approbations, utilisiez des équipes d'experts ou des outils automatisés, il est essentiel de garder un œil attentif sur les dépenses. Après tout, l'utilisation du cloud doit permettre de rendre les choses plus faciles, et non plus coûteuses. En conclusion