quinta-feira, 26 de abril de 2012

A fragilidade da nossa infraestrutura de comunicação

Ontem, 25/04/2012, foi um dia que espero que continue atípico. Devido a um rompimento de cabos de fibra óptica, os estados do Paraná, Santa Catarina, Rio Grande do Sul e parte de São Paulo ficaram com a conectividade à Internet limitada ou interrompida, além de sem telefone e celular. (Mas, por incrível e irônico que seja, o meu Twitter funcionava...)

Quem conhece um pouco da história da Internet sabe que ela foi preparada para circunstâncias de guerra, permitindo uma comunicação continuada mesmo que vários enlaces e roteadores fossem comprometidos. Se uma parte da rede ficasse indisponível, automaticamente o tráfego seria desviado para uma rota alternativa para chegar ao destino. A qualidade poderia ser afetada, mas a comunicação não seria interrompida.

Tudo muito bacana na teoria, mas evidente que o modelo de continuidade pressupõe a existência de rotas alternativas. Não é o que testemunhamos com o incidente de ontem. Se um único segmento de fibra óptica rompido provocou toda essa indisponibilidade, imagino o quão precária e deficitária é a nossa infraestrutura de comunicações no Brasil.

Suponho que por falta de planejamento ou avareza não havia e não há nenhum enlace de contingência ligando os estados afetados ao restante do mundo. Esta alternativa já é dolorosa o suficiente pra mim. Pois a outra hipótese, a de que havia um enlace alternativo - mas que foi enterrado junto com o enlace principal - é muito pior: o único termo que me vem à cabeça chama-se burrice (mas com o devido respeito aos equinos). Escolho acreditar na primeira alternativa.

Temos realmente que evoluir muito. Pagamos absurdos por conexão à Internet, mas como provado, a qualidade de serviço que recebemos não está à altura do preço.

E pra finalizar: GVT, instale um enlace de contingência passando por outra rota, por favor...

sexta-feira, 20 de abril de 2012

Estabilidade do build utilizando o Maven

Maven: A person who has special knowledge or experience; an expert.
O Maven é uma ferramenta de build fantástica. Não é perfeita, pois como estamos cansados já de discutir, não existe esse conceito de ferramenta, linguagem etc perfeito. Contudo eu particularmente considero que 95% das pessoas que reclamam do maven é porque não sabem utilizá-lo. Os outros 5% talvez tenham razão.

Algo que contribui e muito para as reclamações sobre o maven são a infinidade de poms de dependências mal feitos (provavelmente criados pelos 95%). Infelizmente, eles são muito mais comuns do que o tolerável.

Outro problema crítico para qualquer equipe de software é a estabilidade do build. O maven "baixa" as suas dependências através da Internet - por padrão através de repositórios públicos. Se o seu projeto é "novo", sem problemas. As dependências estarão lá. O problema é garantir que estas mesmas dependências estarão presentes daqui a 2, 3, 5 ou 10 anos. O que aconteceria se alguém resolvesse "apagar" aquelas dependências (já que os repositórios são controlados por terceiros, e não por você)? Resultado: build quebrado.

Para nossa sorte há uma categoria de software que resolve os "problemas" do maven acima citados: os gerenciadores de repositório. Nesta categoria enquadram-se o Nexus e o Artifactory. O Nexus é mais antigo, e tenho trabalhado já há um bom tempo com ele. O Artifactory é mais recente e em 2011 ganhou um Duke Award da Oracle. Algumas comparações baseadas na minha experiência:
  • O Nexus, por ser mais antigo, é mais popular. O repositório central do próprio maven passou a utilizá-lo recentemente. O mecanismo de busca do repositório central do maven utiliza-o (Obrigado ao @aldrinleal pela correção!)
  • O Nexus possui um consumo de memória menor. O heap da minha instalação é de 64MB. No site do Artifactory recomenda-se 300MB.
  • O Artifactory é transacional. Isso faz com que qualquer atualização dos repositórios seja bem sucedida ou não sucedida. Não há estado inconsistente - que (dizem, não sou testemunha) ocorre com o Nexus (o Nexus utiliza somente arquivos).
  • O Nexus utiliza somente o sistema de arquivos. O Artifactory precisa de um banco de dados (por ser transacional).
  • O Nexus armazena cópias repetidas do mesmo arquivo que existem em repositórios diferentes. O Artifactory armazena somente uma e a referencia em repositórios diferentes (menor consumo de espaço).
Ambos funcionam bem. Escolher um ou outro passa a ser uma questão de gosto. O importante é escolher um e utilizá-lo. Mas como estes gerenciadores resolvem o problema do maven?
  • Se há um pom.xml mal feito num repositório público, você mesmo pode corrigi-lo e fazer o upload no seu Nexus ou Artifactory. Assim, os seus projetos utilizarão o seu pom.xml corrigido. Claro que você pode e deve contribuir sua correção para os autores de um projeto livre, mas se eles irão aceitar suas "correções" depende deles, e não de você.
  • O Nexus ou o Artifactory realizam o download das suas dependências de repositórios externos e as salvam em seu repositório privado. Desse modo, mesmo que alguém desapareça com o repositório central do maven, ao menos as dependências do seu projeto estarão seguras no seu repositório local, garantindo a estabilidade do seu build.
Conclusão? Qualquer equipe de software consciente que trabalhe com o maven tem que utilizar um gerenciador de repositório. Escolha o seu.

quinta-feira, 19 de abril de 2012

O fim do jornal e a resistência fútil


Sim, o jornal morreu. Alguns moribundos ainda andam por aí, mas diminuem à medida em que os últimos amantes dos folhetins impressos também padecem.

Obviamente o título sensacionalista deste post relaciona-se com o papel jornal, e não com o jornalismo. O jornalismo como fonte de informações transformou-se bastante com o fim do papel - não pela sua falta, mas pelo fato de que ignorantes pretensiosos como eu passaram a também produzir informações que pudessem ser lidas por quem se interessasse. E acredite, por mais improvável que seja, há quem se interesse. Imagino que seja o seu caso, estimado leitor.

O modelo de negócios dos jornais nunca foi "vender papel", e sim publicidade e classificados. Hoje em dia o Google costuma abocanhar boa parte das verbas publicitárias e sites de classificados já preenchem um pouco da demanda provocada pelos internautas. A questão é: como manter a receita do negócio sendo que os consumidores de informação estão migrando para mídias digitais? O natural seria tentar criar atrativos para reter os leitores e transferi-los para a mídia digital (antigamente eu falaria Web, mas tablets e smartphones novamente mudaram o panorama).

Um jornal local da cidade de Maringá (onde resido atualmente) resolveu seguir o caminho contrário. Seu conteúdo "impresso" estava disponível em seu portal para quem se interessasse por acessá-lo. Recentemente, provavelmente devido às quedas nas vendas de papel jornal, decidiu por fechar o seu conteúdo online e restringi-lo somente para assinantes. Resultado? Eu simplesmente parei de acessar o portal, pois o pouco conteúdo local produzido que me interessava já não me estava mais disponível. Imagino que outros leitores tenham feito o mesmo e também passaram então a acessar outros sites que disponibilizassem informações locais.

Desse jeito, esses poucos moribundos desaparecerão antes do esperado...