Blog
maio 10

Ontem foi louco: correndo para lançar um serviço enquanto estava no carro indo pra reunião

O título deste textão já diz tudo, ontem foi um dia louco em que eu corri pra lançar um serviço enquanto estava no carro indo para a reunião de apresentação. Como você já deve ter percebido – se você já me segue a um tempo -, eu não bato muito bem da cabeça, não tenho medo de arriscar e definitivamente acredito que a vida é curta demais para viver sem estar em beta.

O que isso significa? Significa estar a uma hora de uma grande apresentação e resolver instalar uma nova versão do Windows que acabou de sair para quem está no Windows Insider. Quais as chances de dar erro, você me pergunta? Muitas. Pra começar o timing, só Deus sabe quanto tempo meu computador vai demorar para atualizar para o novo Windows, e ainda tem o tal do Morphy que criou uma tal lei que fazia o ambiente da padaria, sem bateria e sem internet, ser o ambiente perfeito para dar merda.

Ontem, entretanto, cheguei no ápice. Me orgulho disso? Sim. Deveria? Provavelmente não. Mas no fim deu tudo certo, pareceu uma cena de um filme onde tudo acontece no último minuto. Como é bom esse sentimento. Pra explicar um pouco, deixe-me dar um pouco de background técnico para você.

Eu estou em uma startup chamada Olá Wolff e nela nós estamos construindo um chatbot para facilitar a abertura de empresas. Esse chatbot está ficando cada dia maior e cada vez mais irá crescer, então para que tudo flua bem precisei criar um ambiente/servidores/DevOps que colaborassem para o crescimento exponencial que está por vir.

Isso significa que na última semana eu montei três ambientes para o nosso bot: o ambiente de Produção, de Testes e Apresentação e o ambiente de desenvolvimento. Mais do que isso, a integração contínua destes ambientes e as regras e políticas de negócios para cada um deles. Como o próprio nome diz, o ambiente de testes e apresentação será destinado ao que daqui a pouco vai chegar para o ambiente de produção.

Ok, só pra dar nomes aos bois, ambiente de produção é onde o serviço/aplicativo está. Ele é onde o usuário entra e ali é um lugar sensível e tudo precisa ser feito com precisão cirúrgica pois não queremos que o aplicativo saia do ar nem que haja problemas nele. Esse é o ambiente de produção e não queremos problemas nele, então, antes de chegar um código novo com aquela função hipermega legal, ela precisa passar por um ambiente de testes.

Para o nosso projeto, no Olá Wolff, o ambiente de testes é o mesmo do ambiente de apresentação. É isso mesmo, é o mesmo ambiente que usamos para mostrar o produto para possíveis investidores, para parceiros, para empresas interessadas e até semostrações ao vivo – assim a gente consegue esconder o que estamos desenvolvendo do que você está vendo… Temos sempre uma carta na manga.

Agora que você já entendeu como o projeto está organizado, entenda a minha loucura. Ontem foi o dia da entrega do MVP. Não, não é a entrega do prêmio… Bem que poderia ter um cerimônia do tipo Oscar, mas não é sobre esse MVP que eu estou falando. Estou falando do menor produto viável (ou MVP). Esse MVP chegou para o ambiente de testes e apresentações ontem.

O código estava pronto – em partes, faltava só a publicação dele. 30 minutos antes da mega importante reunião, eu comecei a configurar o ambiente de apresentação (e o Release do Visual Studio Online). Que na verdade foi 10 minutos após terminar de ajustar o ambiente de desenvolvimento. Ótimo, o site do desenvolvimento está rodando, falta agora a beta.

Todas as configurações feitas, estava revisando e encontrei um problema – se eu publica-se ali o banco de dados não funcionaria. Meu telefone toca, o CEO do projeto já está no carro me esperando para ir para a reunião. Peço mais 5 minutos. 5 minutos concedido, iriamos atrasar na reunião. Muda a string de conexão, clica em salva e sai correndo. Ainda não estava pronto.

Chegamos na tal reunião, e eles iriam atrasar um pouco, ufa! Pelo menos vou ter um tempo de finalizar isso daqui. Roteei a internet do meu celular, abri meu computador, comecei a digitar feito um louco, dei merge de duas branches na branche da beta, removi o código que não seria publicado. Liguei para o outro desenvolvedor do projeto e pedi para que ele fizesse isso na branche que ele estava mexendo. 5 minutos e estava tudo ok. Hora de jogar para o servidor. O código chega no VSO, compila sem problema, mas na hora da publicação foi o contrário.

Então, no Visual Studio Online, nós temos algumas releases/publicações, todas elas trabalham somente com um contexto (Enviroment), mas nessa, que é junção de todos os contextos do nosso chatbot (API, Chat, Web e outras coisinhas), nós temos 4 contextos com 2 artefatos vindo de dois repositórios diferentes. Organizar isso não foi fácil em 30 minutos, e é óbvio que iria dar problema na hora da publicação. Dois contextos estavam com problemas. Conserta rápido. A secretária diz que a nossa reunião iria começar em menos de 5 minutos. Clica em Publicar/Release e roga pelo melhor.

A reunião se inicia, o CEO está comentando alguns pontos importantes do nosso serviço. Enquanto isso vejo a notificação no meu celular dizendo que, e eu cito: “A publicação (versão 1.1805.3_prerelease) foi enviada com sucesso para o ambiente beta”. Foi um alívio e ao mesmo tempo não. Toda a publicação foi feita, mas estamos falando de um código novo, com uma publicação feita nessa correria, o medo? De ter quebrado o bot.

Usamos essa expressão no escritório para informar quando a web não consegue conversar com o bot, geralmente é por não ter passado a string de conexão correta para a API ou a API não ter ligado bem com os serviços cognitivos (LUIS + Azure). Não tinha como saber, não havia ainda criado o teste para validar isso.

Chegou a hora de apresentar. Minha vez de falar. Abro o navegador e digito a URL do nosso serviço, e bum! [para efeitos de suspense, segure a leitura por alguns segundos]

Estava funcionando lindamente.

About The Author

I don't dream, I do a lot of things. Sou desenvolvedor Windows e Web, tenho o título de Windows Insider MVP (Anteriormente Microsoft MVP: Windows Experience). Sou escritor, programador, artista, mágico e inventor.