IBM Cloud Docs
Validando seu código do aplicativo e latência com Iter8

Validando seu código do aplicativo e latência com Iter8

Iter8 é a ferramenta de engenharia de versão para Kubernetes que permite a validação de objetivos de nível de serviço (SLO), testes A/B e atualizações progressivas para aplicativos Kubernetes. Agora, é possível usar o Iter8 para verificar se o seu aplicativo IBM Cloud® Code Engine está sendo executado com baixa latência e livre de erros. Saiba mais sobre o Iter8 em 5 minutos.

Antes de Iniciar

  • Configurar Docker em seu sistema local.
  • Crie um aplicativo Code Engine. Não tem certeza de como criar um? Em seguida, experimente o tutorial Implementando aplicativos.

Localizando a URL de seu aplicativo Code Engine

Para localizar a URL de seu aplicativo usando a CLI, execute o comando ibmcloud ce application get e especifique a opção -output url. Por exemplo, localize a URL para um aplicativo chamado myapp.

ibmcloud ce application get -n myapp -output url

Exemplo de saída

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

Para localizar a URL de um aplicativo usando o console Code Engine, acesse a página de visão geral do aplicativo. Se o aplicativo estiver no estado Ready, será possível abri-lo em uma página da web clicando em Abrir URL do aplicativo. Salve a URL.

Executando o contêiner Iter8 do Docker

Iter8 é fornecido como um contêiner Docker que inclui todas as dependências que são necessárias para executar Iter8. O comando a seguir inicia o contêiner do Docker.

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

Inicializando o contêiner Iter8 do Docker

Ao inicializar este contêiner do Docker, o comando inicia um cluster local do Kubernetes dentro do contêiner do Docker e, em seguida, instala o Iter8 dentro do contêiner.

docker exec ind ./iter8.sh

Procure pela saída que diz All systems go....

Validando objetivos de nível de serviço (SLOs)

Verifique se o seu aplicativo Code Engine satisfaz a latência e os objetivos de nível de serviço (SLOs) baseados em erro que você determinou para o seu aplicativo. O comando a seguir gera solicitações para o seu aplicativo Code Engine, constrói seu perfil de latência e erro e verifica se o seu aplicativo satisfaz os SLOs especificados.

Substitua <URL-OF-YOUR-APPLICATION> pela URL obtida na Etapa 1. Também é possível configurar limites customizados para as três métricas que são usadas para avaliar seu aplicativo.No exemplo a seguir, você verifica que a latência média de seu aplicativo está abaixo de 200,0 msec, a taxa de erro está abaixo de 1% (é possível transformá-la em 0,0) e a latência de cauda do 95º percentil está abaixo de 500,0 msec.

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

Exemplo de saída

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

Obtendo os resultados da validação de SLO

O comando a seguir exibe o resultado da validação de SLO para o seu aplicativo Code Engine.

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

Exemplo de saída

Se você não vir uma saída semelhante ao exemplo a seguir, poderá ser necessário esperar um pouco mais e tentar o comando anterior novamente. A seção de objetivos relata se o seu aplicativo está satisfazendo os SLOs especificados. A seção de métricas relata as métricas observadas para o seu aplicativo pelo 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 |
+--------------------------------------+--------+

Recuperando uma revisão

Se a sua revisão mais recente falhar em satisfazer os objetivos do experimento que você especificou, poderá desejar excluir a revisão mais recente e permitir que o Code Engine retroceda automaticamente para a revisão estável anterior.

Para excluir a revisão mais recente com a CLI, execute o comando ibmcloud ce revision delete.

Para excluir a revisão mais recente do console, acesse o Console do Code Engine. Selecione Projetos-> seu projeto -> Aplicativos -> seu aplicativo -> Revisões e tráfego. Exclua a revisão que falhou. O Code Engine retrocede automaticamente para a revisão estável anterior.

Removendo o contêiner Iter8

É possível limpar o seu sistema local, removendo o contêiner e a imagem Iter8-in-Docker se você não precisar mais deles.

docker rm -f -v ind

Próximas etapas para Iter8

Este tutorial é baseado no projeto de software livre Iter8. Para obter mais informações, consulte a página do projeto de código aberto Iter8.