11.08.08
Apache + Tomcat porque?
Bom, o post de hoje vai ser uma coisa meio legal, pelo menos no meu modo de ver. O que vemos hoje no mundo de TI é uma parafernalha de coisa que as pessoas usam e nem sempre sabem porque usam. Qual a finalidade e etc.
Ai acho que escolhi algo legalzinho para postar. Essa semana estava olhando a arquitetura do aplicativo da empresa que trabalho. Ai pensando com o lado arquitetural da coisa. Começo a pensar. tenho uma necessidade. Para essa necessidade precisamos de algumas coisas. Ai que vamos e começamos a pegar as coisas para montar tudo correto? Então, pega um servidor coloca aqui, ai pega esse aplicativo coloca aqui… e por ai vai … vai entendendo a necessidade e vai montando tudo.
Bom, para montar tudo eu, você, e todos precisamos entender de falto porque aquela caixinha ali existe? O que ela faz de fato? Qual ganho que eu tenho em usar isso ou aquilo outro. Qual a minha necessidade e por ai vai.
Ai falo hoje da dobradinha da Apache Foundation. Pegamos o servidor Web mais utilizado e Open Source do Mundo. O Apache.
O que seria o Apache ?
Bom, grosseiramente é um servidor web, que lhe dá suporte a uma parafernalha de coisas para você disponibilizar algo na web. Desde páginas estáticas a aplicaçÕes mais sofisticadas. (Para isso temos outra peça do lego para encaixar que ja falo abaixo).
Algumas coisas que o Servidor web Apache que atualmente esta na sua versão. 2.2.10. Tem de bom para todos nós:
- Loding Balance para aplicativos.
- Transações seguras entre Client-Server através do Módulo mod_ssl que disponibiliza a famosa (HTTPS).
Bom poderia listar mais algumas coisas aqui. Mais para não prolongar muito. Se você precisa trabalhar profissionalmente, precisa de alta disponibilidade a custo zero (falando de software é claro). Para manter aplicações Web no ar. O Apache é maduro e se bem utilizado é uma ótima saida.
Agora vamos falar de aplicações web.
Se você quer disponibilizar um punhado de páginas estaticas ou uma aplicação com PHP por exemplo. O Apache resolve e bem a coisa. Agora se tu é mais audacioso e quer disponibilizar uma aplicação web com Java. O Apache sozinho não vai ser o suficiente. Com isso surgiu outra parte (lego) da Apache Foundation. Denonimada TomCat.
O que é o TomCat?
O Tomcat é um container web java. Ele é responsavel por gerenciar uma requesição de dados (Request) de um determinado lugar (host), para uma aplicação Java. Para rodar ele é necessário ter instalado uma JVM – Java Virtual Machine. Ou seja JRE no computador o qual ele está instalado. Ele comporta as aplicações Java web com excessão dos EJBs é claro. EJB é outro assunto que posso explorar mais para frente em outro post.
Mais o que é verdade e que muita gente se confunde é que o Tomcat não é um servidor web. Ele pode fazer papel mais na verdade ele é um container apenas. Para eu ter toda segurança, robustes e escalabilidade de um servidor web bom (parrudo. rsrs) eu tenho que usar a dobradinha Apache Web Server + Apache Tomcat.
O Apache tem toda sua gama de segurança módulos para fazer loadbalancing e etc. Mais o Apache Web Server não tem todo o environment para rodar aplicações java. Para isso o tomcat faz esse trabalho. Mais ai vem a pergunta. Se eu quiser só publicar em um servidor qualquer uma aplicação java usando Tomcat eu posso ? A resposta é Sim. Você pode sim. Porém não terá loadbalance, não terá suporte a segurança nas transações e etc. TUdo isso é fundamental nos dias em que vivemos correto ? Por isso o Tomcat não é um servidor web e sim um container.
A Apache foundation, seria burra se mante-se dois servidores webs correto ? Por isso é encarado como projetos separados Apache e Tomcat, tem seu núcleo idéias diferentes e por isso eles se complementão.
Bom tudo o que to falando é o que eu li e que apreendi.
![]()
Atualmente a versão do TomCat é a: 6.0.18 essa versão suporta SERVELT 2.5 / atendente as especificações 2.1 de JSP da Sun.
Bom para unir os dois, se você pretende um dia fazer uma aplicação robusta com alta dsponibilidade e quer gastar menos. De uma olhada nesse artigo muito interessante sobre Load Balance com a dobradinha (Apache + Tomcat).
Um artigo muito bom, achei ele bem escrito e esclarecedor. Copiei uma imagem dele que mostra bastante o que eu quis dizer quando você precisa de algo legal (robusto, seguro e com alta disponibilidade) para sua aplicação web java.
Essa imagem abaixo mostra a utilização do Servidor Apache Web Server, para fazer Load Balance da aplicação java que esta rodando no Tomcat.
Talvez para não atropelar muito quem é novo em desenvolvimento de aplicações. O Conceito de Load Balance é empregado quando você tem uma carga de processamento muito grande ou precisa de alta disponibilidade. Então você disponibilida para a sua aplicação mais de um servidor. E Através de Software ou de Hardware faz o Load Balance do processamento. Para não sobrecarregar o servidor, ocasionando demora no tempo de resposta ou até mesmo a queda de conexão. Básicamente é isso, claro que podemos deixar isso para um post futuro.
Bom voltando a imagem, é facil notar que os tomcat (Caixas rosa) da imagem são sevidores distintos o Apache (Caixa Amarela) também. Então por monitoramento de acordo com a requisição dos clientes o apache vai direcionar o processamento para o servidor que lhe convier. Isso aumenta a disponbilidade. Claro que podemos também falar de failover mais também é outro assunto interessante paraum próximo post.
A para não gerar plagio essa imagem eu retirei do artigo que esta o link mais acima como mencionei. E peguei ela só para exemplificar melhor.
Vou ficando por aqui.
Abraço

Rogerio Ferreira Coelho disse,
Fevereiro 16, 2009 às 5:54 pm
Pleon,
Já trabalhei com o WebSphere, e nunca niguem da IBM deu uma explicação tão clara dos serviços que compõe um servidor WEB e um Application Server.
Eu enfrentei inumeras dificuldades, com problema de performance e de segurança, pois nunca encontrei uma definição clara das configurações necessárias para que o IHS (IBM HTTP Server (apache da IBM)), fosse o servidor das requisições HTTP, e das paginas estáticas, e deixasse o WAS com as funções do JAVA.
Onde posso encontrar um exemplo de de configuração bem explicada do fluxo que você detalhou acima?
Rogerio F. Coelho
Celeste disse,
Fevereiro 17, 2009 às 9:45 pm
Parabéns pelo post! Esclareceu a minha dúvida.
Camila disse,
Fevereiro 22, 2009 às 11:08 pm
Achei muito interessante, parabéns. As imagens estão muito bem montadas colocadas. em fim Adorei!