IBM Cloud Docs
Validation de votre code d'application et du temps d'attente avec Iter8

Validation de votre code d'application et du temps d'attente avec Iter8

Iter8 est l'outil d'ingénierie des versions pour Kubernetes qui permet la validation des objectifs de niveau de service (SLO), les tests A/B et les mises à jour progressives pour les applications Kubernetes. Désormais, vous pouvez utiliser Iter8 pour vérifier que votre application IBM Cloud® Code Engine s'exécute avec un faible temps d'attente et sans erreur. Découvrez Iter8 en 5 minutes.

Avant de commencer

Identification de l'URL de votre application Code Engine

Pour identifier l'URL de votre application depuis l'interface de ligne de commande, exécutez la commande ibmcloud ce application get et spécifiez l'option -output url. Par exemple, pour identifier l'URL d'une application nommée myapp, entrez :

ibmcloud ce application get -n myapp -output url

Exemple de sortie

https://myapp.4svg40kna19.us-south.codeengine.appdomain.cloud

Pour identifier l'URL d'une application depuis la console Code Engine, accédez à la page de présentation de l'application. Si l'application est à l'état Ready, vous pouvez l'ouvrir dans une page Web en cliquant sur Ouvrir l'URL de l'application. Sauvegardez l'URL.

Exécution du conteneur Docker Iter8

Iter8 est fourni sous la forme d'un conteneur Docker qui inclut toutes les dépendances nécessaires à l'exécution de Iter8. La commande suivante démarre le conteneur Docker :

docker run --name ind --privileged -d iter8/ind:0.7.4

Initialisation du conteneur Docker Iter8

Lorsque vous initialisez ce conteneur Docker, la commande démarre un cluster Kubernetes local dans le conteneur Docker, puis installe Iter8 dans le conteneur.

docker exec ind ./iter8.sh

Recherchez dans la sortie la phrase All systems go....

Validation des objectifs de niveau de service

Vérifiez que votre application Code Engine satisfait les objectifs de niveau de service relatifs au temps d'attente et aux erreurs que vous avez déterminés pour votre application. La commande ci-après génère des demandes pour votre application Code Engine, construit son profil relatif au temps d'attente et aux erreurs et vérifie que votre application satisfait les objectifs de niveau de service spécifiés.

Remplacez <URL-OF-YOUR-APPLICATION> par l'URL obtenue dans l'étape 1. Vous pouvez également définir des limites personnalisées pour les trois mesures utilisées pour évaluer votre application.Dans l'exemple suivant, vous vérifiez que le temps d'attente moyen de votre application est de 200,0 ms, le taux d'erreur de moins de 1% (vous pouvez le paramétrer à 0.0) et le temps d'attente de la queue percentile de 95 est de 500.0 ms.

docker exec ind helm install \
--set URL=<URL-OF-YOUR-APPLICATION> \
--set LimitMeanLatency=200.0 \
--set LimitErrorRate=0.01 \
--set Limit95thPercentileLatency=500.0 \
codeengine /iter8/helm/conformance

Exemple de sortie

NAME: codeengine
LAST DEPLOYED: Wed Jun 30 01:10:14 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
TEST SUITE: None

Obtention des résultats de la validation des objectifs de niveau de service

La commande suivante génère le résultat de la validation des objectifs de niveau de service pour votre application Code Engine :

docker exec ind \
bash -c "kubectl get experiment my-experiment -o yaml | iter8ctl describe -f -"

Exemple de sortie

Si votre sortie n'est pas similaire à l'exemple ci-dessous, attendez un peu et réexécutez la commande. La section des objectifs indique si votre application satisfait les objectifs de niveau de service spécifiés. La section des métriques indique les métriques observées pour votre application par Iter8.

****** Overview ******
Experiment name: my-experiment
Experiment namespace: default
Target: my-app
Testing pattern: Conformance
Deployment pattern: Progressive

****** Progress Summary ******
Experiment stage: Completed
Number of completed iterations: 1

****** Winner Assessment ******
> If the version being validated; i.e., the baseline version, satisfies the experiment objectives, it is the winner.
> Otherwise, there is no winner.
Winning version: my-app

****** Objective Assessment ******
> Identifies whether or not the experiment objectives are satisfied by the most recently observed metrics values for each version.
+--------------------------------------+--------+
|              OBJECTIVE               | MY-APP |
+--------------------------------------+--------+
| iter8-system/mean-latency <=         | true   |
|                              200.000 |        |
+--------------------------------------+--------+
| iter8-system/error-rate <=           | true   |
|                                0.010 |        |
+--------------------------------------+--------+
| iter8-system/latency-95th-percentile | true   |
| <= 500.000                           |        |
+--------------------------------------+--------+

****** Metrics Assessment ******
> Most recently read values of experiment metrics for each version.
+--------------------------------------+--------+
|                METRIC                | MY-APP |
+--------------------------------------+--------+
| iter8-system/request-count           | 40.000 |
+--------------------------------------+--------+
| iter8-system/error-count             |  0.000 |
+--------------------------------------+--------+
| iter8-system/mean-latency            | 66.060 |
+--------------------------------------+--------+
| iter8-system/error-rate              |  0.000 |
+--------------------------------------+--------+
| iter8-system/latency-95th-percentile | 73.055 |
+--------------------------------------+--------+

Annulation d'une révision

Si votre dernière révision ne satisfait pas les objectifs d'expérimentation que vous avez spécifiés, vous pouvez décider de la supprimer et d'autoriser Code Engine à revenir automatiquement à la révision stable précédente.

Pour supprimer la dernière révision depuis l'interface de ligne de commande, exécutez la commande ibmcloud ce revision delete.

Pour supprimer la dernière révision depuis la console, accédez à la console Code Engine. Sélectionnez Projets-> votre projet -> Applications -> votre application -> Révisions et trafic. Supprimez la révision qui a échoué. Code Engine annule automatiquement la révision stable précédente.

Retrait du conteneur Iter8

Vous pouvez nettoyer votre système local en retirant l'image et le conteneur Iter8-in-Docker si vous n'en avez plus besoin.

docker rm -f -v ind

Etapes suivantes pour Iter8

Ce tutoriel repose sur le projet open source Iter8. Pour plus d'informations, voir la page du projet open source Iter8.