Rafael Benevides bio photo

Rafael Benevides

In a serious relationship with Software Development

Email Twitter Facebook Google+ LinkedIn Instagram Github Last.fm Youtube

"O 'Deployer' ou Administrador é a pessoa (ou empresa) responsável por configurar e realizar o deploy de aplicações Java EE, administrar a infraestrutura de computação e rede onde aplicações Java são executados, e monitora o ambiente de execução. Entre suas atribuições, está o ajuste dos controles transicionais e atributos de segurança, além de especificar conexões de Banco de Dados." Esta é a definição oficial da Sun para o perfil "Application Deployer and Administrator", segundo o Tutorial Java EE. Desde quando comecei a trabalhar com o Java EE na sua versão 1.3, toda a equipe ganhou "de brinde" uma nova atribuição: Administrar o servidor de aplicações! Claro que no ínicio tudo não passava de alguns deploys e restarts. Com o amadurecimento foi inevitável o crescimento da quantidade de componentes, bibliotecas, datasources, filas JMS e também do "parque" de servidores de aplicação; esta nova atribuição já tomava um tempo considerável da equipe. Foi assim que resolvemos seguir a "sugestão" da Sun e contratar um perfil específico para esta função.

É comum as pessoas que tem seu primeiro contato com o Java EE, enxergarem o Servidor de Aplicações como uma espécie de Web Server estando ele para o Java, como o mod_php/Apache está para o PHP ou como o IIS está para o ASP. Na verdade, como diz Bruno Souza (o Javaman), o Java EE é uma especificação! É um documento que pode ser obtido na página da JSR 244! O Servidor de aplicação nada mais é que a implementação do que foi especificado. Não vou entrar no mérito da compatibilidade do Servidor com sua especificação mas sim deixar claro que o Servidor de Aplicações é muito mais que um Web Container Java e entre os serviços providos pelo Servidor de Aplicação estão: e-Mail (Java Mail), Transação (JTA), Filas (JMS), Conectores (JCA), Segurança (JAAS), Monitoramento (JMX), Pool (Conexão e EJBs), Registro de nomes (JNDI), além dos conteiners de EJBs (Entity Beans, Session Beans e Message Driven Beans); WEB (JSP, Servlets, JSTL e JSF) entre outros.

Cada um destes serviços possuem suas próprias configurações como números de Threads, número máximo e mínimo dos Pools, sem contar o próprio tunning da JVM (Não deixem de ver a palestra do Cláudio Miranda - Performance em Aplicações Java). Fora estas atribuições, o ASA (Application Server Admin) também é responsável por: Realizar o deploy da aplicação Java EE, Configurar a aplicação Java (modificando os descritores) para se adequar ao ambiente operacional, Verificar o conteúdo da aplicação e garantir que o arquivo está de acordo com a especificação Java EE e também que as dependências de bibliotecas de terceiros está correta (e não quebra a compatibilidade com a API de outras aplicações no servidor).

Como é possível ver, para praticamente todas as atividades citadas, é necessário um conhecimento específico da plataforma JAVA. Entretanto o que muito se vê nas corporações é a administração do Servidor de Aplicações sendo realizada pela "equipe da rede" onde muitas vezes a instalação do Servidor é feita através do apt-get, descompactação do ZIP ou "Next, Next, Finish". O resultado é que muitas vezes o servidor é executado com uma configuração padrão para a JVM (o que é insuficiente na maioria dos casos), nível de Logging e segurança: Basta ver a quantidade de servidores JBoss na internet que possuem o JMX console aberto (permitindo total controle da instância).

Não é nenhum exagero dizer que hoje, assim como todos os Bancos de Dados sérios e críticos precisam de um excelente DBA, também todos os Servidores de Aplicações sérios e críticos precisam de um ASA. É perceptível o nível de profissionalismo que uma empresa atinge quando o profissional implanta servidores de aplicações com alta disponibilidade; sistemas de monitoramento que notificam o Administrador quando o Servidor está indisponível ou próximo do limite de Threads e Pools e ainda é capaz de rastrear data, hora e versão da aplicação disponibilizada em produção.

Não deixem de considerar este perfil se quiserem aumentar o profissionalismo das aplicações/ambiente Java EE!