Toute entreprise de développement de logiciels a besoin d'environnements de test proches de l'environnement de production. Cela est particulièrement vrai pour les logiciels en boîte, qui ont un long cycle de sortie.
De nombreux problèmes de création d'environnements de test sont résolus par leur placement dans le cloud. Nous parlerons des options de test sur notre plate-forme
cloud.Mail.Ru Cloud Solutions (MCS). Mais une partie de ce que nous disons est vraie pour n'importe quel cloud.
Difficultés à mettre en place un environnement de test
Avant de parler des capacités des environnements de test dans le cloud, nous parlerons des difficultés rencontrées par les entreprises pour tester les logiciels.
Différentes branches Git - différents environnements
La plupart des entreprises impliquées dans le développement de logiciels utilisent des systèmes de contrôle de version. Le plus courant est
Git , qui est utilisé par 87% des développeurs (sondage RhodeCode
sur Twitter ).
La meilleure pratique dans Git est ce que l'on appelle les branches de fonctionnalités, lorsqu'une branche distincte est allouée pour chaque nouvelle fonctionnalité dans le référentiel. Cette approche permet aux développeurs de ne pas «pousser leurs coudes» et rend les changements plus indépendants, mais nécessite le déploiement de nombreux environnements dédiés pour tester des fonctionnalités individuelles.
Sous-utilisation des ressources informatiques
25% des serveurs physiques sont des zombies qui consomment de l'électricité mais ne font rien d'utile. Et de nombreux informaticiens
ne peuvent pas dire ce que font 15 à 30% des serveurs installés dans leur entreprise.
Alors voilà. Le matériel sur site pour les environnements de test n'est pas différent des autres et, en règle générale, mal mis au rebut. Et il ne peut en être autrement. Lorsque vous achetez un parc d'équipements serveur, vous êtes réaffecté par les ressources en cas d'augmentation de la consommation et du nombre d'environnements de test. Par conséquent, les environnements de test sont inactifs la nuit et le week-end «au cas où», et vous ne payez que pour l'électricité et le refroidissement consommés.
La simple application de la virtualisation dans votre cloud privé ne résout pas le problème de l'évolutivité rigide et de la sous-utilisation des équipements.
Réglage de la difficulté
Les environnements de test et de développement ne sont pas seulement quelques machines virtuelles. En règle générale, il comprend un serveur d'applications, un serveur de base de données, ainsi que des serveurs de file d'attente de messages et des serveurs de cache.
Il est difficile pour les développeurs de développer et de configurer une telle infrastructure par eux-mêmes, s'ils n'ont pas l'expertise appropriée, cela peut prendre plusieurs jours. Pour les administrateurs expérimentés, c'est facile, mais généralement pas intéressant. De plus, la bureaucratie est imposée et le processus d'allocation des ressources pour créer un environnement de test peut prendre beaucoup de temps.
Un autre problème est qu'un administrateur système à temps plein n'a souvent pas d'expertise dans le déploiement d'environnements de test spécifiques, et l'entreprise est obligée d'attirer des consultants coûteux de l'extérieur. Un exemple est un bac à sable pour les mégadonnées basé sur Hadoop, Spark, HDFS ou Airflow. Le déploiement d'un tel environnement prend au moins une semaine à un spécialiste qualifié dans le domaine BigData et au moins un mois à un administrateur système ordinaire. Une histoire similaire avec les clusters Kubernetes: la construction d'un cluster de test proche de la configuration de production prend au moins plusieurs jours.
En conséquence, l'entreprise est obligée de recourir à un tiers - pour attirer des consultants. Cependant,
trouver des experts en big data est assez difficile , et les administrateurs de tels systèmes peuvent être comptés presque sur les doigts. Oui, un ingénieur DevOps peut gérer toutes les tâches de déploiement d'environnements de test, mais toutes les entreprises ne l'ont pas, et trouver un bon expert dans ce domaine n'est pas plus facile qu'un spécialiste BigData. En effet, en 2016, le site de recherche d'emploi Indeed.com a
constaté que les entreprises recherchaient un ingénieur DevOps plus longtemps que tout autre spécialiste.
Comment le cloud résout ces problèmes
Deuxième facturation pour les ressources consommées et mise à l'échelle instantanée
Le plus évident des services cloud est la possibilité de louer une infrastructure cloud de n'importe quelle configuration (un serveur ou un cluster entier) pour n'importe quelle période. Sur notre
plateforme Mail.Ru Cloud Solutions (MCS), la facturation est à la seconde - vous n'avez qu'à payer pour les ressources informatiques qui ont été réellement utilisées.
Contrairement au bare metal, au cloud privé et à la plupart des fournisseurs de cloud russes, MCS ne facture pas de ressources pour les machines virtuelles arrêtées (RAM, CPU): vous n'avez qu'à payer pour l'espace disque utilisé. Par exemple, la configuration de test de 20 CPU, 40 Go de RAM et 1 To de disque dur coûte 24 800 ₽ / mois et le coût de l'espace disque est de 7 000 ₽ / mois. Par exemple, si vous utilisez des outils d'automatisation pour arrêter un tel environnement à 21h00 et déployer à 9h00, vous paierez 15 900 ₽ - une fois et demie moins qu'avec une location 24h / 24.
D'après notre expérience, les économies totales réalisées grâce aux tests dans le cloud peuvent atteindre 60 à 70%, par rapport aux tests dans l'infrastructure sur site.
La possibilité de faire évoluer instantanément les ressources du cloud vers le haut et vers le bas vous permet de déployer rapidement des environnements uniquement au bon moment et d'utiliser les capacités louées de près de 100%. Le temps de déploiement de l'environnement de test est réduit de plusieurs jours, voire de plusieurs mois, par rapport à celui sur site.
Ressources allouées par les développeurs eux-mêmes
À l'aide de portails en libre-service, les développeurs peuvent configurer des environnements de test dans le cloud et leur allouer des ressources sans contacter les administrateurs. Même cette simple action peut raccourcir le délai de mise sur le marché d'un produit de plusieurs semaines.
API pour créer et détruire automatiquement des environnements de test
Le cloud vous permet de créer des environnements de courte durée sur un modèle
juste à temps .
À l'aide de l'API REST et de la CLI, vous pouvez déployer des environnements de test en bloc, les arrêter, les mettre à jour et les supprimer. De cette façon, vous pouvez configurer le cycle de vie complet des environnements de test et conserver des centaines d'environnements sains. Grâce à la mise à l'échelle instantanée du cloud et à la facturation seconde par seconde, la flexibilité et les coûts d'exploitation réduits sont atteints.
Voici un exemple de notre expérience.L'entreprise développe des logiciels pour 150 banques. Chaque banque a sa propre succursale dans Git avec des fonctions supplémentaires intégrées à la solution en boîte. L'entreprise est obligée de créer deux ou trois environnements de test de travail parallèles pour chaque client: test avec la version actuelle, test avec la nouvelle version, vérification des mises à jour de la version actuelle à la nouvelle. Au total, pour 150 clients, il est nécessaire de déployer et de maintenir jusqu'à 450 environnements de test uniquement en même temps - cela ne prend pas en compte les environnements de développement.
En mode cloud privé (ils utilisent la virtualisation dans leur propre centre de données), il est presque impossible de travailler avec une telle charge, car le matériel disponible n'est souvent pas suffisant pour un fonctionnement parallèle de tous les environnements. En conséquence, les développeurs attendent leur tour pour tester et ne peuvent pas vérifier rapidement le fonctionnement de la nouvelle version de l'application.
Le déploiement et la gestion automatisés des environnements de test dans le cloud public suppriment la limitation de la vitesse de test et réduisent finalement le délai de commercialisation. De plus, la gestion des coûts lors de la location de ressources cloud est plus prévisible et les coûts eux-mêmes sont inférieurs à ceux de l'utilisation de votre propre équipement spécialisé pour les bancs d'essai.
Un autre avantage des environnements de test cloud est l'intégration avec les outils CI / CD. Ces solutions (par exemple, Jenkins) contiennent des plugins qui vous permettent de créer dynamiquement des environnements de test dans le cloud MCS pendant la génération. Vous pouvez activer un environnement de test juste avant d'exécuter des tests fonctionnels ou de régression. Si les tests réussissent, l'environnement s'effondrera automatiquement, si quelque chose ne va pas - l'environnement sera enregistré afin que les développeurs puissent se reconnecter et comprendre la raison de la régression.
Blocs de construction préfabriqués pour les environnements de test
Déployez rapidement l'environnement de test sur la plateforme Mail.Ru Cloud Solutions
PaaS aide, par exemple, les
conteneurs Kubernetes et les bases de données dans le cloud. Kubernetes développe un catalogue de services avec des centaines d'applications.
À partir du catalogue, vous pouvez déployer ActiveMQ, RabbitMQ, les clusters Kafka, les systèmes de surveillance et d'analyse des journaux, divers CMS et bases de données en quelques minutes. Contrairement au
Docker Hub populaire, qui ne contient que des modèles d'application personnalisés, le
catalogue de services Kubernetes possède des modèles de haut niveau qui simplifient l'intégration. À partir des modèles, vous pouvez déployer des composants d'application préconfigurés (file d'attente de messages, découverte de services, bases de données, serveurs d'applications, outils CI / CD, serveurs de mise en cache, outils de chaîne de blocs et bien plus encore), sans avoir à configurer les machines virtuelles sur lesquelles ils sont déployés.
Applications disponibles sur le marché Kubeapps.Sandboxes pour Big Data
Sur MCS, vous pouvez déployer des environnements de test pour les applications Big Data. En utilisant le
service PaaS Big Data, vous pouvez créer des clusters de Hadoop, Spark, HBase et Airflow. Le processus de déploiement est entièrement automatisé, ce qui permet d'économiser des semaines par rapport à l'auto-configuration.
Un avantage supplémentaire ici est la facturation de seconde en seconde et la mise à l'échelle instantanée. La possibilité de créer des environnements de test extensibles pendant de courtes périodes réduit les coûts de maintenance d'une infrastructure informatique analytique. Les économies peuvent atteindre 80% par rapport à sur site.
Intégration avec Infrastructure-as-a-Code
Contrairement aux solutions propriétaires basées sur VMWare, la plateforme cloud MCS est construite sur la base du logiciel ouvert OpenStack, qui a une intégration complète avec divers outils: Terraform, Ansible, Puppet, Chef.
Terraform est construit dans l'esprit d'Infrastructure-as-Code (IaC), lorsque le processus de configuration de l'infrastructure est organisé comme un codage et plus familier aux développeurs. Terraform est difficile à utiliser dans un cloud privé car il manque une intégration complète avec VMware. Dans le cloud MCS, les entreprises peuvent utiliser des exemples prêts à l'emploi de Terraform (ils se trouvent dans
ce référentiel GitHub ).
Création d'un environnement de test à l'aide de Terraform.Souviens toi de moi
- Les tests dans le cloud deviennent une pratique naturelle dans l'industrie informatique et sont déjà appliqués par une grande variété d'organisations: des universités d'État aux grandes entreprises informatiques .
- La création d'environnements de test dans le cloud permet d'économiser de l'argent grâce à la possibilité de mise à l'échelle et d'automatisation instantanées via des API, qui fournissent une utilisation à près de 100% de l'infrastructure louée.
- Les services supplémentaires sur la plate-forme cloud et les modèles sur les conteneurs Kuberntetes sont des blocs de construction prêts à l'emploi qui n'ont pas besoin d'être configurés.
- Les services difficiles à configurer, tels que les outils de traitement Big Data, sont plus faciles à louer dans le cloud en tant que modèles préconfigurés. Vous économiserez des semaines en ne plongeant pas dans les paramètres.
- MCS est construit sur OpenStack et entièrement intégré à Terraform et à d'autres outils DevOps.
Tous ces outils peuvent être essayés gratuitement sur la plateforme Mail.Ru Cloud Solutions. Jusqu'à fin novembre, en
utilisant ce lien avec le code promo ILOVEHABR, vous pouvez ajouter 1000 roubles à votre compte et test-test-test.