Desenvolvimento

19 set, 2011

A importância do ASA (Application Server Admin)

Publicidade

Todo mundo que estuda um pouquinho do funcionamento de um Application
Server repara logo que existe a necessidade de pessoas para zelarem
pelo seu funcionamento e responderem pela sua administração. O Servidor
de Aplicação está para o ASA (App. Server Admin), assim como o Banco de
Dados está para o DBA. A diferença é que no modelo de desenvolvimento
Cliente-Servidor ainda não existia a necessidade do ASA, já que não
havia a existência do Servidor de Aplicação.

Acho um assunto muito interessante, e pesquisando sobre isso,
verifiquei que já existiam artigos tão bons e que tratam o tema de
maneira tão completa que dispensa a criação de outro artigo sobre o
mesmo assunto.

Repasso para que vocês possam ler a matéria completa.

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.

Essa é 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 desses serviços possui 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 MirandaPerformance em Aplicações Java). 
Fora essas 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ão corretas (e não quebram 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”, na qual 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 esse perfil se quiserem aumentar o profissionalismo das aplicações/ambiente Java EE!