quarta-feira, 10 de outubro de 2007

Servidores Jabber

Uma questão que deixa muitas dúvidas quando pensa sem Jabber é: qual servidor eu vou usar ?

Dentro os vários que existem, dois eu acho que são muito interessantes:

Openfire (3.3.3) e ejabberd (1.1.4).

O Openfire (antigo Wildfire) é um servidor jabber em Java, que tem muitos recursos interessantes é uma interface web de configuração extremamente completa e simples.
Entre seus principais recursos os que mais me chamam atenção são: Plugins, auditoria das mensagens dos usuários e controle de conexão com outros servidores jabber.
Os plugins são dos mais variados: Transportes ICQ, MSN e até integração com o Asterisk (que é bem bacana).
Quanto a auditoria de mensagens dos usuários, o Openfire permite manter as mesmas em logs, mas não fornece uma forma de visualizá-los. Para isso desenvolvi um PHP que mostra o conteúdo das mesmas de forma bem simples.
Já com relação ao controle de conexão com outros servers, acho interesssante que o Openfire possibilite a criação de listas brancas de permissão, o que garante que só servidores confiáveis possam se comunicar com o Openfire (esse recurso deve também ser disponibilizado no ejabber 2, que ainda está em desenvolvimento).

Já o ejabberd apesar de não possuir algumas dessas features do Openfire conta com uma importante vantagem: o fato de ser o servidor que roda no Jabber.org. Isso já mostra a robustez e capacidade do mesmo em atender uma grande quantidade de usuários. Para se ter uma idéia, no Jabber.org existem mais de 330 mil usuários registrados, e uma média de 8000 usuários simultâneos. Isso tudo rodando num Dual P4 com 4Gb de memória e DB PostgreSQL. Para visualizar mais dados sobre o servidor, vá na página de Status do servidor Jabber.org.
Muitos poderão dizer que o Jabber.org não é uma grande referência pois fica muito tempo fora do ar. Conversando com stpeter, administrador do Jabber.org levantei essa questão e ele me explicou que muitos dos problemas se devem aos usuários usarem o Jabber.org como área de testes, o que gera instabilidade no servidor. Por exemplo: usuários com 600 mil mensagens offline, usuários que criam web services para fazer inúmeras conexões e por aí vai. Com tanta "invenção", realmente não tem servidor que aguente.

Com relação a performance, pesa (ou será que não ?) o fato do Openfire ser em Java. Já o ejabberd é escrito em Erlang, uma linguagem não muito conhecida e utilizada.

De minha experiência, conheço servidores rodando Openfire com mais ou menos 50 usuários sem grande consumo de recursos do hardware em máquinas relativamente baratas. Mais do que isso eu ainda não utilizei, mas acredito que possa ser viável fazê-lo. Já o ejabberd tem o Jabber.org como um ótimo case de instalação o que faz com que eu prefira-o para instalações com grande número de usuários.