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.