• Save
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Upcoming SlideShare
Loading in...5
×
 

Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem

on

  • 749 views

Apresentação realizada no JavaOne latin America 2012 (Brasil) em São Paulo no Transamérica Expo Center.

Apresentação realizada no JavaOne latin America 2012 (Brasil) em São Paulo no Transamérica Expo Center.

Statistics

Views

Total Views
749
Views on SlideShare
739
Embed Views
10

Actions

Likes
3
Downloads
0
Comments
0

2 Embeds 10

https://twitter.com 9
http://twitter.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution-NonCommercial LicenseCC Attribution-NonCommercial License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem Presentation Transcript

  • Evitando Armadilhas noProjeto de Aplicações Java EE para uso eficaz na nuvemAlberto Lemos (Dr. Spock) Danival Taffarel Calegari Senior Software Architect Arquiteto na MATERA Systems SpockNET Instrutor da Globalcode
  • Agenda• Motivação• Desafios ao implantar aplicações Java EE na nuvem• Dicas e truques• Plataformas PaaS Java avaliadas• Adaptador Java EE para serviços na nuvem
  • Objetivo“Prover algumas ideias para desenvolvedores e arquitetos Java para ajudá-los a projetaraplicações Java EE que funcionem bem em um ambiente de nuvem”
  • Agenda• Motivação• Desafios ao implantar aplicações Java EE na nuvem• Dicas e truques• Plataformas PaaS Java avaliadas• Adaptador Java EE para serviços na nuvem
  • Motivação• Como computação em nuvem pode afetar a arquitetura ou o código de uma aplicação Java EE?• As novas funcionalidades do Java EE para nuvem tem como foco apoiar um modelo PaaS para os servidores de aplicações• Não foram definidas novas funcionalidades no modelo de programação para utilização de serviços da nuvem
  • Agenda• Motivação• Desafios ao implantar aplicações Java EE na nuvem• Dicas e truques• Plataformas PaaS Java avaliadas• Adaptador Java EE para serviços na nuvem
  • Java EE na Nuvem
  • Java EE na Nuvem Operational System Iaas
  • Java EE App Server JVM Operational SystemIaas
  • Java EE App Server JVMPaas Operational SystemIaas
  • Java EE Application Java EE App Server JVMPaas Operational SystemIaas
  • Java EE ServicesPersistence Java EE ApplicationMessagingTransaction Java EE App Server Security Resource JVM Cache PaasComponent Operational System Iaas
  • Java EE Services Cloud ServicesPersistence Persistence Java EE ApplicationMessaging MessagingTransaction Monitoring Java EE App Server Security Security Resource JVM NoSQL Cache Paas StorageComponent ... Operational System Iaas
  • Java EE Services Cloud ServicesPersistence Persistence JPA Java EE ApplicationMessaging Messaging JMSTransaction Monitoring JTA Java EE App Server Security Security JAAS Resource JVM NoSQL JNDI Cache Paas StorageComponent ... EJB Operational System non-std API Iaas
  • PaaS Avaliados
  • Desafios• Elasticidade• Modelo de implantação• Suporte a Java EE completo• Serviços proprietários• Gerenciamento de recursos
  • Balanceador de CargaMáquina Virtual
  • Balanceador de CargaMáquina Virtual
  • Balanceador de CargaMáquina Virtual
  • Balanceador de CargaMáquina Virtual
  • 1000 usuários Balanceador de CargaMáquina Virtual 100 usuários por VM
  • 500 usuários Balanceador de CargaMáquina Virtual 50 usuários porVM
  • 100 usuários Balanceador de CargaMáquina Virtual 10 usuários por VM
  • 100 usuários Balanceador de CargaMáquina Virtual 100 usuários em uma VM
  • 100 usuários Balanceador de CargaMáquina Virtual 100 usuários em uma VM
  • Agenda• Motivação• Desafios ao implantar aplicações Java EE na nuvem• Dicas e truques• Plataformas PaaS Java avaliadas• Adaptador Java EE para serviços na nuvem
  • Aplicação Java EE Típica
  • Database A Java EE Application Database Server 1Java EE Server Database B App 1 App 2 Database CApplication Server X Application Server Y Database Server 2
  • Elasticidade
  • Database A Java EE Application Database Server 1Java EE Server Database B App 1 App 2 Database CApplication Server X Application Server Y Database Server 2
  • Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE Server App 1 App 2 Database A Database B Database CApplication Server X Application Server Y Database Server 1 Database Server 2
  • Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE Server App 1 App 2 Database A Database B Database CApplication Server X Application Server Y Database Server 1 Database Server 2
  • Desafios para Elasticidade• Gerenciamento de estato• Tempo de inicialização da aplicação• Complexidade de comunicação• Descoberta de recursos
  • Gerenciamento de Estado• Procure criar serviços sem estado (stateless) • Use EJB stateless• REST. • JAX-RS.• Funcionalidades de JSF • Armazenamento de estado no cliente. • Navegação preemptiva (bookmarkable URLs).
  • Gerenciamento de Estado• Armazene o estado em uma solução de cache distribuído • Memcached, Infinispan, Oracle Coherence, etc. • JSR 107 (JCache) planejado para Java EE 7. • Cuidado com o alto custo de transferência de dados pela rede.
  • Tempo de inicialização da aplicação• Reduza o tamanho do pacote da aplicação. • Coloque recursos estáticos em pacotes separados. • Recursos estáticos podem ser colocados em serviços de conteúdo.• Prefira carregar os recursos de forma lazy.
  • Complexidade de comunicação• Desacople as aplicações usando mensagens assíncronas.• Crie serviços atômicos e idempotentes.• Mantenha os dados dinâmicos próximos da aplicação e dados estáticos próximos do usuário final. • Considere fazer particionamento de banco de dados (shards).
  • Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE Server App 1 App 2 Database A Database B Database CApplication Server X Application Server Y Database Server 1 Database Server 2
  • Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE ApplicationJava EE Server Java EE Server Java EE Server Java EE Server Serviço de Mensagem App 1 App 2 Application Server X Application Server Y
  • Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE ApplicationJava EE Server Java EE Server Java EE Server Java EE Server Database A Database B Database C Database Server 1 Database Server 2
  • Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE ServerZone 01 Zone 02 Database A Database B Database C Database Server 1 Database Server 2
  • Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE Server DB A - S01 DB B - S01 DB C - S01 DB A - S02 DB B - S02 DB C - S02 Database Server 1 S01 Database Server 2 S01 Database Server 1 S02 Database Server 2 S02Zone 01 Zone 02
  • Descoberta de recursos• Deixe o gerenciamento de recursos para o container • Localização de recursos se torna transparente para a aplicação com o uso de CDI.• Use balanceadores de carga para acessar recursos internos.
  • Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE Server DB A DB B DB C DB A DB B DB CDatabase Server I Database Server 2 Database Server 3 Database Server 4
  • Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE Server Load Balancer DB A DB B DB C DB A DB B DB CDatabase Server I Database Server 2 Database Server 3 Database Server 4
  • Load Balancer Load Balancer Server Java EE Application Java EE Application Java EE Application Java EE Application Java EE Server Java EE Server Java EE Server Java EE Server Load Balancer DB A DB B DB C DB A DB B DB CDatabase Server I Database Server 2 Database Server 3 Database Server 4
  • Agenda• Motivação• Desafios ao implantar aplicações Java EE na nuvem• Dicas e truques• Plataformas PaaS Java avaliadas• Adaptador Java EE para serviços na nuvem
  • Provedores PaaS Java avaliados Java EE full Standard Non-std APIs/ Distributed Supported App PaaS stack Deployment Services Cache ServersAWS Beanstalk Tomcat 6/7Oracle Cloud WebLogic Openshift JBossAS 6/7 Tomcat 6/7 - Cloudbees Glassfish 3 Heroku Tomcat 7 Jetty 6 - Tomcat 6/7 Jelastic - Glassfish 3Cloud Foundry Tomcat 7 OCT/12 GAE Jetty
  • Últimas dicas!• Prefira um provedor de nuvem que ofereça a pilha completa de Java EE.• Use CDI para ter suporte a um modelo de componentes de negócio injetáveis em um provedor de nuvem que ofereça PaaS com apenas container Web.• Evite serviços de nuvem proprietários para não fica preso ao provedor de nuvem.
  • Agenda• Motivação• Desafios ao implantar aplicações Java EE na nuvem• Dicas e truques• Plataformas PaaS Java avaliadas• Adaptador Java EE para serviços na nuvem
  • Uma visão do futuro!Java EE Application • Glassfish para Amazon Web ServicesJava EE App Server • Glassfish para Oracle Java EE Services Cloud Cloud Adapter • Application Servers para ambiente IaaS Cloud Services Cloud Provider
  • Obrigado!• Alberto Lemos (Dr. Spock) @drspockbr javaone@spock.com.br• Danival T. Calegari @danivaltc danivaltc@gmail.com