REST
nas Nuvens
 Leonardo Leitão
Tudo
começa
com uma...
t em a...
     só tez
  cê er
Vo a c
 u m
Como devo operacionalizar
minha ideia?


  Qual é a melhor estratégia?


  Que tecnologia usar?
Quando se trata de escolhas de TI,
melhor, normalmente, é uma palavra
muito forte.

  O melhor framework...
  A melhor arquitetura...

                mas suspeito que...
...existe a pior forma!!!
“Um dos atributos que melhor distinguem os
programados experientes dos menos experientes é que
geralmente os especialistas tentam (e normalmente
conseguem) obter um alto grau de reutilização de
código.”
                                     Joshua Bloch
REST + Nuvem

       Por quê?
                      Por quê?
          Por quê?
                     Por quê?
XML     JSON



                                        HTML
       Simples   Múltiplos Formatos
                      de dados          JSONP

HTTP
            REST             Modelo
                           Arquitetural
   Escalável
                      Interoperável
Simples    Pagamento
                           pelo uso
   Ideia de
  recursos
“ilimitados”     NUVEM                Redundância

           Elasticidade
                            Segurança
Responde rápido


Quantos métodos
existem no HTTP???
•   GET

                    •   HEAD

8 métodos!          •
                    •
                        POST

                        PUT

                    •   DELETE

                    •   TRACE

                    •   OPTIONS

                    •   CONNECT




       Vixi! Pensei que existissem
           apenas os métodos
              GET e POST.
O que é REST? (REpresentational State Transfer)



http://minhabiblioteca.net/service/livro
   POST                                           INCLUIR
   GET                                    OBTER TODOS
   PUT                                            ALTERAR
 DELETE                                           EXCLUIR
http://minhabiblioteca.net/service/livro/234

   GET                                    OBTER POR ID
O que é JSON?(JavaScript Object Notation)




  OBJETO                                       {}
  ARRAY                                        []
 ATRIBUTOS                                  KEY:VALUE
DynamoDB       Map Reduce
Application             Cost                    VPN
           Identity                  Email         Web Service
                        Petabyte           Storage
                                 Linux
 Auto Scaling                               Spot Instance
                                                              Network
         Database    HTTP
                                Elastic                in g             Queue

  Java         SimpleDB                      t SaaS EC2
                                            u Monitoring
                                          p
                                         m
         SSH

                      Internet
   Azure

           NoSQL                      C o Virtualization
   IaaS                         u d                             HPC


                              lo
           JSON                              Load Balance             Eucalyptus
Platform
        Cluster             C AWS                        CloudWatch
 S3        OpenNebula
                        AMI
                                                     SOAP    PaaS
                                                              Ajax      Terabyte
                              Windows           REST
                                                            Google App Engine
Oracle              Replication       CloudFoundry
                                                      Infrastructure
Classificação mais aceita...

   Software as a Service (SaaS)




                                      Abstração
   Platform as a Service (PaaS)



 Infrastructure as a Service (IaaS)
Elastic Compute Cloud - EC2
Instâncias EC2 (Algumas)
Tipo Instância   Memória    Unid. Comp. EC2
   t1.micro       613 Mb            1
   m1.small        1.7 Gb           1
  m1.medium       3.75 Gb           2
   m1.large        7.5 Gb           4
   m1.xlarge       15 Gb            8
      ...             ...          ...
  m2.4xlarge      68.4 Gb          26
Quando a vida está muito pesada...




a solução Elastic Load Balancing
a   u t
          o
              sc
                   ali
                         ng
Juntando as peças...

EC2
      +
 Elastic Load Balancing
         +
        Auto Scaling
Mão na massa
Como publico minha
 aplicação na nuvem?
Hora do Auto Scaling

as-create-launch-config ...
as-create-auto-scaling-group ...

as-put-scaling-policy JavaCEUp ...
mon-put-metric-alarm AlarmeCPU80 ...


as-put-scaling-policy JavaCEDown ...
mon-put-metric-alarm AlarmeCPU30 ...
Perguntas?

Rest nas Nuvens

  • 1.
  • 3.
  • 4.
    t em a... só tez cê er Vo a c u m
  • 5.
    Como devo operacionalizar minhaideia? Qual é a melhor estratégia? Que tecnologia usar?
  • 6.
    Quando se tratade escolhas de TI, melhor, normalmente, é uma palavra muito forte. O melhor framework... A melhor arquitetura... mas suspeito que...
  • 7.
  • 8.
    “Um dos atributosque melhor distinguem os programados experientes dos menos experientes é que geralmente os especialistas tentam (e normalmente conseguem) obter um alto grau de reutilização de código.” Joshua Bloch
  • 9.
    REST + Nuvem Por quê? Por quê? Por quê? Por quê?
  • 10.
    XML JSON HTML Simples Múltiplos Formatos de dados JSONP HTTP REST Modelo Arquitetural Escalável Interoperável
  • 11.
    Simples Pagamento pelo uso Ideia de recursos “ilimitados” NUVEM Redundância Elasticidade Segurança
  • 12.
  • 13.
    GET • HEAD 8 métodos! • • POST PUT • DELETE • TRACE • OPTIONS • CONNECT Vixi! Pensei que existissem apenas os métodos GET e POST.
  • 14.
    O que éREST? (REpresentational State Transfer) http://minhabiblioteca.net/service/livro POST INCLUIR GET OBTER TODOS PUT ALTERAR DELETE EXCLUIR http://minhabiblioteca.net/service/livro/234 GET OBTER POR ID
  • 15.
    O que éJSON?(JavaScript Object Notation) OBJETO {} ARRAY [] ATRIBUTOS KEY:VALUE
  • 17.
    DynamoDB Map Reduce Application Cost VPN Identity Email Web Service Petabyte Storage Linux Auto Scaling Spot Instance Network Database HTTP Elastic in g Queue Java SimpleDB t SaaS EC2 u Monitoring p m SSH Internet Azure NoSQL C o Virtualization IaaS u d HPC lo JSON Load Balance Eucalyptus Platform Cluster C AWS CloudWatch S3 OpenNebula AMI SOAP PaaS Ajax Terabyte Windows REST Google App Engine Oracle Replication CloudFoundry Infrastructure
  • 18.
    Classificação mais aceita... Software as a Service (SaaS) Abstração Platform as a Service (PaaS) Infrastructure as a Service (IaaS)
  • 19.
  • 20.
    Instâncias EC2 (Algumas) TipoInstância Memória Unid. Comp. EC2 t1.micro 613 Mb 1 m1.small 1.7 Gb 1 m1.medium 3.75 Gb 2 m1.large 7.5 Gb 4 m1.xlarge 15 Gb 8 ... ... ... m2.4xlarge 68.4 Gb 26
  • 21.
    Quando a vidaestá muito pesada... a solução Elastic Load Balancing
  • 22.
    a u t o sc ali ng
  • 23.
    Juntando as peças... EC2 + Elastic Load Balancing + Auto Scaling
  • 25.
  • 29.
    Como publico minha aplicação na nuvem?
  • 36.
    Hora do AutoScaling as-create-launch-config ... as-create-auto-scaling-group ... as-put-scaling-policy JavaCEUp ... mon-put-metric-alarm AlarmeCPU80 ... as-put-scaling-policy JavaCEDown ... mon-put-metric-alarm AlarmeCPU30 ...
  • 37.