Atenção: por essa edição ser muito antiga não há arquivo PDF para download.
Os artigos dessa edição estão disponíveis somente através do formato HTML.

Clique aqui para ler todos os artigos desta edição

Entrevista

Klaus Wuestefeld

 

Fale-nos sobre o Prevayler e suas características.

 

Implementado em Java e portado para várias outras linguagens, o Prevayler é a camada original de prevalência de sistemas. Prevalência compreende persistência e replicação transparentes dos dados ou objetos de negócios de um sistema. Isso significa que podemos criar objetos Java comuns na RAM, usando uma VM Java qualquer, e persistí-los sem termos que alterar uma linha de código sequer. Em outras palavras, o Prevayler fornece aos nossos objetos de negócio uma “Invulnerable Virtual Machine” (IVM). Livranos da complexidade do EJB; das limitações do SQL; do peso do JDBC; da licença, instalação e administração do SGBD; dos scripts de instalação do banco de dados e, principalmente, permite que comecemos a usar O de verdade.

 

Qual a diferença entre o Prevayler e os bancos de dados tradicionais?

Primeiro, a desvantagem: por persistir objetos Java comuns, o Prevayler requer que

tenhamos RAM suficiente para conter todos os nossos objetos de negócio. Ou seja, não é viável ainda usar a prevalência em sistemas com dezenas ou centenas de gigabytes, embora isso seja apenas uma questão de tempo. Para sistemas com centenas de megas até alguns gigas de dados, porém, já é perfeitamente possível usar o Prevayler. Agora, as vantagens: o Prevayler é de mil a dez mil vezes mais rápido que um banco

de dados e não nos restringe quanto à arquitetura, algoritmo, estrutura de dados e

linguagens de consulta que podemos usar em nossas aplicações. Pense no seu banco de dados como uma prisão. Algumas pessoas gostam da prisão porque lá ganham gororoba. O Prevayler não dá de comer, mas dá a liberdade de você escolher a sua comida. É triste, mas a maioria das pessoas está tão acomodada à gororoba da prisão que morreria de fome assim que ganhasse a liberdade.

 

Para que tipo de aplicação o Prevayler é recomendado?

Aplicações Web (browser-based ou webservices) são particularmente fáceis de i implementar usando o Prevayler porque todos os componentes ficam na mesma VM Java . A camada de apresentação (geração de HTML) acessa os objetos de negócio diretamente através de chamadas de método comuns. Mais importante que o tipo da aplicação, porém, é a equipe de desenvolvimento. Se o programador é daqueles que há anos acopla componentes GUI diretamente a tabelas do banco de dados e ainda acha que está fazendo O, sinceramente, é melhor que continue na gororoba.

 

De acordo com os dados disponíveis no site oficial (www.prevayler.org), o Prevayler apresenta diferenciais que o caracterizam como uma revelação. Quais seriam os pontos-chave do software?

O ponto-chave é, sem dúvida, a simplicidade da solução. Estamos falando de 350

linhas de código que tornam obsoletos todos os bancos de dados e servidores de aplicação tais quais os conhecemos.

 

Você falou sobre diferenças astronômicas em relação ao desempenho do

Prevayler frente aos bancos de dados tradicionais. Como este desempenho foi obtido?

Em testes realizados, inclusive nos laboratórios da Sun, em São Paulo, demonstrou-se

que o Prevayler é mais de três mil vezes mais rápido do que o MySQL e quase dez

mil vezes mais rápido do que o Oracle. O teste consiste em repetidamente buscar cem

objetos/registros, dentre um milhão indexados, por igualdade de atributo (equivalente

a um “SELECT * FROM TABELA WHERE ATRIBUTO=?”). Esses resultados foram

obtidos com os registros do banco de dados completamente cacheados em RAM. Ou seja, a lentidão do acesso a disco nem entrou na questão. É a arquitetura que realmente faz a diferença. Enquanto a solução prevalecente simplesmente

busca os objetos prontos na RAM usando uma estrutura de dados padrão do

 Java, o acesso ao banco de dados implica no seguinte overhead: criação do comando SQL, processamento pelo driver JDBC, envio pela pilha TCP (mesmo estando na mesma máquina física), processamento por parte do banco de dados, retorno dos registros pela pilha TCP, recebimento por parte do driver JDBC, processamento dos dados retornados, registro por registro, e, o pior de tudo, criação dos objetos

representando cada registro. A diferença é simplesmente absurda. Com a velocidade

dos objetos nativos passa a ser possível, por exemplo, fazer buscas navegando polimorficamente entre milhares deles, coisa que até com

bancos de dados O era impensável.

 

Atualmente, o Prevayler é distribuído sob a LGPL (Lesser General Public

License). Em momento algum, você e a equipe não se interessaram em

vender o produto? Você ofereceu a tecnologia a alguma empresa?

Não. O Prevayler é invendável por ser muito pequeno. O grande lance é justamente a simplicidade da idéia. Se eu fosse te vender o Prevayler, seria mais fácil você escrever sua própria camada de prevalência. A versão 1.0 do Prevayler tem somente 350 linhas de código. Isso mesmo, menos linhas de código do que a maioria dos bancos de dados e servidores de aplicação tem de bugs conhecidos.

 

Qual a diferença entre o Prevayler e os demais aplicativos “RAM-based”

para armazenamento de dados?

O Prevayler garante que, se alguém chutar a tomada, o sistema vai prevalecer.

 

Uma afirmação no site indica que a tecnologia de prevalência será o futuro do armazenamento de dados. Você acha que produtos como o Oracle ou o SQL Server estão com os dias contados?

Enquanto mecanismos de persistência, sim, com certeza. Pode ser que o Prevayler não seja o algoz mas, se temos RAM suficiente para conter todos os dados do nosso sistema, para que precisamos de um SGBD chaveando data blocks de RAM para o disco e vice-versa? Com o preço da memória RAM despencando, os bancos de dados estão fadados. Embora não possam anunciar, claro. Empresas como a Oracle sabem disso muito bem e estão tratando de diversificar seus produtos. Daqui a

pouco, ninguém mais vai lembrar da Oracle como “aquela empresa de banco de dados”. Ela já nem quer mais ser lembrada assim.

 

Qual o tamanho da comunidade de usuários Prevayler?

O site do Prevayler tem links para algumas dezenas de pessoas e organizações que usam o produto e que se registraram. Por ser um software livre, suponho que centenas de equipes estejam usando o produto sem meu conhecimento. No evento JustJava, por exemplo, encontrei um desenvolvedor da Vivo e fiquei sabendo que eles usam o Prevayler em uma série de sistemas internos. Embora o Prevayler já tenha mais de seis mil downloads e, de acordo com o Google, mais de quatro mil referências na Web, ele certamente não é para qualquer um. A prevalência de sistemas ainda é só para quem realmente sabe desenvolver software.

 

Você acredita que os principais fornecedores de bancos de dados adotarão esse conceito no futuro?

Se adotarem, será o mais tarde que puderem. Vão tentar postergar ao máximo a morte de seus produtos. Isso vale também para os fornecedores dos famosos servidores de aplicação. Eles não serão mais necessários porque, dentro de um sistema prevalecente, qualquer objeto comum adquire as características de um verdadeiro componente transacional. Não precisamos mais nos chatear com coisas como EJB e seus containers.

 

No JustJava observamos todo o códigofonte do Prevayler estampado em cami setas que foram distribuídas a participantes do evento. Essa atitude irreverente foi uma das mais comentadas no evento. Fale-nos um pouco sobre o código do Prevayler e sobre seu desenvolvimento.

Nenhum bug, até hoje, foi encontrado em uma versão de produção do Prevayler. Não há mágica nenhuma por trás disso. Como você mesmo viu, o código da versão 1.0 cabe numa camiseta. Não há onde um bug se esconder em tão pouco código.

Muitas técnicas de Extreme Programming, como testes automatizados e, sobretudo, um refactoring doentio, foram aplicadas ao produto. Nem todas as técnicas puderam ser empregadas porque o Prevayler foi desenvolvido por apenas uma pessoa, por 3 meses, em meados de 2001. Os quatro valores que guiam as equipes de Extreme Programming são simplicidade, comunicação, feedback e coragem. O desenvolvimento do Prevayler também é norteado por quatro valores: simplicidade, simplicidade, simplicidade e simplicidade. Chega de trabalhar com produtos de software que tentam fazer mais do que o necessário e nunca funcionam como deveriam.

 

Fale-nos sobre a portabilidade do Prevayler para .NET.

O porte para .NET (C#) chama-se Bamboo. prevalence, do Rodrigo de Oliveira, outro brasileiro, também conhecido como Bamboo. É, sem dúvida, o projeto mais sério de porte do Prevayler para outra linguagem. O site da TV Record roda sobre essa plataforma.

 

Fale-nos da equipe que trabalhou no Prevayler.

Desenvolvi sozinho o Prevayler. Na lista de discussão, porém, já não preciso mais ficar respondendo a todas as perguntas. São muitas as idéias e contribuições que surgem da lista. Carlos Villela, de Santo André, e Jacob Kjome, dos EUA, têm sido fundamentais na disseminação da cultura prevalecente. Jon Tirsén, da Suécia, é o único que contribui regularmente no código-fonte em si. Ou seja, existe ainda muita oportunidade para se desempenhar um papel importante no Prevayler, ainda mais agora, enquanto o código é pequeno e fácil de aprender. Por outro lado, o Prevayler tem recebido bastante apoio na divulgação por parte de organizações como o DFJUG, o SouJava, o Quilombo Digital, a RedeSOL e o RioJUG, entre outros. As palestras sobre prevalência têm sido também muito bem recebidas nos eventos aos quais são

submetidas. Por causa da ignorância, mas principalmente por causa do medo, a reação que costumo enfrentar de muitas pessoas envolvidas com bancos de dados é a agressividade gratuita. Ironicamente, a SQL Magazine vai ser a primeira revista  impressa a abrir espaço para a prevalência. Isso vai ser muito positivo para a comunidade de dados em geral. Impressiona-me a seriedade da revista.

 

Há perspectivas de atualizações do produto?

Sim. A próxima versão (1.4) vem com rollback automático em caso de erros causados

pelos objetos de negócios (RuntimeExceptions). A versão 2.0 vai contar com replicação transparente do sistema, possibilitando o balanceamento de carga e tolerância a falhas. Ambas as funcionalidades já podem ser experimentadas através do CVS (repositório de desenvolvimento) do Prevayler e seu funcionamento

é explicado no site.

 

Quais são os casos de sucesso do Prevayler?

Um mercado virtual de seguro saúde alemão (www.otop.de) é o maior caso de sucesso

do Prevayler. Na Objective Solutions, minha empresa, temos um sistema prevalecendo há mais de um ano. Ele é acessado por mais de 50 clientes remotos em São Paulo e Curitiba. Existe também uma comunidade virtual baseada num portal de serviços completamente implementado usando o Prevayler: www.fluesterstern.de. Mais casos de sucesso podem ser visitados através do site mas, como você vai observar,

o Prevayler faz muito mais sucesso na Alemanha e nos EUA do que no próprio Brasil.

 

Há alguma previsão do Prevayler ser utilizado em outras linguagens?

O Prevayler já foi portado para .NET (C#), Ruby, Smalltalk, Python, Perl e ObjectiveC,

entre outras.

 

Já existem outros aplicativos que se inspiraram no Prevayler e seu conceito

de prevalência?

Vários aplicativos já usavam os conceitos básicos da prevalência, até mesmo antes do

Prevayler cunhar esse termo e oferecer uma implementação disponível a todos. Qualquer jogo que permite salvar seu estado para continuar algum tempo depois emprega o conceito de snapshot do sistema. Qualquer jogo que, além disso, permite o replay de uma partida é sempre baseado em alguma espécie de log de comandos, conceito também utilizado no Prevayler. Considere o funcionamento de jogos de estratégia multi-usuário como Age of Empires e WarCraft. Nesses jogos, todas as

máquinas recebem os comandos (transações) originadas por todos os usuários e replicam o estado inteiro do jogo (sistema). É exatamente assim que funciona a replicação no Prevayler.

 

Você acredita na “vitória” da orientação a objetos?

Acreditar que a OO seja uma realidade no mercado corporativo, hoje, é uma falácia muito comum. Este é um problema mundial, não somente brasileiro. Embora seja grande a quantidade de linguagens OO disponíveis, podemos contar nos dedos as organizações que usam OO de verdade. Bancos de dados O são tradicionalmente lentos, pesados e caros. Raras são as empresas que usam uma camada de persistência objeto-relacional. Mesmo quando usam, criam objetos burros, quase qual meros registros de dados. Em todos os casos, esses sistemas pseudo-O mapeiam os atributos “privados” de seus objetos em colunas de um banco de dados, para serem “compartilhados” por todos os outros sistemas da organização. Este é um ponto sutil mas crucial. Os bancos de dados são usados como middleware, como uma espécie de camada de integração entre os sistemas. Dessa forma, cada sistema está promiscuamente acoplado às partes privadas dos demais, violando todo e qualquer encapsulamento. O pior é que essas pessoas pensam que estão usando O e ainda

têm a pachorra de perguntar por que não se cumprem as promessas da O, como reuso

e manutenibilidade.

 

O que falta no mercado para a estabilidade da OO?

Falta alguém começar a aprender OO de verdade. O fato é que pouquíssimas pessoas

sabem realmente usar objetos. Vou citar o filme Matrix porque somos como aqueles

bebês que já nascem dentro de uma bolha. Ao mesmo tempo em que os bancos de dados fornecem serviços vitais para nossos sistemas, também nos atrofiam brutalmente com suas restrições. Por acaso, seu banco de dados permite o uso de

qualquer linguagem de consulta ou somente a que ele define? Permite o uso de

qualquer modelo de objetos e estruturas de dados ou somente as que ele suporta? Permite a você usar qualquer algoritmo de busca ou somente os que ele implementa?

O que faltava no mercado era um mecanismo de persistência que nos permitisse usar

O de verdade. Não falta mais.

 

Como você vê o mercado de bancos de dados atualmente?

Com o Prevayler e demais camadas de prevalência, já é possível começar a usar O de

verdade. Completando uma espécie de ciclo virtuoso, quanto mais experiência em O as

pessoas tiverem, mais facilidade terão em usar camadas de prevalência. É inevitável, porém, que os bancos de dados ainda perdurem por muito tempo. Não é de um dia para o outro que todo um mercado se recupera de anos definhando numa bolha. “Você precisa entender que a maioria dessas pessoas não está pronta para ser ‘desplugada’ e muitas delas estão tão acostumadas, tão desesperadamente dependentes do sistema, que lutarão para protegê-lo.”

 

O que você espera do futuro?

“Não conheço o futuro. Não vim aqui para dizer como isso vai terminar. Vim para dizer como vai começar. Vou mostrar a estas pessoas um mundo sem regras e controles, sem limites ou fronteiras, um mundo onde tudo é possível. Onde vamos depois disso é uma escolha que deixo para você.” (Matrix)