Implementado na nuvem com o IBM Application Pattern para Java

Desenvolva e implemente aplicativos virtuais Java em minutos

O IBM Application Pattern para Java permite facilmente transferir qualquer aplicativo Java existente para um ambiente baseado na nuvem e torná-lo reutilizável como uma plataforma ou um modelo modificável. Descubra como esse padrão funciona com as ofertas na Nuvem IBM e comece com instruções passo a passo— incluindo duas demonstrações em vídeo— para criar, implementar e monitorar aplicativos virtuais Java em uma variedade de cenários de uso.

Chris Bailey, Java Service Architect, IBM

Chris BaileyChris Bailey é membro da equipe do IBM Java Technology Center no Hursley Park Development Lab no Reino Unido. Como arquiteto técnico para a organização de serviço e suporte IBM Java, ele é responsável por permitir que os usuários do SDK IBM para Java proporcionem implementações de aplicativo bem-sucedidas. Chris também está envolvido na reunião e avaliação de novos requisitos, na entrega de novos recursos e ferramentas de depuração, melhorias em documentação e na qualidade geral do SDK IBM para Java.


nível de autor Profissional do
        developerWorks

30/Ago/2013

Um dos objetivos da computação em nuvem é amparar os desenvolvedores na complexidade de entender e gerenciar infraestrutura de hardware e software, permitindo que eles concentrem-se na funcionalidade dos aplicativos. Essa meta é atingida em graus diversos pelas nuvens da Infraestrutura como Serviço (IaaS) e pelas nuvens da Plataforma como Serviço (PaaS). As nuvens da IaaS fornecem o hardware e permitem que você leve seu próprio software. AS nuvens da PaaS fornecem, ainda, software que normalmente lhe permite focar no desenvolvimento e na implementação de aplicativos, tratando da implementação da infraestrutura e do middleware por você. Depois de uma breve pesquisa as opções de PaaS e IaaS para executar Java na nuvem, este artigo fornece uma visão aprofundada das opções que a IBM oferece por meio do IBM Application Pattern para Java.

Aplicativos Java na nuvem

A maioria dos principais fornecedores de nuvem permite ou habilita o uso de tecnologia Java nas suas ofertas na nuvem. Em uma extremidade da escala está Amazon EC2, que é, na verdade, uma nuvem IaaS. Amazon Machine Images (AMIs) são implantadas, que a Amazon descreve como "um tipo especial de sistema operacional pré-configurado e software de aplicativo virtual usado para criar uma máquina virtual dentro da Amazon Elastic Compute Cloud (EC2)." Ou seja, é necessário implementar uma imagem autodesenvolvida ou pré-desenvolvida que contenha o software necessário, que pode incluir um tempo de execução Java.

A seguir na escala estão itens como o Microsoft Azure e o Salesforce.com Heroku. Ambos são nuvens PaaS que fornecem um ambiente de software e permitem a execução de aplicativos Java. Porém, dos dois, apenas o Heroku fornece esse tempo de execução Java a você disponibilizando o OpenJDK 6. Para o Azure, é preciso fornecer seu próprio tempo de execução Java.

O Google App Engine e o Amazon Elastic Beanstalk fornecem ambos a maioria das ofertas de aplicativo. Não é preciso se preocupar com instalações de máquinas virtuais e software; você simplesmente fornece o aplicativo. Porém, somente é possível executar aplicativos baseados na web, e ambos os serviços impõem algumas restrições sobre o que esses aplicativos podem fazer.


Implementando na nuvem IBM

Avaliação gratuita do IBM SmartCloud Application Services

Uma avaliação gratuita de 90 dias do IBM SmartCloud Application Services está disponível por meio do developerWorks, permitindo implantar até cinco máquinas virtuais e usar até 30 GB de armazenamento. A avaliação fornece acesso ao IBM Application Pattern for Java, junto com os padrões Web Application, Transactional Database e Data Mart. Isso significa que é possível começar a implantação dos aplicativos na nuvem IBM ou apenas avaliá-los usando um dos modelos de aplicativo de amostra.

A abordagem da IBM é fornecer um conjunto de tecnologias com recursos tanto para IaaS quanto para PaaS. Na extremidade de IaaS da escala está a habilidade de implementar dispositivos virtuais. Um dispositivo virtual é uma pilha de software predefinida — contendo sistema operacional, aplicativo de software, middleware, aplicativo e bibliotecas adicionais, além de metadados para configurar e iniciar a pilha de software— em uma imagem usando a especificação padrão Open Virtualization Format (OVF) da Distributed Management Task Force (DMTF). Também tem suporte para o uso de script para reconfigurar a pilha de software contida no dispositivo.

As capacidades mais semelhantes a PaaS são fornecidas por dois tipos de padrões de carga de trabalho — padrões de sistema virtual e padrões de aplicativo virtual

  • Um padrão de sistema virtual é uma definição centrada em topologia de uma implementação. Um Editor de Padrão permite projetar uma topologia definindo várias imagens de máquina virtual, os componentes de software para instalar nelas e o uso de pacotes de script (metadados) para configurar nelas. É possível fazer isso usando máquinas virtuais criadas manualmente, máquinas virtuais importadas ou uma entre uma variedade de imagens do IBM Hypervisor Edition. Quando o padrão do sistema virtual foi criado para uma topologia recorrente com os scripts de configuração para instalar um aplicativo, é possível reutilizá-lo como uma plataforma padrão.
  • Um padrão do aplicativo virtual é uma definição centrada em aplicativo de uma implementação. Um Virtual Application Builder permite fornecer o aplicativo em si, junto com a definição de quaisquer recursos necessários, pelo uso de componentes cobrindo conexões de banco de dados, filas de mensagem, e assim por diante, e políticas cobrindo escalabilidade, acordos de nível de serviço (SLAs), etc.

A Figura 1 ilustra esses três mecanismos para implementar na nuvem IBM:

Figura 1. Mecanismos para implementar na nuvem IBM
Mecanismos para implementar na nuvem IBM

A Tabela 1 compara as características dos três mecanismos de implementação:

Tabela 1. Comparação dos mecanismos de implementação
Dispositivos virtuaisPadrões de sistema virtualPadrões de aplicativo virtual

Instalação e configuração de software padrão no OS

Modelo de administração e gerenciamento tradicional

Elasticidade conduzida por infraestrutura

Imagens criadas por extensão/captura

Custo total de propriedade (TCO) padrão com aplicativos existentes

Implementação automatizada das topologias de middleware

Modelo de administração e gerenciamento tradicional

Elasticidade conduzida por infraestrutura e aplicativo

TCO aprimorado com aplicativos virtualizados

Implementações altamente automatizadas usando padrões especializados

Aproveita serviços de gerenciamento de carga de trabalho elástico

Elasticidade conduzida por política de negócios

Feito para o ambiente a nuvem

Melhor TCO com aplicativos em nuvem

Ofertas na Nuvem IBM

Dispositivos virtuais, padrões de sistemas virtuais e padrões de aplicativos virtuais podem ser usados em todas as três ofertas da Nuvem IBM. As ofertas variam de uma nuvem pública fornecida pela IBM até um dispositivo de software e hardware integrado usado para uma nuvem privada:

  • IBM SmartCloud: o IBM SmartCloud é a nuvem hospedada pela IBM, que pode ser privada e específica para um determinado cliente ou pública com o fornecimento feito para indivíduos. É possível pensar nisso como uma solução de nuvem fornecida pela IBM.
  • IBM Workload Deployer: o IBM Workload Deployer é um dispositivo de hardware que oferece recursos de fornecimento e gerenciamento para implementar dispositivos virtuais e os padrões de carga de trabalho no hardware fornecido pelo usuário, habilitando os recursos de hardware existentes a terem capacidades de nuvem. Pense nisso como levar sua própria nuvem.
  • IBM PureApplication System: o IBM PureApplication System é um dispositivo de software e hardware integrado otimizado para carga de trabalho que oferece recursos de fornecimento e gerenciamento, além do hardware otimizado no qual as cargas de trabalho são implementadas. Pense nisso como solução de nuvem na caixa.

O fato de que os mesmos mecanismos de implementação e gerenciamento são usados par todas as três ofertas significa que é fácil transferir os aplicativos de uma oferta de implementação para outra— e que um modelo híbrido usando duas ou mais ofertas de implementação é possível.


O IBM Application Pattern para Java

O IBM Application Pattern para Java é um padrão de aplicativo virtual que permite implementar aplicativos baseados em Java novos e existentes na nuvem IBM de maneira rápida e simples. O processo é simples porque blocos de desenvolvimento predefinidos são fornecidos e as capacidades padrão são integradas. Essa simplicidade fornece a velocidade; a maioria dos aplicativos virtuais Java pode ser desenvolvida em menos de três minutos!

Blocos de desenvolvimento de um aplicativo virtual Java

O IBM Application Pattern para Java atualmente fornece cinco blocos de desenvolvimento simples que podem ser usados para criar um novo aplicativo virtual Java. Eles permitem implementar o aplicativo e quaisquer bibliotecas adicionais ou arquivos de configuração que possam ser necessários, configurar o firewall de entrada e saída e adicionar os arquivos de log do aplicativo na estrutura de monitoramento fornecida.

  • Aplicativo Java : esse é o componente que permite fornecer e configurar a parte principal do aplicativo Java. É preciso fornecer o aplicativo em si como um archive — por exemplo, um arquivo ZIP, TAR.GZ ou TGZ— contendo o código de aplicativo Java compilado. Quando você fornece o aplicativo, declara a opção adequada para como o aplicativo executará: Main method (por exemplo, com.ibm.sample.HelloWorld junto com quaisquer parâmetros e entradas de caminho de classe adicionais) ou Command line se um script de inicialização (como /bin/start.sh) iniciar o aplicativo.

    Health Center

    Ferramentas de Monitoramento e Diagnóstico IBM para Java - Health Center (Health Center) é uma ferramenta de diagnóstico de baixo gasto adicional para monitorar um aplicativo executando em uma IBM Java Virtual Machine. Está disponível como parte do IBM Support Assistant. O IBM Application Pattern para Java usa sua capacidade de "conexão tardia" para permitir que o monitoramento comece no tempo de execução.

    Além da configuração do aplicativo Java que está sendo implementado, é possível, ainda, adicionar uma Política de JVM, que permite alterar a configuração do tempo de execução Java subjacente. É possível definir tamanhos mínimo e máximo de heap Java, habilitar o modo de depuração, habilitar monitoramento do Health Center ou adicionar outros Argumentos Genéricos de JVM. Habilitar o modo de depuração ou o monitoramento do Health Center também faz com que as portas de firewall necessárias abram, e é possível limitar o intervalo de endereços IP com permissão para conectarem-se ao aplicativo Java.

  • Archive adicional: esse componente permite adicionar arquivos ao aplicativo virtual fornecendo um archive contendo os arquivos adicionais. Pode ser um archive Java (um arquivo JAR, WAR ou EAR, por exemplo) que será implementado como tal no local especificado, ou um archive normal (como ZIP, TAR.GZ ou TGZ) contendo os arquivos adicionais que podem, então, ser desempacotados no local desejado. A opção de archive Java é útil para adicionar mais componentes, como drivers JDBC ou implementar um aplicativo da web se o aplicativo Java principal estiver em um servidor de aplicativos, como Apache ou Tomcat. A opção de archive normal é útil para adicionar ou substituir arquivos de configuração padrão, como um arquivo server.xml, para alterar o uso de porta padrão ou adicionar IDs de usuário.
  • Listener genérico: por padrão, o aplicativo implementado não permite nenhum tráfego de rede de entrada ou saída. O componente de listener genérico permite configurar o firewall para tráfego de rede de entrada. Observe que isso apenas configura o firewall, e não faz o servidor HTTP ser implementado. Contudo, permite usar um IP/máscara de rede para limitar o intervalo de endereços IP que podem se conectar ao aplicativo.
  • Destino genérico: o destino genérico é a contraparte do listener genérico, mas é usado para configurar conexões de rede de saída. Da mesma forma, permite especificar um endereço IP ou intervalo de endereços IP a que o aplicativo pode se conectar. Por exemplo, se o aplicativo se conectar a um banco de dados, o destino genérico é necessário para permitir a conexão.
  • Arquivo monitorado: os componentes de arquivo monitorado permitem adicionar um ou mais arquivos ao Visualizador de Logs do console de carga de trabalho fornecido pela interface do usuário de IBM SmartCloud, IBM Workload Deployer e IBM PureApplication System. O componente de arquivo monitorado permite o uso de curingas, e vários componentes do arquivo monitorado podem ser adicionados de vários arquivos ou diretórios precisarem ser adicionados ao Visualizador de Logs. Por exemplo, /logs/*.log adicionarão qualquer arquivo no diretório de logs com um sufixo .log ao Visualizador de Logs.

A combinação desses cinco componentes simples torna possível desenvolver e implementar uma variedade surpreendentemente ampla de aplicativos virtuais Java baseados em servidor.

Integração especializada: capacidades padrão

Além de fornecer um conjunto de componentes que podem ser usados para implementar o aplicativo facilmente, configurar a JVM, permitir conexões de rede de entrada e saída e configurar o monitoramento de arquivos, o padrão também integra várias capacidades padrão com base em conhecimento especializado na implementação de aplicativos Java. Isso inclui:

  • Monitoramento de ciclo de vida: o estado do aplicativo Java é monitorado e exibido como parte do console de carga de trabalho no IBM SmartCloud, IBM Workload Deployer e IBM PureApplication System. A UI mostra se o aplicativo está em execução, se falhou com erro (saiu com um código de retorno diferente de zero, falhou devido a um travamento ou OutOfMemoryError) ou saiu de maneira limpa. No caso de um erro, as capacidades de registro, monitoramento e primeira captura de dados com falha (FFDC) podem ajudar a determinar por que o erro ocorreu.
  • Registro e monitoramento predefinidos: além de qualquer monitoramento solicitado pelo componente do Arquivo monitorado , todos os aplicativos implementados têm seus dados de stdout, stderr e verbose:gc capturados e disponibilizados pelo Visualizador de Logs. O monitoramento predefinido também está disponível usando a guia Monitoring no Virtual Application Console, e é possível conectar-se à ferramenta de monitoramento em tempo real Health Center. Se o uso do Health Center não tiver sido habilitado pela Política da JVM na inicialização, é possível habilitá-lo no tempo de execução.
  • FFDC predefinida: se ocorrer um erro no aplicativo implementado, certos coletas de dados são predefinidas. Isso inclui a geração de arquivos de dump de sistema e javadump conforme o adequado, junto à execução automática do utilitário jextract com relação aos dumps do sistema.

Criando um aplicativo virtual Java: Hello World

Com o conjunto de blocos de desenvolvimento e as capacidades padrão fornecidos, criar um aplicativo virtual Java é uma tarefa relativamente simples. O tradicional exemplo Hello World será usado para mostrar como criar e implementar um aplicativo Java usando o IBM Application Pattern para Java.

Como desenvolver e implementar um aplicativo

Antes de ser possível implementar um aplicativo, é necessário gravá-lo e empacotá-lo como um archive (ZIP, TAR.GZ ou TGZ). A Listagem 1 mostra uma implementação simples de HelloWorld, que adiciona um atraso antes de sair para fornecer tempo para a conexão a uma ferramenta de monitoramento:

Listagem 1. Amostra Hello World
package com.ibm.sample;

public class HelloWorld {

    public static void main(String[] args) {
        /* Print "Hello World!" to stdout */
        System.out.println("Hello World!");
        try {
            /* Sleep for 5 minutes */
            Thread.sleep(5 * 60 * 1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Depois de compilar esse código, você tem um arquivo com.ibm.sample.HelloWorld.class que deve adicionar a um arquivo ZIP. HelloWorld.zip (disponível para download) contém apenas um arquivo: /com/ibm/sample/HelloWorld.class.

Agora que você possui o aplicativo, a próxima etapa é criar um novo aplicativo virtual usando o padrão IBM Application Pattern para Java:

  1. Abra o painel do Virtual Application Pattern usando Patterns -> Virtual Applications.
  2. Selecione Application Pattern Type for Java 1.0 no menu suspenso do Virtual Application Patterns.
  3. Clique no botão + para criar um novo aplicativo virtual.
  4. Clique no botão Start Building para começar a criar um novo aplicativo a partir de um modelo em branco.

O Virtual Application Builder abre em uma nova janela. Ele contém uma paleta de componentes disponíveis no lado esquerdo, a tela no centro para a desenvolvimento do aplicativo e um painel no lado direito para configurar os componentes do aplicativo. Conclua as etapas a seguir, ilustradas na Figura 2, para criar o aplicativo virtual para HelloWorld:

  1. Arraste um widget do Aplicativo Java da paleta para a tela.
  2. Opcionalmente, preencha o campo Name com um nome (como HelloWorld) para o aplicativo Java.
  3. No campo Archive File no painel de configuração, navegue para a localização no seu sistema local do arquivo HelloWorld.zip.
  4. Na lista Application launch type, escolha Main Class.
  5. Em Main Class, especifique o nome da classe principal para o seu aplicativo (com.ibm.sample.HelloWorld neste exemplo).
  6. Opcionalmente, adicione uma Política JVM usando o ícone + no widget do aplicativo Java. Use a régua de controle no painel de configuração para configurar o tamanho do heap Java e marque a caixa Enable Health Center para habilitar o monitoramento do Health Center.
Figura 2. Etapas para criar o Hello World no Virtual Application Builder
Etapas para criar o Hello World no Virtual Application Builder

Clique em Save no canto superior esquerdo para salvar um aplicativo virtual para HelloWorld, atribuindo um nome e uma descrição a ele.

Voltando para a janela Virtual Application Pattern, implemente o novo aplicativo virtual:

  1. Selecione o aplicativo HelloWorld na lista esquerda de aplicativos.
  2. Clique no botão Deploy .
  3. Selecione o perfil do ambiente ou grupo de nuvem adequado e clique em OK.

O aplicativo agora está sendo implementado e estará disponível em breve!

Como monitorar o aplicativo: arquivos de log

Quando você tiver um aplicativo implementado, ele aparece no painel Virtual Application Instances. As etapas a seguir (mostradas na Figura 3) permitem monitorar o estado das implementações de aplicativo Java:

  1. Selecione Instances -> Virtual Applications para abrir o painel Virtual Application Instances.
  2. Certifique-se de que Application Pattern Type for Java 1.0 esteja selecionado no menu suspenso Virtual Application Instances.

    Todos os seus aplicativos virtuais Java implementados devem ser listados no painel esquerdo, junto a uma visualização de alto nível do status: Running, Stopped ou Error. Para obter mais detalhes sobre o seu aplicativo virtual:

    1. Selecione o aplicativo no painel esquerdo.
    2. Clique no link Log sob VM Status para abrir o Visualizador de Logs.
    3. Clique no ícone Manage para abrir o Virtual Application Console.
Figura 3. Etapas para ativar o Virtual Application Console
Etapas para ativar o Virtual Application Console

No Visualizador de Logs (mostrado na Figura 4), é possível usar a visualização em árvore no painel esquerdo para buscar os arquivos de log para o aplicativo implementado. As seguintes etapas mostram os arquivos de log do aplicativo Java em si:

  1. Selecione JAVA -> /opt/java-deploy na visualização em árvore.
  2. Selecione stdout.log para mostrar a mensagem "Hello World!" do aplicativo no painel principal.
  3. Opcionalmente, selecione verbosegc001.log para ver o histórico de coleta de lixo.
  4. Opcionalmente, selecione o símbolo de download no lado direito do nome do arquivo para fazer o download do arquivo.
Figura 4. Etapas para visualizar arquivos de log no Visualizador de Logs
Etapas para visualizar arquivos de log no Visualizador de Logs

Quaisquer arquivos de dump também aparecerão nessa parte da visualização, junta a quaisquer arquivos adicionados ao Visualizador de Logs usando o Arquivo monitorado .

Como monitorar o aplicativo: monitoramento em tempo real

No Virtual Application Console, há a opção de usar:

  • A guia Monitoring para ver um monitoramento em tempo real do uso de recursos do aplicativo implementado
  • A guia Logging para abrir o Visualizador de Logs
  • A guia Operation para fazer modificações ao aplicativo em execução

O IBM Application Pattern para Java permite habilitar o Health Center para ser anexado ao aplicativo, mesmo que não tenha sido configurado usando a Política da JVM no Virtual Application Builder. Use as seguintes etapas (mostradas na Figura 5):

  1. Selecione a guia Operation.
  2. Selecione a entrada JAVA na lista de operações disponíveis.
  3. Expanda o item Attach Health Center .
  4. Opcionalmente, especifique a porta em que o Health Center pode se conectar.
  5. Opcionalmente, especifique o endereço IP ou IP/máscara de rede a partir do qual o cliente do Health Center pode se conectar.
  6. Clique no botão Submit .
Figura 5. Etapas para habilitar o monitoramento do Health Center no tempo de execução
Etapas para habilitar o monitoramento do Health Center no tempo de execução

O cliente do IBM Monitoring and Diagnostic Tools para Java - Health Center que está indisponível no IBM Support Assistant pode, então, ser conectado ao aplicativo para fornecer monitoramento com gasto adicional muito baixo do que o aplicativo está fazendo. Também fornece uma rota para solicitar que arquivos de dump sejam gerados e habilita um nível maior de coleta de dados — por exemplo, criação de perfil de alocação.


Cenários de uso do Java Virtual Application Pattern

Foi conveniente usar o HelloWorld para mostrar as etapas para implementar um aplicativo Java como um aplicativo virtual. Mas o HelloWorld não é exatamente um exemplo útil de um aplicativo do mundo real, especialmente quando está sendo implementado em um ambiente de nuvem baseado em servidor. Agora serão fornecidos vários exemplos muito mais úteis para mostrar como os aplicativos existentes podem ser movidos para a nuvem via IBM Application Pattern para Java. Eles são todos baseados no uso de aplicativos Java de software livre, então é possível testar os exemplos sem custos de licença.

Middleware de software livre: Apache Tomcat

É possível usar o IBM Application Pattern para Java para criar um aplicativo virtual ou qualquer middleware baseado em Java fornecendo o middleware como parte do aplicativo. Um bom exemplo é implementar o Apache Tomcat e um aplicativo da web. É possível fazer isso de duas maneiras: empacotar ambos em um archive a ser enviado por upload para o componente de aplicativo Java; ou implementar o Apache Tomcat como o aplicativo Java e implementar o aplicativo da web usando um componente de Archive adicional . O segundo método normalmente é preferível, pois não requer a manipulação de archives e é possível salvar a configuração do Apache Tomcat como um modelo, apenas adicionando o aplicativo da web para criar um novo aplicativo virtual.

Como um exercício, você criará uma implementação do Apache Tomcat 7.0.27 com um aplicativo da web de amostra adicionado separadamente no Virtual Application Builder. Comece fazendo o download e salvando um archive Tomcat de Apache.org e o aplicativo da web de amostra (simpleapp.war) fornecido com este artigo (consulte Download). Então siga estas etapas (ilustradas na Figura 6):

  1. Arraste um widget do Aplicativo Java da paleta para a tela para ser o servidor Tomcat. Opcionalmente, atribua um nome (como Apache Tomcat 7.0.27 Server).
  2. No campo Archive File configuration, navegue para o archive Tomcat transferido por download de Apache.org (apache-tomcat-7.0.27.tar.gz, por exemplo). Use esse arquivo exatamente como está; não é preciso fazer qualquer alteração a ele.
  3. Selecione Command Line como o tipo de ativação do Aplicativo para o componente de aplicativo Java e especifique o script de ativação do Tomcat — por exemplo, /apache-tomcat-7.0.27/bin/startup.sh. Esse é o script de ativação — fornecido no download de apache.org — usado para iniciar o servidor Tomcat.
  4. Adicione um listener Genérico arrastando-o de Other Components sob Assets da paleta na tela e configure-o para permitir conexões na porta 8080. Isso abrirá no firewall para conexões de entrada na porta 8080 a que o Tomcat escutará.
  5. Arraste um Arquivo monitorado da lista Other Components para a tela e configure-o para monitorar os arquivos de log do Tomcat — por exemplo, /apache-tomcat-7.0.27/logs/*.log. Isso adiciona os arquivos de log criados pelo Tomcat ao Visualizador de Logs. O uso do curinga *.log significa que ele selecionará todos os arquivos .log neste diretório: catalina.log, manager.log, e assim por diante.
  6. Adicione um Additional archive file para implementar o aplicativo da web simpleapp.war. Atribua a ele um valor de Deploy path de /apache-tomcat-7.0.27/webapps/ e escolha o archive Java como o Type of archive file.
Figura 6. Etapas para desenvolver uma implementação do Apache Tomcat no Virtual Application Builder
Etapas para desenvolver uma implementação do Apache Tomcat no Virtual Application Builder

Agora há uma instância do Apache Tomcat com o aplicativo da web SimpleApp que pode ser implementada. Uma vez implementada, estará disponível no endereço IP fornecido e na porta 8080 (http://endereço IP:8080/ dará a primeira página do Tomcat.

Um padrão virtual de aplicativo da web mais avançado

A IBM oferece um Web Application Pattern dedicado, que fornece um conjunto de capacidades muito mais avançado para implementar aplicativos da web (bem como aplicativos corporativos e aplicativos OSGi) na nuvem, incluindo conexões configuradas para bancos de dados e filas de mensagens, bem como ajuste automático de escala com carga balanceada. Mas se você desejar executar um servidor de aplicativo específico (como Tomcat) na nuvem, agora tem um meio simples de fazer isso usando o IBM Application Pattern para Java.

Em vez de adicionar o aplicativo da web SimpleApp, também teria sido possível adicionar o componente de Additional archive file e configurá-lo com o caminho Deploy, mas não adicionar o aplicativo da web. O aplicativo virtual então teria sido salvo como um modelo reutilizável com a opção de Additional archive file como o único campo não bloqueado (modificável) no modelo. Usuários posteriores poderiam, então, criar seus próprios aplicativos a partir do perfil padrão do Tomcat 7.0.27, com apenas a habilidade de adicionar seu aplicativo da web.

Teste de carga com base na nuvem: Apache JMeter

Outro cenário de uso para o IBM Application Pattern para Java é o teste de carga com base na nuvem, em que mecanismos baseados na nuvem são implementados para aplicativos da web de teste de carga (ou outros). Para esse fim, é possível usar o IBM Application Pattern para Java para implementar o Apache JMeter e usar sua capacidade de mecanismo de teste de carga de servidor.

Presumindo que um archive JMeter tenha sido obtido por download e salve a partir de Apache, siga estas etapas (ilustradas na Figura 7) para criar uma implementação do Apache JMeter 2.7 no modo de servidor no Virtual Application Builder:

  1. Arraste um widget do Aplicativo Java da paleta para o servidor JMeter. Opcionalmente, é possível atribuir um nome a ele, como Apache JMeter 2.7 Server.
  2. Do campo Archive File configuration, navegue para o archive JMeter obtido por download de Apache.org — como apache-jmeter-2.7.tar.gz. Não é preciso fazer nenhuma alteração ao download.
  3. Selecione Command Line na lista Application launch type e insira /apache-jmeter-2.7/bin/jmeter-server -Jserver.rmi.localport=6437 no campo Command Line. Esse é o script de ativação do servidor — fornecido no download de apache.org — que é usado para iniciar o servidor JMeter, junto com uma opção adicional que define a porta de conexão RMI, em vez de usar uma aleatoriamente atribuída (o que causaria problemas no firewall).
  4. Adicione um listener Genérico para o Registro RMI em 1099 e outro para a conexão RMI em 6437 (especificado usando a opção localport ). Dois listeners genéricos são necessários porque somente é possível especificar uma única porta em cada. O Registro RMI assume como padrão a porta 1099, e a porta da conexão RMI foi especificada usando a opção Jserver.rmi.localport=6437 na linha de comando.
  5. Adicione um destino Genérico em 9080 para o servidor de aplicativo (AppServer na Figura 7) hospedando o aplicativo da web que será testado. Um IP/máscara de rede do servidor de 0.0.0.0/0.0.0.0 permite qualquer endereço IP de aplicativo-servidor. O componente de destino genérico com uma porta de 9080 significa que pode enviar tráfego para a porta 9080 no servidor de destino, que é a porta que um aplicativo implementado usando o Web Application Pattern usará. Isso é útil quando não se sabe onde o aplicativo de destino estará. Também é possível limitar a um endereço IP específico ou um intervalo de endereços IP.
  6. Arraste um arquivo monitorado e configure-o para monitorar os arquivos de log do JMeter, como /jmeter-server.log, o arquivo de log padrão do JMeter que mostra o status dos testes de carga sendo executados pelo servidor.
Figura 7. Etapas para desenvolver uma implementação do Apache JMeter no Virtual Application Builder
Etapas para desenvolver uma implementação do Apache JMeter no Virtual Application Builder

Quando o aplicativo de servidor do JMeter tiver sido implementado, é possível executar um teste de carga a partir de uma instalação de cliente/desktop do JMeter ativando o cliente com a opção -Jremote_hosts=comma-separated server list e usando a opção Run -> Remote Start dentro da UI do Cliente JMeter para ativar o teste a partir dos servidores na nuvem.

É possível executar um plano de teste do JMeter (consulte Download e a nota de rodapé associada) com relação a uma implementação da amostra "Sample Web application only" fornecida como parte do padrão Web Application Pattern Type 2.0 usando as seguintes etapas:

  1. Execute o JMeter a partir da linha de comando com o endereço da implementação do servidor do JMeter — por exemplo,
    jmeter -Jremote_hosts=172.17.108.222.
  2. Dentro do JMeter, clique em File -> Open para abrir um plano de teste.
  3. Selecione o arquivo SampleWebAppTestPlan.jmx .
  4. Selecione Test Plan -> Thread Group -> HTTP Requests Default na visualização em árvore no painel esquerdo.
  5. Modifique Web Server: Server Name ou endereço IP no painel principal para ser o endereço parte do terminal para a sua amostra "Sample Web application only".
  6. Modifique o caminho de HTTP Request: para ser qualquer outra parte do endereço de terminal antes de /webapp/.
  7. Selecione Run -> Remote Start -> JMeter Server Address para iniciar o teste.

As etapas a seguir permitem ver se a carga está sendo conduzida com relação à amostra "Sample Web application only":

  1. Para a amostra implementada, selecione Manage para ativar o Virtual Application Console.
  2. Selecione Monitoring > Middleware.
  3. Selecione o item do aplicativo da web na lista — por exemplo, Web-Application-was.11342004774648.

O painel principal deve, então, exibir vários gráficos que podem ser usados para monitorar o aplicativo da web implementado. Se o aplicativo da web estiver recebendo carga do servidor JMeter, o gráfico Web Applications Request Count deve mostrar solicitações sendo atendidas, como ilustra a Figura 8:

Figura 8. Visualização da Web Application Request para uma implementação de aplicativo da web de amostra sob um teste de carga
Visualização da Web Application Request para uma implementação de aplicativo da web de amostra sob um teste de carga

Outros casos de uso

É possível criar aplicativos virtuais para vários outros casos de uso e middleware, além de implementações de aplicativo virtual usando Apache Tomcat e Apache JMeter. Eles incluem:

  • Eclipse Jetty
  • JBoss
  • Apache ftpServer
  • Apache Derby
  • Apache MINA

Normalmente, o desafio para criar qualquer novo aplicativo virtual usando middleware de terceiros é saber que portas de firewall de entrada e saída precisam ser configuradas usando o listener genérico e os componentes de destino genéricos. Se a documentação do produto não listar as portas que precisam ser abertas, é possível implementar o aplicativo e verificar os logs do produto para SocketExceptions, ou implementar o produto localmente para usar ferramentas como netstat para ver que portas estão em uso.

Para ajudar a começar, modelos para o Tomcat e o JMeter são fornecidos com este artigo (consulte Download), e modelos para Eclipse Jetty, JBoss, Derby, ftpServer e mais serão disponibilizados no blog do IBM Application Pattern para Java (consulte Recursos). Para usar os modelos, simplesmente faça o download do pacote de middleware adequado, transfira-o por upload para o componente de aplicativo Java usando o Virtual Application Builder e clique em Deploy!


Conclusão

O IBM Application Pattern para Java não é uma oferta IaaS nem PaaS na definição mais verdadeira desses termos. A flexibilidade que ele fornece em permitir a implementação de qualquer aplicativo envolve uma troca: o usuário deve definir alguma topologia e — quando um serviço de middleware for necessário— fornecer o middleware. Neste sentido, se enquadra melhor na definição de IaaS. Porém, também tem vários recursos de plataforma: um tempo de execução para implementar qualquer aplicativo baseado em Java puro de maneira simples e repetível com conhecimento integrado cobrindo ajuste, gerenciamento de ciclo de vida e monitoramento de aplicativo. Qualquer aplicativo Java existente agora tem o potencial de ser transferido facilmente para um ambiente baseado em nuvem. Quando tiver sido movido, pode ser reutilizado como uma plataforma ou como um modelo modificável que se torna uma oferta no estilo PaaS.


Downloads

DescriçãoNomeTamanho
HelloWorld applicationHelloWorld.zip1KB
Apache Tomcat 7.0.27 Application TemplateTomcat-7.0.27-Template.zip2KB
Simple web application for use with Apache Tomcatsimpleapp.war2KB
Apache JMeter 2.7 Application TemplateJMeter-2.7-Template.zip2KB
Sample JMeter test plan1SampleWebAppTestPlan.jmx6KB

Nota

  1. Este plano de teste executa no "aplicativo da web de amostra" fornecido como parte do padrão Web Application Type 2.0. Você precisará ajustar o endereço IP e os caminhos.

Recursos

Aprender

Obter produtos e tecnologias

Discutir

Comentários

developerWorks: Conecte-se

Los campos obligatorios están marcados con un asterisco (*).


Precisa de um ID IBM?
Esqueceu seu ID IBM?


Esqueceu sua senha?
Alterar sua senha

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


A primeira vez que você entrar no developerWorks, um perfil é criado para você. Informações no seu perfil (seu nome, país / região, e nome da empresa) é apresentado ao público e vai acompanhar qualquer conteúdo que você postar, a menos que você opte por esconder o nome da empresa. Você pode atualizar sua conta IBM a qualquer momento.

Todas as informações enviadas são seguras.

Elija su nombre para mostrar



Ao se conectar ao developerWorks pela primeira vez, é criado um perfil para você e é necessário selecionar um nome de exibição. O nome de exibição acompanhará o conteúdo que você postar no developerWorks.

Escolha um nome de exibição de 3 - 31 caracteres. Seu nome de exibição deve ser exclusivo na comunidade do developerWorks e não deve ser o seu endereço de email por motivo de privacidade.

Los campos obligatorios están marcados con un asterisco (*).

(Escolha um nome de exibição de 3 - 31 caracteres.)

Ao clicar em Enviar, você concorda com os termos e condições do developerWorks.

 


Todas as informações enviadas são seguras.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=80
Zone=Tecnologia Java, Cloud computing
ArticleID=839117
ArticleTitle=Implementado na nuvem com o IBM Application Pattern para Java
publish-date=08302013