Successfully reported this slideshow.
Evitando Armadilhas noProjeto de Aplicações Java EE              para uso eficaz na nuvemAlberto Lemos (Dr. Spock)      Dan...
Agenda•   Motivação•   Desafios ao implantar    aplicações Java EE na nuvem•   Dicas e truques•   Plataformas PaaS Java ava...
Objetivo“Prover algumas ideias para desenvolvedores e   arquitetos Java para ajudá-los a projetaraplicações Java EE que fu...
Agenda•   Motivação•   Desafios ao implantar    aplicações Java EE na nuvem•   Dicas e truques•   Plataformas PaaS Java ava...
Motivação•   Como computação em nuvem    pode afetar a arquitetura ou o    código de uma aplicação Java EE?•   As novas fu...
Agenda•   Motivação•   Desafios ao implantar    aplicações Java EE na nuvem•   Dicas e truques•   Plataformas PaaS Java ava...
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...
Java EE Services                                                Cloud ServicesPersistence                                 ...
Java EE Services                                                     Cloud ServicesPersistence                            ...
PaaS Avaliados
Desafios•   Elasticidade•   Modelo de implantação•   Suporte a Java EE completo•   Serviços proprietários•   Gerenciamento ...
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 ava...
Aplicação Java EE Típica
Database A           Java EE Application                                              Database Server 1Java EE Server     ...
Elasticidade
Database A           Java EE Application                                              Database Server 1Java EE Server     ...
Load Balancer                                                    Load Balancer Server        Java EE Application          ...
Load Balancer                                                    Load Balancer Server        Java EE Application          ...
Desafios para Elasticidade• Gerenciamento de estato• Tempo de inicialização da aplicação• Complexidade de comunicação• Desc...
Gerenciamento de Estado• Procure criar serviços sem estado (stateless)  •   Use EJB stateless• REST.  •   JAX-RS.• Funcion...
Gerenciamento de Estado• Armazene o estado em uma solução de  cache distribuído •   Memcached, Infinispan, Oracle Coherence...
Tempo de inicialização da aplicação• Reduza o tamanho do pacote da aplicação.  •   Coloque recursos estáticos em pacotes  ...
Complexidade de comunicação• Desacople as aplicações usando mensagens  assíncronas.• Crie serviços atômicos e idempotentes...
Load Balancer                                                    Load Balancer Server        Java EE Application          ...
Load Balancer                                             Load Balancer Server     Java EE Application        Java EE Appl...
Load Balancer                                            Load Balancer Server     Java EE Application        Java EE Appli...
Load Balancer                                             Load Balancer Server      Java EE Application        Java EE App...
Load Balancer                                                           Load Balancer Server            Java EE Applicatio...
Descoberta de recursos• Deixe o gerenciamento de recursos para o  container • Localização de recursos se torna    transpar...
Load Balancer                                                       Load Balancer Server           Java EE Application    ...
Load Balancer                                                       Load Balancer Server           Java EE Application    ...
Load Balancer                                                       Load Balancer Server           Java EE Application    ...
Agenda•   Motivação•   Desafios ao implantar    aplicações Java EE na nuvem•   Dicas e truques•   Plataformas PaaS Java ava...
Provedores PaaS Java avaliados                Java EE full    Standard    Non-std APIs/   Distributed   Supported App   Pa...
Últimas dicas!•   Prefira um provedor de nuvem que    ofereça a pilha completa de Java EE.•   Use CDI para ter suporte a um...
Agenda•   Motivação•   Desafios ao implantar    aplicações Java EE na nuvem•   Dicas e truques•   Plataformas PaaS Java ava...
Uma visão do futuro!Java EE Application    •   Glassfish para Amazon                           Web ServicesJava EE App Serv...
Obrigado!•   Alberto Lemos (Dr. Spock)    @drspockbr    javaone@spock.com.br•   Danival T. Calegari    @danivaltc    daniv...
Evitando as armadilhas no projeto de aplicações Java EE para uso eficaz da nuvem
Evitando as armadilhas no projeto de aplicações Java EE para uso eficaz da nuvem
Próximos SlideShares
Carregando em…5
×

Evitando as armadilhas no projeto de aplicações Java EE para uso eficaz da nuvem

340 visualizações

Publicada em

Apresentação feita no JavaOne Latin America 2012 com o @drspockbr com alguma dicas de como projetar aplicações Java EE que funcionem bem em um provedor de nuvem.

Publicada em: Tecnologia
  • Seja o primeiro a comentar

Evitando as armadilhas no projeto de aplicações Java EE para uso eficaz da nuvem

  1. 1. 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
  2. 2. 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
  3. 3. 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”
  4. 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
  5. 5. 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
  6. 6. 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
  7. 7. Java EE na Nuvem
  8. 8. Java EE na Nuvem Operational System Iaas
  9. 9. Java EE App Server JVM Operational SystemIaas
  10. 10. Java EE App Server JVMPaas Operational SystemIaas
  11. 11. Java EE Application Java EE App Server JVMPaas Operational SystemIaas
  12. 12. Java EE ServicesPersistence Java EE ApplicationMessagingTransaction Java EE App Server Security Resource JVM Cache PaasComponent Operational System Iaas
  13. 13. 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
  14. 14. 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
  15. 15. PaaS Avaliados
  16. 16. Desafios• Elasticidade• Modelo de implantação• Suporte a Java EE completo• Serviços proprietários• Gerenciamento de recursos
  17. 17. Balanceador de CargaMáquina Virtual
  18. 18. Balanceador de CargaMáquina Virtual
  19. 19. Balanceador de CargaMáquina Virtual
  20. 20. Balanceador de CargaMáquina Virtual
  21. 21. 1000 usuários Balanceador de CargaMáquina Virtual 100 usuários por VM
  22. 22. 500 usuários Balanceador de CargaMáquina Virtual 50 usuários porVM
  23. 23. 100 usuários Balanceador de CargaMáquina Virtual 10 usuários por VM
  24. 24. 100 usuários Balanceador de CargaMáquina Virtual 100 usuários em uma VM
  25. 25. 100 usuários Balanceador de CargaMáquina Virtual 100 usuários em uma VM
  26. 26. 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
  27. 27. Aplicação Java EE Típica
  28. 28. 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
  29. 29. Elasticidade
  30. 30. 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
  31. 31. 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
  32. 32. 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
  33. 33. Desafios para Elasticidade• Gerenciamento de estato• Tempo de inicialização da aplicação• Complexidade de comunicação• Descoberta de recursos
  34. 34. 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).
  35. 35. 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.
  36. 36. 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.
  37. 37. 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).
  38. 38. 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
  39. 39. 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
  40. 40. 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
  41. 41. 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
  42. 42. 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
  43. 43. 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.
  44. 44. 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
  45. 45. 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
  46. 46. 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
  47. 47. 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
  48. 48. 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
  49. 49. Ú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.
  50. 50. 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
  51. 51. 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
  52. 52. Obrigado!• Alberto Lemos (Dr. Spock) @drspockbr javaone@spock.com.br• Danival T. Calegari @danivaltc danivaltc@gmail.com

×