Versionando o Watson utilizando OpenWhisk e Cloudant

Renato dos Santos Rosa Leal
As Máquinas que Pensam
5 min readOct 2, 2017

Imagine que você passou seis meses desenvolvendo seu chatbot e de repente, depois de algumas (várias) alterações em seu treinamento, ele simplesmente para de responder tão bem quanto antes. O que fazer?

Você até poderia tentar relembrar todas as alterações que fez mas lembrar de tudo é difícil. Então como resolver essa situação?

A maneira mais é fazer o backup manual do seu chatbot de tempos em tempos, no entanto essa tarefa não é prática, pode se tornar chata e consumir muito tempo.

Nesse artigo eu discuto como automatizar esses backups utilizando o OpenWhisk e bancos de dados NoSQL.

Primeiro: O que é OpenWhisk?

O OpenWhisk é a implementação proposta pela IBM para o modelo de arquitetura e deploy utilizando serveless computing, também conhecido como function as a service (FaaS).

Esse modelo de execução é baseado em um conceito de que o provedor de Cloud será responsável por todo o gerenciamento do início e parada da sua aplicação conforme seja necessário para atender solicitações.

https://www.slideshare.net/DanielKrook/serverless-architectures-built-on-an-open-source-platform

É especialmente útil quando temos aplicações que precisam ser executadas por um curto período de tempo e não precisam armazenar estado, como o backup dos nossos workspaces!

Para que possamos criar nossa aplicação de versionamento precisamos antes conhecer três conceitos básicos do OpenWhisk:

  • Triggers, são classes de eventos que podem acontecer e disparar o início da nossa ação.
  • Actions, são pequenos trechos de código que executam uma função específica em resposta a um evento.
  • Rules, é a associação entre o trigger e action, normalmente são condicionais para validar o início da action.

Basicamente temos que eventos (events) disparam triggers, esses por sua vez são validados por regras (rules) e iniciam uma ação (action).

OBS: No fim desse artigo coloquei alguns links pra quem queira conhecer mais sobre o OpenWhisk.

Desenvolvendo nossa aplicação

Os pré-requisitos para desenvolver a aplicação são uma conta no Bluemix, um bot desenvolvido com o Watson Conversation e uma instância do Cloudant criada (se você não tem um chatbot dê uma olhada nesse outro post).

Passo 1 — Criando uma Action

  1. Acesse o console do OpenWhisk no Bluemix.
  2. Faça o login e clique em "Start creating" para desenvolver a partir do seu web browser.
  3. Clique em "Create Action" e na página seguinte clique em "Create Package", defina um nome para seu pacote.
  4. Preencha todos os campos dessa página como apresentado na imagem:

Na página seguinte você será apresentado a um código padrão, altere-o para o código que está nesse git e clique em "save".

Explicação do código

O código que você utilizou é bastante padrão, ele basicamente busca todo o json de configuração do seu bot (com o método getWorkspace na linha 35) e salva o resultado no Cloudant.

O único ponto de atenção desse código é colocar o parâmetro export como true na linha 28 pois do contrário você receberá apenas metadados do bot.

Parte 2 — Criando um Trigger

Com a action criada você precisa definir quando dispará-la, para isso criaremos um trigger periódico que será executado todo dia no mesmo horário (existem outras opções mas para este caso esse é o mais adequado).

  1. Selecione a opção Triggers do menu esquerdo e clique em "Connect Trigger".
  2. Clique em "Periodic".
  3. Defina os dias e horários que você deseja disparar a ação. ATENÇÃO! Na escolha da hora adicione sempre +3 ao horário que você deseja visto que eles consideram apenas o horário UTC. Você pode validar se o horário está correto visualizando a coluna da esquerda logo abaixo do item "Periodic".
  4. Clique em "Create & Connect".
Na imagem selecionei todos os dias da semana as 19h20.

Parte 3 — Adicionando suas credenciais

Para que o seu código funcione corretamente você deve passar as credenciais do seu chatbot e do seu banco (se você ainda não criou, crie um banco de dados no cloudant).

  1. No menu da esquerda clique em "Default Parameters" e então clique em "Add Default Parameter" sete vezes para que você possa popular todas as variáveis.

Os três primeiros parâmetros são as credenciais para o seu banco de dados, sendo CLOUDANT_DBNAME o nome do banco que você criou. Já os quatro últimos parâmetros são as credenciais para o seu Conversation, sendo WDC_PREFIX um identificador para os seus logs.

Pronto! A sua action já está funcionando e todo dia naquele horário especificado você terá um backup do seu workspace.

Fine-Tuning

Você ainda pode clicar em "Runtime" no menu esquerdo e selecionar algumas opções que limitarão os gastos da sua aplicação.

O Timeout em 10 segundos faz com que se a aplicação não finalizar em até esse tempo ela será ser abortada independente do resultado (isso evita que ela consuma muito caso entre em algum tipo de deadlock). Já a memória em 128 MB reduz o gasto pois não precisaremos processar nada muito pesado.

— — —

Links de Referência

--

--