SlideShare une entreprise Scribd logo
1  sur  54
Evitando Armadilhas no
Projeto de Aplicações Java EE
              para uso eficaz na nuvem
Alberto 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 projetar
aplicaçõ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 System
Iaas
Java EE App Server

              JVM
Paas


       Operational System
Iaas
Java EE Application


       Java EE App Server

              JVM
Paas


       Operational System
Iaas
Java EE Services

Persistence
                          Java EE Application
Messaging
Transaction
                          Java EE App Server
  Security
 Resource                        JVM
   Cache           Paas


Component
                          Operational System
                   Iaas
Java EE Services
                                                Cloud Services
Persistence                                     Persistence
                          Java EE Application
Messaging                                       Messaging
Transaction                                     Monitoring
                          Java EE App Server
  Security                                       Security
 Resource                        JVM              NoSQL
   Cache           Paas
                                                  Storage
Component                                             ...
                          Operational System
                   Iaas
Java EE Services
                                                     Cloud Services
Persistence                                         Persistence
               JPA          Java EE Application
Messaging                                            Messaging
              JMS
Transaction                                         Monitoring
              JTA           Java EE App Server
  Security                                             Security
              JAAS
 Resource                          JVM                 NoSQL
              JNDI
   Cache             Paas
                                                       Storage
Component                                                  ...
               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 Carga




Máquina Virtual
Balanceador de Carga




Máquina Virtual
Balanceador de Carga




Máquina Virtual
Balanceador de Carga




Máquina Virtual
1000 usuários



                  Balanceador de Carga




Máquina Virtual       100 usuários por VM
500 usuários



                  Balanceador de Carga




Máquina Virtual        50 usuários porVM
100 usuários



                  Balanceador de Carga




Máquina Virtual        10 usuários por VM
100 usuários



                  Balanceador de Carga




Máquina Virtual      100 usuários em uma VM
100 usuários



                  Balanceador de Carga




Má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
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Aplicação Java EE Típica
Database A
           Java EE Application
                                              Database Server 1
Java EE Server

                                                 Database B

       App 1                  App 2             Database C
Application Server X   Application Server Y   Database Server 2
Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem
Elasticidade
Database A
           Java EE Application
                                              Database Server 1
Java EE Server

                                                 Database B

       App 1                  App 2             Database C
Application 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 C
Application 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 C
Application 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 C
Application 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



                                             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 Application

Java 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 Server

Zone 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 S02

Zone 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 C
Database 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 C
Database 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 C
Database 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         Servers

AWS Beanstalk                                                                 Tomcat 6/7

Oracle Cloud                                                                  WebLogic

  Openshift                                                                  JBossAS 6/7

                                                                             Tomcat 6/7 -
 Cloudbees
                                                                              Glassfish 3

   Heroku                                                                      Tomcat 7

                                                                          Jetty 6 - Tomcat 6/7
   Jelastic
                                                                              - Glassfish 3

Cloud 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 Services

Java 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

Contenu connexe

En vedette

Outlook Golf Article 2016
Outlook Golf Article 2016Outlook Golf Article 2016
Outlook Golf Article 2016John Parr
 
Img 0942
Img 0942Img 0942
Img 0942cmckoy
 
Sachin GDI Cr.Opr. exp letter
Sachin GDI Cr.Opr. exp letterSachin GDI Cr.Opr. exp letter
Sachin GDI Cr.Opr. exp lettersachin bhardwaj
 
5 peliculas de romance mas populares
5 peliculas de romance mas populares5 peliculas de romance mas populares
5 peliculas de romance mas popularesKarla Mieles
 
Pemanfaatan Excel untuk Penyajian Data Mata Kuliah Statistik Dasar
Pemanfaatan Excel untuk Penyajian Data Mata Kuliah Statistik DasarPemanfaatan Excel untuk Penyajian Data Mata Kuliah Statistik Dasar
Pemanfaatan Excel untuk Penyajian Data Mata Kuliah Statistik DasarNurul Ain Safura
 
Образование детей с особыми образовательными потребностями
Образование детей с особыми образовательными потребностямиОбразование детей с особыми образовательными потребностями
Образование детей с особыми образовательными потребностямиchanna1971 Pronchewa
 

En vedette (10)

Outlook Golf Article 2016
Outlook Golf Article 2016Outlook Golf Article 2016
Outlook Golf Article 2016
 
Annex1.ud hortsurbans
Annex1.ud hortsurbansAnnex1.ud hortsurbans
Annex1.ud hortsurbans
 
Ada 1 BLOQUE 3
Ada 1 BLOQUE 3Ada 1 BLOQUE 3
Ada 1 BLOQUE 3
 
Metodología
MetodologíaMetodología
Metodología
 
Img 0942
Img 0942Img 0942
Img 0942
 
Sachin GDI Cr.Opr. exp letter
Sachin GDI Cr.Opr. exp letterSachin GDI Cr.Opr. exp letter
Sachin GDI Cr.Opr. exp letter
 
5 peliculas de romance mas populares
5 peliculas de romance mas populares5 peliculas de romance mas populares
5 peliculas de romance mas populares
 
Codigo ascii
Codigo asciiCodigo ascii
Codigo ascii
 
Pemanfaatan Excel untuk Penyajian Data Mata Kuliah Statistik Dasar
Pemanfaatan Excel untuk Penyajian Data Mata Kuliah Statistik DasarPemanfaatan Excel untuk Penyajian Data Mata Kuliah Statistik Dasar
Pemanfaatan Excel untuk Penyajian Data Mata Kuliah Statistik Dasar
 
Образование детей с особыми образовательными потребностями
Образование детей с особыми образовательными потребностямиОбразование детей с особыми образовательными потребностями
Образование детей с особыми образовательными потребностями
 

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

MySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL Brasil
 
Java Platform, Enterprise Edition
Java Platform, Enterprise EditionJava Platform, Enterprise Edition
Java Platform, Enterprise EditionDaniel Arndt Alves
 
O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?Bruno Borges
 
17h30 aws-databases-summit
17h30   aws-databases-summit17h30   aws-databases-summit
17h30 aws-databases-summitinfolive
 
Introdução ao AWS Elastic Beanstalk - Webinar
Introdução ao AWS Elastic Beanstalk - WebinarIntrodução ao AWS Elastic Beanstalk - Webinar
Introdução ao AWS Elastic Beanstalk - WebinarAmazon Web Services LATAM
 
Desenvolvendo software como serviço para negócios
Desenvolvendo software como serviço para negóciosDesenvolvendo software como serviço para negócios
Desenvolvendo software como serviço para negóciosFernando Correia
 
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEGlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEBruno Borges
 
Desenvolvimento RIA com Java
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
Desenvolvimento RIA com Javaarmeniocardoso
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaMariana de Azevedo Santos
 
Apresentação servidores de aplicação
Apresentação   servidores de aplicaçãoApresentação   servidores de aplicação
Apresentação servidores de aplicaçãoHelen Picoli
 
Desenvolvimento Ria com Java
Desenvolvimento Ria com JavaDesenvolvimento Ria com Java
Desenvolvimento Ria com JavaTI Infnet
 

Similaire à Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem (20)

Serra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EESerra StarTec 2013 - Java EE
Serra StarTec 2013 - Java EE
 
MySQL + Java - Manuel Contreras
MySQL + Java - Manuel ContrerasMySQL + Java - Manuel Contreras
MySQL + Java - Manuel Contreras
 
JUDCon Brazil 2013
JUDCon Brazil 2013JUDCon Brazil 2013
JUDCon Brazil 2013
 
Java Platform, Enterprise Edition
Java Platform, Enterprise EditionJava Platform, Enterprise Edition
Java Platform, Enterprise Edition
 
Tecnologia Java
Tecnologia JavaTecnologia Java
Tecnologia Java
 
O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?O que ganhamos com Java e Cloud Computing?
O que ganhamos com Java e Cloud Computing?
 
Introducao EJB 3
Introducao EJB 3Introducao EJB 3
Introducao EJB 3
 
Bancos de Dados na AWS
Bancos de Dados na AWSBancos de Dados na AWS
Bancos de Dados na AWS
 
Introdução - Java WEB
Introdução - Java WEBIntrodução - Java WEB
Introdução - Java WEB
 
Introdução ao java
Introdução ao javaIntrodução ao java
Introdução ao java
 
17h30 aws-databases-summit
17h30   aws-databases-summit17h30   aws-databases-summit
17h30 aws-databases-summit
 
Arquiteturas Cloud na AWS: Uma Introducao
Arquiteturas Cloud na AWS: Uma IntroducaoArquiteturas Cloud na AWS: Uma Introducao
Arquiteturas Cloud na AWS: Uma Introducao
 
GUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EEGUJavaSC - Mini-curso Java EE
GUJavaSC - Mini-curso Java EE
 
Introdução ao AWS Elastic Beanstalk - Webinar
Introdução ao AWS Elastic Beanstalk - WebinarIntrodução ao AWS Elastic Beanstalk - Webinar
Introdução ao AWS Elastic Beanstalk - Webinar
 
Desenvolvendo software como serviço para negócios
Desenvolvendo software como serviço para negóciosDesenvolvendo software como serviço para negócios
Desenvolvendo software como serviço para negócios
 
GlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EEGlassFish, Maven, Cloud e o futuro do Java EE
GlassFish, Maven, Cloud e o futuro do Java EE
 
Desenvolvimento RIA com Java
Desenvolvimento RIA com JavaDesenvolvimento RIA com Java
Desenvolvimento RIA com Java
 
Spring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em JavaSpring: Overview do framework mais popular para desenvolvimento em Java
Spring: Overview do framework mais popular para desenvolvimento em Java
 
Apresentação servidores de aplicação
Apresentação   servidores de aplicaçãoApresentação   servidores de aplicação
Apresentação servidores de aplicação
 
Desenvolvimento Ria com Java
Desenvolvimento Ria com JavaDesenvolvimento Ria com Java
Desenvolvimento Ria com Java
 

Plus de Dr. Spock

Improving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific LanguageImproving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific LanguageDr. Spock
 
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...Dr. Spock
 
Workshop de Introdução ao ScrumToys
Workshop de Introdução ao ScrumToysWorkshop de Introdução ao ScrumToys
Workshop de Introdução ao ScrumToysDr. Spock
 
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6Dr. Spock
 
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6Dr. Spock
 
TDC2011: Spring Mobile
TDC2011: Spring MobileTDC2011: Spring Mobile
TDC2011: Spring MobileDr. Spock
 
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvensTDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvensDr. Spock
 
TDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseTDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseDr. Spock
 
TDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureTDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureDr. Spock
 
Spring Framework no desenvolvimento móvel
Spring Framework no desenvolvimento móvelSpring Framework no desenvolvimento móvel
Spring Framework no desenvolvimento móvelDr. Spock
 
Desafios no deploy de aplicações Java EE 6 no Microsoft Azure
Desafios no deploy de aplicações Java EE 6 no Microsoft AzureDesafios no deploy de aplicações Java EE 6 no Microsoft Azure
Desafios no deploy de aplicações Java EE 6 no Microsoft AzureDr. Spock
 
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer FacesPerformance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer FacesDr. Spock
 
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDr. Spock
 
Computação Física com Arduino, Program-ME e Java
Computação Física com Arduino, Program-ME e JavaComputação Física com Arduino, Program-ME e Java
Computação Física com Arduino, Program-ME e JavaDr. Spock
 
Spring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkSpring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkDr. Spock
 
Produtividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App EngineProdutividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App EngineDr. Spock
 
Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!Dr. Spock
 
Spring Framework 3: Um 'brainstorm' de novas funcionalidades
Spring Framework 3: Um 'brainstorm' de novas funcionalidadesSpring Framework 3: Um 'brainstorm' de novas funcionalidades
Spring Framework 3: Um 'brainstorm' de novas funcionalidadesDr. Spock
 
Dicas e Truques sobre Performance em Java EE, JPA e JSF
Dicas e Truques sobre Performance em Java EE, JPA e JSFDicas e Truques sobre Performance em Java EE, JPA e JSF
Dicas e Truques sobre Performance em Java EE, JPA e JSFDr. Spock
 
Computação Física com Arduino/Program-ME e a Plataforma Java
Computação Física com Arduino/Program-ME e a Plataforma JavaComputação Física com Arduino/Program-ME e a Plataforma Java
Computação Física com Arduino/Program-ME e a Plataforma JavaDr. Spock
 

Plus de Dr. Spock (20)

Improving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific LanguageImproving Batch-Process Testing Techniques with a Domain-Specific Language
Improving Batch-Process Testing Techniques with a Domain-Specific Language
 
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
Avoiding Java EE Application Design Traps to Achieve Effective Use of Cloud C...
 
Workshop de Introdução ao ScrumToys
Workshop de Introdução ao ScrumToysWorkshop de Introdução ao ScrumToys
Workshop de Introdução ao ScrumToys
 
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
TDC2012: Usando os recursos de extensibilidade da API de CDI do Java EE 6
 
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
TDC2012: Explorando os conceitos básicos da API de CDI do Java EE 6
 
TDC2011: Spring Mobile
TDC2011: Spring MobileTDC2011: Spring Mobile
TDC2011: Spring Mobile
 
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvensTDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
TDC2011: Spring, uma plataforma enterprise, social, móvel e nas nuvens
 
TDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software EnterpriseTDC2011: Arquitetura de Software Enterprise
TDC2011: Arquitetura de Software Enterprise
 
TDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & AzureTDC2011: Java EE 6 & Azure
TDC2011: Java EE 6 & Azure
 
Spring Framework no desenvolvimento móvel
Spring Framework no desenvolvimento móvelSpring Framework no desenvolvimento móvel
Spring Framework no desenvolvimento móvel
 
Desafios no deploy de aplicações Java EE 6 no Microsoft Azure
Desafios no deploy de aplicações Java EE 6 no Microsoft AzureDesafios no deploy de aplicações Java EE 6 no Microsoft Azure
Desafios no deploy de aplicações Java EE 6 no Microsoft Azure
 
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer FacesPerformance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
Performance Tips and Tricks: Java EE, Java Persistence API and JavaServer Faces
 
Dicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSFDicas e truques sobre performance em JavaEE, JPA e JSF
Dicas e truques sobre performance em JavaEE, JPA e JSF
 
Computação Física com Arduino, Program-ME e Java
Computação Física com Arduino, Program-ME e JavaComputação Física com Arduino, Program-ME e Java
Computação Física com Arduino, Program-ME e Java
 
Spring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do FrameworkSpring 3: Uma Plataforma além do Framework
Spring 3: Uma Plataforma além do Framework
 
Produtividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App EngineProdutividade com Spring Roo no Google App Engine
Produtividade com Spring Roo no Google App Engine
 
Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!Criando uma Aplicação Web com Spring Roo em 5 minutos!
Criando uma Aplicação Web com Spring Roo em 5 minutos!
 
Spring Framework 3: Um 'brainstorm' de novas funcionalidades
Spring Framework 3: Um 'brainstorm' de novas funcionalidadesSpring Framework 3: Um 'brainstorm' de novas funcionalidades
Spring Framework 3: Um 'brainstorm' de novas funcionalidades
 
Dicas e Truques sobre Performance em Java EE, JPA e JSF
Dicas e Truques sobre Performance em Java EE, JPA e JSFDicas e Truques sobre Performance em Java EE, JPA e JSF
Dicas e Truques sobre Performance em Java EE, JPA e JSF
 
Computação Física com Arduino/Program-ME e a Plataforma Java
Computação Física com Arduino/Program-ME e a Plataforma JavaComputação Física com Arduino/Program-ME e a Plataforma Java
Computação Física com Arduino/Program-ME e a Plataforma Java
 

Dernier

Knowtree - Extração de Dados com o KAPE.
Knowtree - Extração de Dados com o KAPE.Knowtree - Extração de Dados com o KAPE.
Knowtree - Extração de Dados com o KAPE.Thiago lindolfo
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Dirceu Resende
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Dirceu Resende
 
O papel da automação de processos no mundo do trabalho pós-moderno
O papel da automação de processos no mundo do trabalho pós-modernoO papel da automação de processos no mundo do trabalho pós-moderno
O papel da automação de processos no mundo do trabalho pós-modernoDenis Pereira Raymundo
 
PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...
PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...
PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...Priscila Ribeiro Chagas
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Dirceu Resende
 
TI EXAMES - NIST Cybersecurity Framework.pdf
TI EXAMES - NIST Cybersecurity Framework.pdfTI EXAMES - NIST Cybersecurity Framework.pdf
TI EXAMES - NIST Cybersecurity Framework.pdfRodrigoMori7
 

Dernier (7)

Knowtree - Extração de Dados com o KAPE.
Knowtree - Extração de Dados com o KAPE.Knowtree - Extração de Dados com o KAPE.
Knowtree - Extração de Dados com o KAPE.
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
O papel da automação de processos no mundo do trabalho pós-moderno
O papel da automação de processos no mundo do trabalho pós-modernoO papel da automação de processos no mundo do trabalho pós-moderno
O papel da automação de processos no mundo do trabalho pós-moderno
 
PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...
PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...
PRODUCT OPS - COMO APROVEITAR O MÁXIMO DESTA NOVA TENDÊNCIA - Priscila Chagas...
 
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
Apresentação Power Embedded - Descubra uma nova forma de compartilhar relatór...
 
TI EXAMES - NIST Cybersecurity Framework.pdf
TI EXAMES - NIST Cybersecurity Framework.pdfTI EXAMES - NIST Cybersecurity Framework.pdf
TI EXAMES - NIST Cybersecurity Framework.pdf
 

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

  • 1. Evitando Armadilhas no Projeto de Aplicações Java EE para uso eficaz na nuvem Alberto Lemos (Dr. Spock) Danival Taffarel Calegari Senior Software Architect Arquiteto na MATERA Systems SpockNET Instrutor da Globalcode
  • 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. Objetivo “Prover algumas ideias para desenvolvedores e arquitetos Java para ajudá-los a projetar aplicações Java EE que funcionem bem em um ambiente de nuvem”
  • 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. 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. 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. Java EE na Nuvem
  • 8. Java EE na Nuvem Operational System Iaas
  • 9. Java EE App Server JVM Operational System Iaas
  • 10. Java EE App Server JVM Paas Operational System Iaas
  • 11. Java EE Application Java EE App Server JVM Paas Operational System Iaas
  • 12. Java EE Services Persistence Java EE Application Messaging Transaction Java EE App Server Security Resource JVM Cache Paas Component Operational System Iaas
  • 13. Java EE Services Cloud Services Persistence Persistence Java EE Application Messaging Messaging Transaction Monitoring Java EE App Server Security Security Resource JVM NoSQL Cache Paas Storage Component ... Operational System Iaas
  • 14. Java EE Services Cloud Services Persistence Persistence JPA Java EE Application Messaging Messaging JMS Transaction Monitoring JTA Java EE App Server Security Security JAAS Resource JVM NoSQL JNDI Cache Paas Storage Component ... EJB Operational System non-std API Iaas
  • 16. Desafios • Elasticidade • Modelo de implantação • Suporte a Java EE completo • Serviços proprietários • Gerenciamento de recursos
  • 21. 1000 usuários Balanceador de Carga Máquina Virtual 100 usuários por VM
  • 22. 500 usuários Balanceador de Carga Máquina Virtual 50 usuários porVM
  • 23. 100 usuários Balanceador de Carga Máquina Virtual 10 usuários por VM
  • 24. 100 usuários Balanceador de Carga Máquina Virtual 100 usuários em uma VM
  • 25. 100 usuários Balanceador de Carga Máquina Virtual 100 usuários em uma VM
  • 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
  • 29. Database A Java EE Application Database Server 1 Java EE Server Database B App 1 App 2 Database C Application Server X Application Server Y Database Server 2
  • 32. Database A Java EE Application Database Server 1 Java EE Server Database B App 1 App 2 Database C Application Server X Application Server Y Database Server 2
  • 33. 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 C Application Server X Application Server Y Database Server 1 Database Server 2
  • 34. 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 C Application Server X Application Server Y Database Server 1 Database Server 2
  • 35. Desafios para Elasticidade • Gerenciamento de estato • Tempo de inicialização da aplicação • Complexidade de comunicação • Descoberta de recursos
  • 36. 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).
  • 37. 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.
  • 38. 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.
  • 39. 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).
  • 40. 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 C Application Server X Application Server Y Database Server 1 Database Server 2
  • 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 Server Serviço de Mensagem App 1 App 2 Application Server X Application Server Y
  • 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 Database A Database B Database C Database Server 1 Database Server 2
  • 43. 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 Zone 01 Zone 02 Database A Database B Database C Database Server 1 Database Server 2
  • 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 - 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 S02 Zone 01 Zone 02
  • 45. 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.
  • 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 DB A DB B DB C DB A DB B DB C Database Server I Database Server 2 Database Server 3 Database Server 4
  • 47. 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 C Database Server I Database Server 2 Database Server 3 Database Server 4
  • 48. 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 C Database Server I Database Server 2 Database Server 3 Database Server 4
  • 49. 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
  • 50. Provedores PaaS Java avaliados Java EE full Standard Non-std APIs/ Distributed Supported App PaaS stack Deployment Services Cache Servers AWS Beanstalk Tomcat 6/7 Oracle Cloud WebLogic Openshift JBossAS 6/7 Tomcat 6/7 - Cloudbees Glassfish 3 Heroku Tomcat 7 Jetty 6 - Tomcat 6/7 Jelastic - Glassfish 3 Cloud Foundry Tomcat 7 OCT/12 GAE Jetty
  • 51. Ú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.
  • 52. 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
  • 53. Uma visão do futuro! Java EE Application • Glassfish para Amazon Web Services Java EE App Server • Glassfish para Oracle Java EE Services Cloud Cloud Adapter • Application Servers para ambiente IaaS Cloud Services Cloud Provider
  • 54. Obrigado! • Alberto Lemos (Dr. Spock) @drspockbr javaone@spock.com.br • Danival T. Calegari @danivaltc danivaltc@gmail.com