A construção do Comparação de Fundos (parte 2)

Leia a primeira parte deste artigo aqui.

O primeiro desafio para colocar esse projeto de pé era como se obter a base de dados com o histórico de rentabilidade e a evolução do patrimônio e do número de cotistas dos fundos brasileiros.

Esse post dá continuidade a série que compartilha a história do desenvolvimento do comparacaodefundos.com. No primeiro texto explicamos que a necessidade de poder avaliar os fundos de investimento em atividade no Brasil de modo simples e padronizado levou um dos sócios da Endowments do Brasil, Daniel Resende, a decidir começar um projeto de um site.

Foi aí que uma API (sigla para a expressão em inglês para Application Programming Interface, que na prática viabiliza trocas de dados entre servidores) resolveu um dos problemas. Essa API, disponibilizada pela CVM, permitiria que obtivéssemos os dados necessários para criar as interfaces do site. Além disso, quando tivéssemos um sistema que pegasse os dados oferecidos pelos servidores da CVM, poderíamos manter nossa base de dados atualizada. Começamos a trabalhar em janeiro de 2011 para criar esse sistema.

O desafio técnico de lidar com massas de dados gigantes

O serviço da CVM é muito bem documentado e em algumas semanas já éramos capazes de ter uma base de dados igual a da CVM para trabalharmos. Mas lidar com tamanha quantidade de dados foi um desafio.

Quando terminamos de colocar os dados em nosso banco de dados, essas informações somavam 1,2 GB. Para se ter uma idéia, o livro Alice no País das Maravilhas ocupa 145 KB para ser armazenado. Nossa base de dados equivalia a 8 mil livros do tamanho de Alice. Ler esses dados, fazer cálculos sobre eles, passar de um servidor para outro, tudo isso era um grande desafio que levava horas, em alguns casos dias.

Começamos então otimizar esses dados. Duas decisões foram fundamentais. A primeira é que abandonamos o banco de dados MySQL, que guarda os dados no disco rígido do servidor, e migramos para o Redis (http://redis.io). Trata-se de um projeto criado em 2009 pelo programador italiano Salvatore Sanfilippo. Seu grande diferencial é que ele guarda os dados na memória e não no disco, o que aumenta em algumas centenas de vezes a velocidade de acesso.

Com isso, consultar todos os valores de cotas de um fundo ficou muito mais rápido, tornando viáveis cálculos como o que gera o ranking dos fundos mais rentáveis num determinado período. Essa lista precisa pegar as cotas de todos os mais de 10 mil fundos em atividade para então fazer o ordenamento por rentabilidade. Esse processamento caiu de 10 horas para 15 minutos.

Outra vantagem do Redis é que a maneira como ele organiza os dados dispensa o uso de índice (dados que são duplicados para otimizar o acesso em bancos de dados do tipo do MySQL). Com a mudança na organização dos dados, conseguimos reduzir o tamanho da base de dados para algo próximo de 300 MB, bem mais razoável de se trabalhar.

Finalmente a interface

Depois de 4 meses de trabalho, estávamos com tudo pronto para começar a construir a interface. Esses quatro primeiros meses fizeram com que nós amadurecessemos o que queríamos.

O primeiro e mais importante ponto é que concordávamos que tínhamos que ter uma interface a mais limpa e clara possível. Nunca cogitamos, por exemplo, gerar receita para o site através de anúncios. Isso iria acabar com a experiência que gostaríamos de criar.

As telas do site são limpas, com espaço entre os elementos para facilitar o entendimento. Temos poucas e bem utilizadas cores. A tipografia é escolhida a dedo e implementada para gerar a maior clareza possível. Os títulos e textos dos controles são diretos, sem rodeios desnecessários.

Aos poucos nosso projeto começava a aparecer. Difícil descrever a alegria quando começamos a ver os primeiros gráficos e as primeiras tabelas funcionando.

Mas como todos os desafios, esse ainda tinha mais alguns percalços antes de estar pronto. E o problema que surgiu não era simples.

Como ser veloz e ter um custo viável

O comparacaodefundos.com é gratuito e pretendemos que continue assim. Ele funciona para nós como um grande vetor de conhecimento da nossa empresa de investimentos, a Endowments do Brasil, o que é ótimo. Mas para que fosse viável torná-lo aberto, precisávamos que o custo necessário para ele funcionar fosse condizente com nosso plano de investimentos.

Nossos primeiros testes mostraram que para que ele fosse veloz, mesmo tendo que trabalhar massas grandes de dados para gerar os gráficos e tabelas que disponibilizamos, teríamos que investir valores altos em servidores dedicados. E esses servidores necessitariam de uma equipe cara para serem gerenciados.

Esse foi um momento de inflexão que poderia ter mostrado que o projeto era inviável. Mas em novembro de 2011, um anúncio mudou tudo. A Amazon anunciou a abertura de um datacenter no Brasil. Com seus serviços de infraestrutura tecnológica a custos incrivelmente competitivos, o comparacaodefundos.com seria viável.

A Amazon é referência em Cloud Computing. Dentre outras características, os serviços desse tipo tem a cobrança pela utilização muito mais granular que os competidores comuns. Uma comparação que torna o entendimento disso fácil é a maneira como pagamos por energia elétrica. Não precisamos fazer um investimento inicial alto (como o de construir uma pequena central hidrelétrica). E pagamos mensalmente apenas o que consumimos.

Com o Cloud Computing, não precisamos comprar computadores para colocar no datacenter, pagamos pelo uso dos servidores por hora (e não por mês), e as possibilidades de tamanhos de servidores que podemos usar é bastante ampla. Assim, podemos contratar 3 servidores extras para calcular os rankings de fundos mais rentáveis e depois de uma hora desligá-los, sem ter que assumir o custo de pagar por eles o mês inteiro, mesmo que eles ficassem ociosos em 90% desse período.

Conversamos e decidimos que valia a pena mudar nosso código e migrar o site para o novo datacenter da Amazon. Mesmo com o tempo que isso levaria, esse investimento era a diferença entre ter um produto viável ou não.

Rescontruindo o site para utilizar o mais eficientemente possível os recursos da Amazon, manter o comparaçaodefundos.com tornou-se viável e pudemos estreá-lo no dia 19 de janeiro de 2012.

Desde então aprendemos muito e hoje já estamos com uma versão 2.0 no ar. Mas as aventuras depois de estrearmos ficam para um próximo post.

Seja o primeiro a avaliar!

Categorias: Por dentro da Vérios