Já reparam como, em todo filme de super-herói tipo gênio (Homem de Ferro, Homem-Aranha, Quarteto Fant, eles sempre produzem as traquitanas mais loucas e complexas da noite para o dia? Na boa, meus amigos, eu já construí robôs do zero, e posso garantir que não tem nada de fácil! Desde desenhar o circuito eletrônico, calculando todas as especificações, até codificar o programa de controle, passando por simplesmente tudo – desenhar a placa de circuito impresso, corroê-la, furá-la, comprar os componentes, soldar, montar a parte mecânica, calibrar, interfacear…

Não é nem remotamente fácil.

Mas tudo bem, certo? Afinal, é só fantasia, ficção, filmes.

Essas histórias contam com uma coisa chamada suspension of disbelief. Sem isso, veríamos a história na tela e pensaríamos “que bobagem!” Com a “suspensão da descrença” podemos ver o Tony Stark construir uma armadura voadora, e não achar mada demais. Mas tudo tem limites, mesmo uma coisa tão poderosa como esse sentimento de faz-de-conta. Se a história for muito sem pé-nem-cabeça, muito forçada, a coisa perde a graça. Você talvez já tenha assistido alguma destas comédias que tiram sarro dessas situações. Eu lembro de ter visto uma – não me lembro o nome – em que o cara passa por um mega-treinamento e aprende a fazer tudo. No final daquela cena que, normalmente, é um condensado de meses no tempo do filme, percebemos que passou-se apenas o tempo de tela, ou seja, alguns minutos. Bom, esses casos “forçam a barra”.

Para manter alguma credibilidade, esses filmes tentam mostrar como a coisa seria se fosse real, mesmo que apelando para outra coisa quase tão inverossímel quanto a primeira.

Quer um exemplo? Ainda no Homem de Ferro, o mesmo Tony Stark desenvolve a armadura e testa os vários subsistemas até chegar em um protótipo. Depois ele passa uma revisão no projeto e manda o Jarvis construir e montar a versão final. O que vemos é um cara designado como gênio usando ferramentas avançadas – incluindo um computador com a personalidade do Máximo e um braço mecânico com a inteligência do Babão – para apoiá-lo no processo. Essas ferramentas são tão inverossímeis quanto a própria armadura, mas aceitamos que, de posse delas, a possibilidade de uma super-roupa voadora é algo concreto.

Existe algo de muito valioso nessa massaroca fantasiosa: o conceito de automação no desenvolvimento.

Seja Preguiçoso

Como é seu processo de desenvolvimento? O tema do blog é BI, mas pode estender a pergunta a qualquer assunto: código, web design, marcenaria – o que for.

Muita gente faz tudo na mão, pelo menos as pessoas que eu tenho visto. A maioria sequer usa um repositório para versionar os artefatos, menos ainda qualquer outro recurso. Testes, então, espere o cliente reclamar. Não veio reclamação? Comita e era isso! :-)

Eu sempre digo que sou preguiçoso, er, prático. Eu prefiro dedicar minha energia a coisas que computadores não conseguem fazer, ainda, e deixar para eles coisas para os quais estão preparados, como tarefas repetitivas.

Quem já se envolveu em um projeto de Software Livre sabe como é que a banda toca (em geral): um repositório central de código é monitorado por vários sistemas de apoio. Há sistemas que partes do sistema sempre que um novo trecho de código é comissionado (commited, ou na corruptela “comitado”), e que periodicamente compilam o sistema inteiro (em geral à noite, gerando os tais nightly builds). Outros que, após a compilação parcial ou completa, rodam testes contra os resultados, e automaticamente registram os bugs encontrados, ou atestam o sucesso do build e assim por diante.

Até hoje eu não vi coisa equivalente para BI. Porquê? Não sei ao certo.

Existem três divisões principais que uma iniciativa de BI executa:

  • DW: processo de modelagem e ETL;
  • Bancada: é o termo genérico para descrever as interfaces de exploração de dados. Por exemplo, um esquema Mondrian para o Pentaho, um [projeto MicroStrategy][projetomicrost_bitly], um [universo do Business Object][bouniverse_bitly];
  • Data Mining: processos de organização, limpeza e análise de dados em busca de padrões.

Provavelmente não existe muita automação em projetos de BI porque esses três aspectos são difíceis de automatizar. Como automatizar, por exemplo, a construção de uma bancada MicroStrategy (só para sair um pouco fora do confortável mundo do Pentaho)? Como montar um teste para validar esse mapeamento?

Difícil…

tivas Tarefas Repetitivas Tarefas Repeti

… mas não impossível. Se observarmos o nosso trabalho diário de desenvolvedores de soluções de BI, vamos acabar percebendo tarefas que executamos várias vezes.


Vou usar o universo de coisas do Pentaho porque posso falar dele com mais propriedade, mas existem equivalentes em todas as outras ferramentas.


  • Rodar uma transformação, para ver se dá pau ou não;
  • Rodar o job de refresh, para saber se vai até o final, ou se pára em algum ponto;
  • Truncar ou dropar/recriar tabelas;
  • Subir a nova versão do esquema Mondrian/Metamodelo no servidor;
  • Testar essas novas versões, primeiro rodando uma consulta simples, para ver se tudo continua funcionando e depois uma coisa mais complexa, para testar os mapeamentos;
  • Medir os tempos de várias atividades e comparar com as médias das medidas anteriores, em busca de problemas de performance;
  • Subir o servidor, baixar o servidor;
  • Atualizar a produção com as novidades desenvolvidas.

E se estamos trabalhando em dois projetos mais ou menos ao mesmo tempo, a coisa fica ainda pior. Raramente projetos diferentes possuem as mesmas configurações, o que nos obriga a reconfigurar o ambiente de desenvolvimento para tratar cada projeto.

O fato é que muitas destas atividades, que levamos a cabo corriqueiramente, sem pensar duas vezes ou se importar com seu “custo”, podem ser automatizadas.

“E daí?”, perguntar-me-ão vocês. Que vantagem haveria em automatizar coisas tão simples ou rápidas? E daí que preciso de dois ambientes (representados em dois BI Servers) diferentemente configurados?

A resposta não é simples. Mas pense em como você fazia as coisas há uma década atrás. Lembra-se do barulho do modem? E hoje? Lembra-se dos clientes de e-mail? E hoje? Essas coisas não mudaram à toa. Ferramentas novas surgiram, novas formas de fazer as coisas vieram à luz. Ninguém pensaria por um segundo em voltar a viver como dez anos atrás.

E essa é a vantagem de você se preocupar com esses pequenos detalhes dos projetos, com as pequenas vantagens que podemos conquistar ao investir um esforço em fazer algo de forma diferente.

Ecossistema de Ferramentas

Existem diversas ferramentas que podem incrementar algum aspecto de projetos de BI. De novo eu vou recorrer ao Pentaho, para estudo de caso, mas reforço que qualquer ferramenta de BI pode ser tratada por essas técnicas.

Eis aqui duas idéias de como melhorar o desenvolvimento de projetos de Business Intelligence.

Servidores

O recurso de desenvolvimento mais trivial para um projeto de BI com Pentaho é o BA Server. O segundo recurso mais trivial é um banco de dados, que funciona como Data Warehouse. Cada projeto de BI com Pentaho requer um banco como DW e um servidor configurado particularmente.

A ferramenta Vagrant foi criada para melhorar a gestão de ambientes de desenvolvimento. Construída em cima de um hipervisor, como VirtualBox ou VMWare, podemos programar um ambiente de desenvolvimento, e ativá-lo/baixá-lo com um comando tão simples quanto vagrant up.

Podemos montar ambientes mono- ou multi-servidores. Com software livre ou proprietário, com qualquer combinação de programas e parâmetros. Podemos compartilhar uma configuração Vagrant via repositório, que pode ser recuperada por qualquer membro do projeto e ter exatamente a mesma configuração para QUALQUER membro do projeto.

Ainda melhor, podemos usar essa mesma configuração para provisionar servidores em produção.

Já pensou? Ambiente de produção 100% igual ao de desenvolvimento? Mais ainda: versionável?

Não é pouca coisa, vocês hão de convir.

Integração

Sempre que um pedaço do projeto é alterado, há um risco de algo se quebrar. Sempre que uma nova transformação é incluída no job de refresh do DW, algo pode espocar ali no meio – da memória da JVM à janela de ETL. Por isso sempre precisamos re-executar tanto os pedaços quanto o todo do processo.

Um Software Livre chamado Hudson pode nos ajudar com algo muito útil. Grosso modo ele monitora um repositório como Git ou SVN e, periodicamente, puxa todas as atualizações do repositório e executa operações sobre elas. Por exemplo, executa algum script ou compila algum código-fonte.

Ao invés de testar os jobs e transformações manualmente, deixamos que aplicativos como o Hudson, chamados de servidores de integração contínua ou CIS. Essa categoria de produtos pode não apenas gerar relatórios sobre a qualidade dos testes, mas também disparar avisos por e-mail para os donos das peças problemáticas.

Conclusão

Não é fácil olhar o que fazemos e enxergar como poderia ser feito melhor, pois sofremos de “vício”. É como escrever um texto e revisá-lo: podemos pegar algumas falhas, pois há coisas que são erros óbvio, mas raramente vamos pegar todos ou quase todos os problemas. Ficamos “cegos” para alguns erros ou escolhas ruins. É importante mantermos o canal de autocrítica aberto, pois só assim estaremos aptos a desencavar oportunidades de melhorias.

Uma área ainda inexplorada em projetos de BI é o desenvolvimento com apoio de automação (AAD? Automation Aided Development? Isso existe?) É prática comum em desenvolvimento de sofwares, mas pelo que eu testemunhei em várias empresas, não existe em BI.

E porque precisamos nos preocupar com isso?


Dê-me seis horas para cortar uma árvore, e eu passarei as quatro primeiras afiando o machado. Abrahan Lincoln


Não acredito que seja preciso responder essa pergunta, mas outra forma de colocá-la é entender que se você foca só no desenvolvimento, full steam ahead, e nunca cuida dos seus instrumentos e ferramentas, então sua produtividade vai cair, não aumentar. Se você quer estar em projeto que entrega valor, em grande velocidade, então trabalhe como o Homem de Ferro, e deixe os computadores fazerem o que eles fazem melhor. ;-)

O campo da automação no desenvolvimento de BI é, praticamente, virgem. Quem tiver uma boa idéia, ou mesmo só uma idéia, vai sair na frente e fazer escola.

Não trabalhe como um noob. Develop like a hero! ;-)

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s