Versionando o Watson utilizando OpenWhisk e Cloudant
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.
É 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
- Acesse o console do OpenWhisk no Bluemix.
- Faça o login e clique em "Start creating" para desenvolver a partir do seu web browser.
- Clique em "Create Action" e na página seguinte clique em "Create Package", defina um nome para seu pacote.
- 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).
- Selecione a opção Triggers do menu esquerdo e clique em "Connect Trigger".
- Clique em "Periodic".
- 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".
- Clique em "Create & Connect".
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).
- 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