A saga de botar um sistema no ar

No último dia dos namorados, Bethania, espertinha, me deu de presente um par de ingressos para assistirmos um show do The Bad Plus. Detalhe: o show era, “coincidentemente”, em Nova Iorque, onde “coincidentemente” tem os shows da Broadway que ela adora assistir. Coincidências à parte, foi um presentão, já que nós dois adoramos visitar essa cidade absolutamente foda que é NY.

Só tinha um problema: a data do show, coincidentemente, era a mesma data do “go live” do projeto em que estou trabalhando no banco. É a data onde tudo que passei meses fazendo ia, finalmente, ser colocado em produção e processar 500 mil registros de financiamento imobiliário que o cliente está esperando há um tempão.

Pra piorar, aqui no banco, por questões de segurança, quem desenvolve os sistemas não pode ter acesso a eles depois que são colocados em produção, então toda atualização é feita via um método “toma que o filho é teu” onde eu mando um pedido com todas as instruções de como botar o troço no ar pra um outro cara fazer.

Pra piorar ainda mais, meu sistema depende de outros componentes que, há meses, me dão dor de cabeça. Os mais críticos são:

  • Atualizações do “Sarcófago”: um banco de dados super antigo, cujo processo de atualização é um grande mistério, passado apenas via tradição oral (ou seja, sem documentação) entre os grandes anciões (ou seja, os caras que trabalham no banco há décadas)
  • Acesso à “Nuvem Mágica”: um sistema de mensagens, super moderno, propriamente documentado e que roda na “nuvem”. O problema desse aqui não é técnico, é que meu time tinha um cara pra lidar com ela – o “Salim” – e o Salim não entende nada da Nuvem, mas no processo de fingir que sabe, me repassa informações erradas sobre como conectar com a Nuvem 100% das vezes.

Meu gerente de projeto tava sossegado e falou: “Tá tranquilo! A gente bota tudo isso aí no ar na noite anterior à da sua viagem”. Depois dessa frase eu percebi que não poderia contar com a perspicácia do meu GP pra essa história dar certo.

Pra evitar problemas com a Nuvem Mágica, eu que não sou bobo dei meus pulinhos pra achar as configurações certas com antecedência, sem depender do Salim, mas tinha uma delas que não tinha jeito: a senha de acesso à Nuvem. Por segurança, nenhum programador tem acesso às senhas dos sistemas de produção, então eu tive que pedir o Salim pra botar a senha certa pra mim num “cofrinho” de senhas que meu sistema usa na hora que vai pro ar. Vale lembrar que o Salim me passou senhas erradas 100% das vezes ao longo do desenvolvimento do projeto, então pra me garantir eu mandei um email com cópia pra meio mundo pedindo pra ele testar a senha de produção com antecedência, pra garantir que ela estava correta e que ela tinha as permissões de acesso à Nuvem Mágica, e ele respondeu que sim.

Quanto ao Sarcófago, eu também quis me antecipar e, na segunda-feira da semana da viagem/go live, fui consultar um dos anciões para saber se eu poderia mandar atualizar o Sarcófago com mais antecedência, pra minimizar a chance de dar merda. E foi aí que a merda começou, porque ele virou pra mim e disse:

“Então… as tradições dizem que o Sarcófago só pode ser atualizado no final de semana, e o comitê que aprova atualizações do Sarcófago precisa de 48 horas de antecedência”

Fui contar isso pro meu gerente de projeto e ele nem se lembrava que precisava atualizar o Sarcófago. Mas, muita discussão depois e eles finalmente concordaram em abrir uma exceção para atualizarmos o Sarcófago na noite de quarta pra quinta. O duro é que ficou tudo pro mesmo dia: Sarcófago na noite de quarta, meu sistema na manhã da quinta e, no mesmo dia, eu embarcando pra NY.

Na quarta eu deixei as malas prontas, fui dormir e, às cinco da manhã, já estava de pé pra checar a atualização do Sarcófago, que… não rolou. Confuso, entrei em contato com um dos anciões, que me disse o porquê da atualização não ter sido feita:

“Então… as tradições dizem que, ao fazer seu pedido de atualização do Sarcófago, no dia da atualização você precisa ir lá no formulário de pedido e acrescentar um comentário dizendo: ‘Por favor, prossigam com a atualização do Sarcófago’, e como você não fez isso o Sarcófago não foi atualizado”.

Eu JURO pra vocês que foi isso que me disseram.

Aí todo mundo se juntou novamente e meu chefe sugeriu botar meu sistema no ar sem Sarcófago sem nada, pra eu poder finalmente viajar. Uma ótima ideia, não fosse pelo fato de que teríamos que agendar a implantação pra depois do horário de expediente bancário, que termina às 16:30… e meu voo tava marcado pra decolar às 17:30. Aí começou a gincana: fui com o laptop aberto de casa até o aeroporto, trabalhando do trem para preparar todas as instruções pra deixarem tudo certinho pro troço ir pro ar.

Depois de muita correria – incluindo uma conference call na fila do raio X – às 16h estava eu, finalmente, sentado na sala de embarque, olhando pra tela do computador, esperando a implementação começar. Nessas horas eu dei graças a Deus de estar dando minhas corridas na academia e em boa forma cardiovascular porque, meu amigo, eu tava com o coração na boca. Se tudo funcionasse, tanto eu quanto o sistema entraríamos no ar sossegados, mas se desse pau, eu ficaria offline em algum lugar da estratosfera por quase duas horas, roendo as unhas, sem saber o que rolou.

Pontualmente às 16:31 a minha tela começa a piscar, indicando que a publicação começou. O painel de controle que mostra o status da coisa é uma das poucas coisas de tecnologia da vida real que é parecida com a dos filmes: tem uma lista de etapas e cada uma tem um farolzinho que vai ficando verde conforme elas vão concluindo…

Fazendo download do arquivo de configurações....... OK!
Gerando arquivo com credenciais de segurança....... OK!
Estabelecendo conexão com servidor................. OK!
Enviando arquivos.................................. OK!

E aí tava tudo ficando verdinho… e o coração acelerando… até chegar na última etapa:

Iniciando aplicação...

Olhei pro meu portão de embarque. Pela primeira vez na vida, eu queria que meu voo atrasasse. Depois de uma longa pausa, eis que o último farolzinho finalmente muda de cor… e fica vermelho.

Aí olhei pro portão de embarque e, para minha alegria, o horário do voo atrasou meia hora… mas como alegria de pobre dura pouco, o portão mudou pro outro lado do aeroporto. Desesperado, fui catando as malas/mochilas e, ao mesmo tempo, tentando ver o que foi que tinha dado errado na aplicação. Parecia que o problema era – adivinha só! – na senha de acesso à Nuvem Mágica. Aí fui conversar com o Salim, o colega que deveria ter colocado a senha certa no sistema pra mim:

_ Salim, deu pau na senha da Nuvem Mágica.
_ Ah tá. Você tem a senha?
_ Eu não posso saber essa senha, Salim, lembra?
_ Você tem o aplicativo pra enviar senhas encriptadas por email?
_ Não, Salim, eu não posso ver essa senha, se a auditoria pega isso vai dar problema…
_ Peraí que eu vou te mandar aqui no email normal mesmo então…
_ Não, peraí Salim…

E aí minha caixa postal apita e chega a senha. Bom, pelo menos tá registrado que eu avisei, e já que ele mandou a senha eu aproveitei pra testar e confirmar que, sim, a porra da senha tava errada.

Nisso eu já estava correndo pro outro lado do aeroporto e com o laptop aberto na mão. Aí chega um email do meu chefe, que recebeu a notificação de que o go live falhou:

_ Hey Joe, vi aqui que deu pau… não era pra você estar viajando já?
_ Tou na sala de embarque… parece que o Salim não tem a senha certa pra Nuvem Mágica.
_ Hmm… se eu te mandar isso aqui, ajuda?

E eis que meu chefe me encaminha a senha certa da Nuvem Mágica, também por email, sem criptografia sem nada. Subitamente, todas as minhas preocupações com segurança da informação e auditoria desaparecem(1).

Finalmente chegamos no portão de embarque e nem tinha fila, porque todo mundo já tava dentro do avião. Eu não sei como, mas num espaço de trinta segundos eu consegui encaminhar o email com a senha certa pro cara que estava botando o sistema no ar, fechar o laptop, pegar meu passaporte e embarcar. Mas ainda tava todo mundo em pé no corredor do avião porque não tinha lugar pras malas, e o ar condicionado tava desligado, e no assento da nossa frente tinha um casal com uma menina cujo desodorante havia vencido há pelo menos uma semana(2), e tudo que eu queria naquele momento era saber se a porra do sistema tinha ido pro ar, e eu só teria o espaço de alguns minutos pra conseguir checar antes do voo decolar.

Depois de muitos “excuse me” e “sorry” e de brincar de Lego com as malas no bagageiro eu tapei o nariz, abri o computador e eis que lá está outro email do chefe:

“Publicação concluída com sucesso. Boa viagem, Joe!”

Eu mal conseguia acreditar. A bagaça estava no ar. O meu trabalho dos últimos três meses finalmente nasceu e viu a luz do dia.

A primeira parte da saga estava concluída. Ainda faltava a atualização do Sarcófago, mas eu estava mais tranquilo porque botaram um dos anciões pra tomar conta dela, e da minha parte era só mandar reiniciar meu sistema pra ele se reconectar com o Sarcófago e capturar as novas atualizações. Moleza, certo?

A saga de botar um sistema no ar – PARTE 2

Ah, Nova Iorque. Como é bom estar rodeado de turistas o tempo todo e ouvir uma buzina a cada 30 segundos.

Passamos o dia curtindo a cidade, relativamente despreocupados. A única coisa pendente de trabalho pra mim seria conferir, à uma da manhã, se reiniciaram meu sistema pra ele pegar as atualizações do Sarcófago. No fim do dia fomos ver um show da Broadway e chegamos tarde no hotel, aí nem fui dormir e fiquei fazendo hora até dar o horário.

Pontualmente à uma da manhã lá estava eu, olhando para os faroizinhos que deveriam piscar indicando que meu sistema estava sendo reiniciado. E os faroizinhos, dessa vez, não ficaram vermelhos. Na verdade, eles nem mudaram de cor, o que indicava que nada estava acontecendo. Pra piorar, o cara que iria reiniciar o sistema (chamado “Ted”) nem online estava.

Chamei um dos anciões, que também estava acordado, terminando a atualização do Sarcófago:

“Cara, cadê o Ted?”
“Pois é… vamos esperar um pouco”

Meia hora depois e nada do Ted. E ninguém tinha o telefone do Ted. Tínhamos o do chefe do Ted, mas ele não atendeu. Aí, para minha vergonha, ligamos pro coitado do meu chefe, que também não tinha o telefone do Ted. A coisa entrou num nível tão Trapalhões que saímos fuçando a intranet e abrindo planos de implementação de sistemas antigos pra ver se, em algum deles, constava o telefone do Ted. Obviamente não deu certo e, lá pelas três da manhã, meu chefe mandou todo mundo voltar a dormir e tentar de novo às sete da manhã.

Óbvio que não consegui dormir.

Só lá pelas oito da manhã alguém finalmente achou o Ted, que finalmente reiniciou o meu sistema, que finalmente pegou as atualizações do Sarcófago.

Finalmente eu poderia tomar um banho e sair para morrer de sono nas ruas de aproveitar Nova Iorque. O resto do time ia continuar online, e iniciar o processamento dos 500 mil registros que iriam para a Nuvem Mágica. Enquanto eu tirava meu pijama o pessoal mandou o primeiro registro, só pra testar, e então…

A saga de botar um sistema no ar – PARTE 3

Eu considero que a minha melhor qualidade como engenheiro de software é que eu sou pessimista. Em tecnologia não existe o “vamos torcer pra dar certo”: o bom engenheiro parte do pressuposto que vai dar merda e então medita profundamente sobre a merda: seus possíveis formatos, locais e formas de atuação. Aí, o bom engenheiro desenha sua solução centralizada na merda, com todos os recursos para evitá-la quando possível ou, se ela é inevitável, para fazê-la feder menos quando acontece. E quando o trabalho de conhecer e mitigar a merda está concluído e os engenheiros júniores estão orgulhosos da resiliência do seu trabalho, o engenheiro sênior ainda está preocupado, então ele vai lá e executa o último e importante passo de deixar prontos todos os recursos para identificar, facilmente e rapidamente, as futuras merdas que ele sabe que não pode prever.

Foi por isso que, mesmo sem dormir, seminu, em outro país e usando internet de hotel, demorei apenas trinta segundos para identificar o que havia de errado quando o povo do projeto saiu gritando que o registro que mandaram não apareceu na Nuvem Mágica. É que agora tínhamos a senha certa da Nuvem Mágica, mas não tínhamos as permissões para enviar informações para ela.

Lembra que, na semana anterior, eu tinha mandado um email pro Salim pedindo, explicitamente, pra ele testar a senha e as permissões de acesso à Nuvem Mágica, e ele disse que tava tudo OK? Pois é, não estava. E agora lá estava eu, lidando com a merda do Salim.

Aí pulou todo mundo junto numa conference call pra ver o que tinha acontecido. Salim continuava insistindo que havia pedido pra liberarem as permissões pro nosso usuário, até que um outro programador menciona que estava copiado no email do pedido e que alguém havia digitado errado o nome do servidor da Nuvem Mágica: botaram o servidor de desenvolvimento, ao invés do de produção.

Mas Salim é o pior tipo de idiota, que é o idiota mal intencionado (também conhecido como filho da puta). Então ele, magicamente, começa a botar a culpa do erro na equipe que toma conta da Nuvem Mágica. Pra piorar, demorou quase uma hora e meia pra conseguir entrar em contato com a pessoa do time da Nuvem Mágica que estava de plantão, o que deu ainda mais munição pro Salim. E eu lá, pendurado no telefone, esperando alguém consertar as permissões.

Bethania foi bastante compreensiva, saiu do hotel pra comprar o nosso café da manhã e também pra entrar na fila da TKTS pra comprar ingressos da Broadway(3). E eu entrei no banho e deixei o telefone no viva-voz, pra ouvir o povo batendo cabeça na conference call, e o Salim botando a culpa no time da Nuvem Mágica pela cagada dele mesmo, e vendo a verdade do que aconteceu se perdendo na confusão. Lá pelo meio-dia meu saco, finalmente, encheu. Peguei o telefone e falei:

“OK gente, eu já mandei pra vocês o usuário e as configurações que eu tenho e vocês confirmaram que está tudo certo. Eu estou em Nova Iorque e tenho aqui comigo uma esposa brava e ingressos para um show da Broadway daqui a uma hora. Não tem nada mais que eu possa fazer do meu lado. Qualquer coisa me liguem.”

A parte da “esposa brava” foi só para impacto emocional mesmo, já que Bethania, como sempre, foi super parceira durante todo o ocorrido. Já a parte do show ela fez questão que fosse verdade :), então pegamos o metrô e fomos pra Broadway.

Como bom engenheiro que sou, todos os meus recursos de monitoramento de merda estavam disponíveis também no meu celular, então no intervalo do show abri o link de monitoramento do meu sistema e – surpresa! – tinha um registro enviado com sucesso para a Nuvem Mágica. Alguém finalmente consertou as permissões.

Mandei uma mensagem pro meu gerente de projeto:

“Hey, tou vendo aqui que a Nuvem Mágica voltou a funcionar. Vocês vão rodar os 500 mil registros agora né?”
“Então… agora tem um outro problema em outro sistema, o que lê os registros da Nuvem Mágica, e esse não tem como solucionar agora, então vamos abortar tudo e fazer o processamento só na semana que vem”.

A correria na sala de embarque, a noite não dormida e as seis horas de conference call na manhã do Sábado serviram, portanto, para absolutamente nada. Mas o que realmente importa é que eu estava numa das cidades mais incríveis do mundo com a mulher que eu amo, então me desapeguei rapidinho do fiasco da história toda e fui, finalmente, aproveitar meu final de semana. E tomar mais um café, pra conseguir me manter acordado na cidade que nunca dorme…

Epílogo

Alguns dias depois dessa história toda, eis que eu recebo um email da chefe do Salim…

Oi pessoal. Informo que estou nomeando o Salim para o prêmio de performance deste semestre.

Oi?

A sua contribuição para o [nome do meu projeto] foi incrível, onde ele demonstrou sua habilidade e conhecimento da Nuvem Mágica. Ele colaborou com vários times, como o [nome do meu time e o outro time que também não conseguiu usar a Nuvem Mágica] para assegurar a conectividade dos sistemas de ponta a ponta. Ele verdadeiramente merece o prêmio do trimestre.

E então cumpriu-se a profecia que ouvi de um gerente de projetos, dez anos atrás, num projeto de consultoria no interior do Mato Grosso, que disse:

“Quem faz muito, erra muito. Quem faz pouco, erra pouco. Quem erra pouco… é promovido”

UPDATE

Durante uma das inúmeras conferências que fizemos durante o deploy, o gerente de projetos pediu desculpas por tomar o nosso tempo de viagem e perguntou qual o vinho preferido de Bethania. “Ela gosta dos pinots da Califórnia”, respondi, achando que ele estava me dando uma sugestão de como eu poderia amenizar o incômodo dela…

Outro dia, cheguei no trabalho e, na minha mesa, havia um belo pinot noir do vale de Sonoma, ingressos de cinema, e um cartão assinado pelo time todo agradecendo a minha dedicação ao longo do final de semana 🙂

Notas

(1) – Isso me lembrou um outro episódio aqui do banco onde um gerente de projeto queria que eu fizesse uma coisa num sistema. Quando mencionei que não tinha acesso, ele respondeu: “não tem problema, faz com o meu usuário”, e me enviou, por email, sem criptografia sem nada, a senha do seu usuário pessoal. Com isso eu conseguiria acessar não apenas o sistema que ele queria, como também todos os sistemas de produção que ele acessa, e ainda todos os seus emails, o seu salário, os seus arquivos da rede, os seus nudes, etc.

(2) – Já é a segunda vez que isso acontece quando voamos para Nova Iorque. Pelo visto o custo de vida por lá anda tão alto que falta dinheiro pra desodorante.

(3) – A Bê, que tem praticamente doutorado em musicais da Broadway, me ensinou que tem dois jeitos de ver shows pagando muito menos do que o preço cheio dos tickets.
O primeiro e mais fácil deles é comprar na TKTS, que fica debaixo daquela arquibancada vermelha na Times Square. Tem também outra TKTS no Financial District, bem no sul de Manhattan. Vale a pena chegar próximo da hora que abre, porque obviamente dá fila. Veja os endereços e horários online. A disponibilidade é limitada, mas você consegue descontos de 20% a 50%.
O segundo jeito é comprando os chamados rush tickets, que são meio que uma “sobra” de ingressos que o teatro não vendeu por algum motivo e que são colocados à venda só no dia do espetáculo a preços muito reduzidos. Mas dá trabalho comprar: você precisa ir à bilheteria do teatro com antecedência, perguntar se eles tem rush tickets e que horas a venda começa, e aí chegar lá no mínimo uma hora antes pra ficar na fila. Não tem como escolher lugar e pode ser que não tenha ingressos suficientes pra quem está na fila, mas se tudo dá certo você compra com tipo 70% de desconto, então vale a pena.