CHOReOS:
Automatizando a implantação de
    web services na nuvem
                  Nelson Lago
        Leonardo Alexandre Ferreira Leite
        Carlos Eduardo Moreira dos Santos

                 CCSL IME/USP

                 FISL – Julho/2012
Agenda

• Web services
• Composições de serviços em larga-escala
• O projeto CHOReOS
• A nuvem
• O middleware
• O Chef
• CHOReOS + Chef
• Dificuldades
Web services


  Padrão de troca de mensagens (xml)
entre sistemas através da Internet (http)
Web services


       Padrão de troca de mensagens (xml)
     entre sistemas através da Internet (http)

• Aplicações:
  • Integração de sistemas heterogêneos
  • Acesso a dados abertos
  • Automação de fluxos de negócio
Web services


       Padrão de troca de mensagens (xml)
     entre sistemas através da Internet (http)

• Aplicações:
  • Integração de sistemas heterogêneos
  • Acesso a dados abertos
  • Automação de fluxos de negócio
Agenda

• Web services
• Composições de serviços em larga-escala
• O projeto CHOReOS
• A nuvem
• O middleware
• O Chef
• CHOReOS + Chef
• Dificuldades
Computação em
                                 ultra-larga escala
• Centenas de milhões de usuários
  • Dispositivos móveis
  • Computação ubíqua
  • “Internet of things”
   - Dispositivos “inteligentes” (geladeiras etc.)
• Dezenas de milhares de serviços
  • Incluindo a “internet of things”
• Mash-ups “ad-hoc”
Composição de serviços
Agenda

• Web services
• Composições de serviços em larga-escala
• O projeto CHOReOS
• A nuvem
• O middleware
• O Chef
• CHOReOS + Chef
• Dificuldades
O projeto CHOReOS

• Financiado pela Comissão Europeia
• Parceiros acadêmicos e industriais
  • Resultados científicos através da pesquisa
  • Possibilidade de novos produtos através da inovação
    tecnológica
• Parceiros em vários países
  • Brasil, França, Grécia, Itália...
• Um dos componentes é o middleware para
  viabilizar a criação e execução de composições de
  serviços em larga-escala
  • A USP é um dos principais parceiros envolvidos com
    essa tarefa
O projeto CHOReOS

• Orquestração



                   • Coreografia
Agenda

• Web services
• Composições de serviços em larga-escala
• O projeto CHOReOS
• A nuvem
• O middleware
• O Chef
• CHOReOS + Chef
• Dificuldades
A nuvem



• Compartilhamento de recursos

• Pagamento por consumo

• Virtualização

• Provisionamento dinâmico
AWS / OpenStack (IaaS)


• Gerência (CRUD) de VMs através de API
• Usuário pode gravar uma imagem de uma VM
  e criar várias instâncias
• AWS permite escolher região geográfica
AWS / OpenStack (IaaS)


• Gerência (CRUD) de VMs através de API
• Usuário pode gravar uma imagem de uma VM
  e criar várias instâncias
• AWS permite escolher região geográfica

• API EC2
• JClouds abstrai EC2 (e outras APIs) para Java
AWS / OpenStack (IaaS)


• Gerência (CRUD) de VMs através de API
• Usuário pode gravar uma imagem de uma VM
  e criar várias instâncias
• AWS permite escolher região geográfica

• API EC2
• JClouds abstrai EC2 (e outras APIs) para Java

• AWS: nuvem pública
• OpenStack: nuvem privada
Google App Engine (PaaS)


• Cliente escreve aplicação web Python/Java

• Engine aloca aplicação na nuvem do Google

• Engine cuida da escalabilidade
Agenda

• Web services
• Composições de serviços em larga-escala
• O projeto CHOReOS
• A nuvem
• O middleware
• O Chef
• CHOReOS + Chef
• Dificuldades
O middleware
• Oferece serviços REST para automatizar a
  implantação de web services na nuvem.


• Abstrai diferentes tipos de nuvem (AWS,
  OpenStack)


• Decide em que nó o serviço fornecido será
  implantado.


• Diferentes organizações podem definir diferentes
  políticas de alocação.


• Informa aos serviços recém implantados os
  endpoints de suas dependências.
O middleware

Implantação de serviços

Requisição

POST servicedeployer/services
<serviceSpec> 
 <type>WAR</type> 
 <codeURI>http://ccsl.ime.usp.br/marketservice.war</codeURI> 
 <port/>
 <endpointName>market</endpointName>
 <resourceImpact>
   <storage>high</storage>
   <mem>low</mem>
 </resourceImpact>
</serviceSpec>
O middleware

Resposta

201 CREATED
location = 12514
<service> 
 <id>12514</id>
 <type>WAR</type>
 <port>8080</port>
 <hostname>ccsl534</hostname>
 <ip>192.168.56.103</ip>
 <uri>http://192.168.56.103:8080/market</uri> 
 <codeURI>http://ccsl.ime.usp.br/marketservice.war</codeURI>
 <file>marketservice.war</file> 
 <endpointName>market</endpointName>
 <resourceImpact>...</resourceImpact>
</service>
O middleware


Criação de nós

Requisição

POST nodepoolmanager/nodes
<node> 
  <cpus>2</cpus>
  <ram>1024</ram> 
  <storage>100</storage> 
  <so>Ubuntu 10.4</so>
</node>
O middleware


Resposta

201 CREATED
location = 534
<node>
  <id>534</id> 
  <cpus>2</cpus>
  <ram>1024</ram> 
  <storage>100</storage> 
  <so>Ubuntu 10.4</so>
  <ip>192.168.56.103</ip>
  <hostname>ccsl534</hostname>
</node>
O middleware




Mas como tudo isso funciona
  por de baixo dos panos?
Agenda

• Web services
• Composições de serviços em larga-escala
• O projeto CHOReOS
• A nuvem
• O middleware
• O Chef
• CHOReOS + Chef
• Dificuldades
O Chef
• Configuração de nós da nuvem.
• Funciona assim:
  • Uma receita descreve como se
    instala um software
  • Receitas são atribuídas a papéis
  • Papéis são atribuídos a nós
• Exemplo:
  • Receita 'tomcat' descreve instalação
    do tomcat
  • Papel 'web' contém receita 'tomcat'
  • Nó 192.168.56.103 deve ter papel 'web'
• Não gerencia a instanciação dos nós na nuvem
O Chef
Receitas do Chef
• DSL Ruby-like
• Armazenadas no Chef-server
• Descrevem dependências
  • Exemplo: receita 'tomcat' requer receita 'java'
Receita mysql-client
Interação com o Chef Server
• API REST
• Interface web
• Knife
Agenda

• Web services
• Composições de serviços em larga-escala
• O projeto CHOReOS
• A nuvem
• O middleware
• O Chef
• CHOReOS + Chef
• Dificuldades
CHOReOS + Chef
• Middleware instancia nós na nuvem
 (AWS, OpenStack) usando a API Jclouds


• Middleware faz o bootstrap do nó criado
 para que ele seja um nó do Chef


• Middleware cria uma receita para cada
 serviço que precisa ser implantado


• Middleware usa Chef para aplicar a receita
 em um nó escolhido pelo próprio middleware
CHOReOS + Chef
• Problema:
  • Não tem como a receita de um serviço A
    ser a mesma receita do serviço B

• Solução
  • Criação dinâmica de receitas
Dificuldades

• Web services
• Composições de serviços em larga-escala
• O projeto CHOReOS
• A nuvem
• O middleware
• O Chef
• CHOReOS + Chef
• Dificuldades
Dificuldades


• Falta de uma API Java pra usar o Chef

• Chamadas concorrentes pelo Knife

• Chamadas concorrentes pela API EC2

• Suporte imaturo do JClouds para o OpenStack
Conclusão

• O uso do Chef simplificou grandemente o
  desenvolvimento
  • Ponto para o software livre!

• OpenStack e Web Services evitam a dependência
  de fornecedores/provedores fechados

• Middleware e ferramentas usadas são livres
  • Software livre é a base da Internet do Futuro

• Novas pesquisas devem continuar a partir do
  código desenvolvido
  • Venha fazer pós conosco!
Obrigado!


                         CCSL IME/USP

• Nosso site:
  • http://ccsl.ime.usp.br
• Projeto CHOReOS:
  • http://www.choreos.eu
• Código-fonte:
  • http://forge.ow2.org/projects/choreos/
• Email de contato:
  • ccsl@ime.usp.br

Service deployer FISL 2013

  • 1.
    CHOReOS: Automatizando a implantaçãode web services na nuvem Nelson Lago Leonardo Alexandre Ferreira Leite Carlos Eduardo Moreira dos Santos CCSL IME/USP FISL – Julho/2012
  • 2.
    Agenda • Web services •Composições de serviços em larga-escala • O projeto CHOReOS • A nuvem • O middleware • O Chef • CHOReOS + Chef • Dificuldades
  • 3.
    Web services Padrão de troca de mensagens (xml) entre sistemas através da Internet (http)
  • 4.
    Web services Padrão de troca de mensagens (xml) entre sistemas através da Internet (http) • Aplicações: • Integração de sistemas heterogêneos • Acesso a dados abertos • Automação de fluxos de negócio
  • 5.
    Web services Padrão de troca de mensagens (xml) entre sistemas através da Internet (http) • Aplicações: • Integração de sistemas heterogêneos • Acesso a dados abertos • Automação de fluxos de negócio
  • 6.
    Agenda • Web services •Composições de serviços em larga-escala • O projeto CHOReOS • A nuvem • O middleware • O Chef • CHOReOS + Chef • Dificuldades
  • 7.
    Computação em ultra-larga escala • Centenas de milhões de usuários • Dispositivos móveis • Computação ubíqua • “Internet of things” - Dispositivos “inteligentes” (geladeiras etc.) • Dezenas de milhares de serviços • Incluindo a “internet of things” • Mash-ups “ad-hoc”
  • 8.
  • 9.
    Agenda • Web services •Composições de serviços em larga-escala • O projeto CHOReOS • A nuvem • O middleware • O Chef • CHOReOS + Chef • Dificuldades
  • 10.
    O projeto CHOReOS •Financiado pela Comissão Europeia • Parceiros acadêmicos e industriais • Resultados científicos através da pesquisa • Possibilidade de novos produtos através da inovação tecnológica • Parceiros em vários países • Brasil, França, Grécia, Itália... • Um dos componentes é o middleware para viabilizar a criação e execução de composições de serviços em larga-escala • A USP é um dos principais parceiros envolvidos com essa tarefa
  • 11.
    O projeto CHOReOS •Orquestração • Coreografia
  • 12.
    Agenda • Web services •Composições de serviços em larga-escala • O projeto CHOReOS • A nuvem • O middleware • O Chef • CHOReOS + Chef • Dificuldades
  • 13.
    A nuvem • Compartilhamentode recursos • Pagamento por consumo • Virtualização • Provisionamento dinâmico
  • 14.
    AWS / OpenStack(IaaS) • Gerência (CRUD) de VMs através de API • Usuário pode gravar uma imagem de uma VM e criar várias instâncias • AWS permite escolher região geográfica
  • 15.
    AWS / OpenStack(IaaS) • Gerência (CRUD) de VMs através de API • Usuário pode gravar uma imagem de uma VM e criar várias instâncias • AWS permite escolher região geográfica • API EC2 • JClouds abstrai EC2 (e outras APIs) para Java
  • 16.
    AWS / OpenStack(IaaS) • Gerência (CRUD) de VMs através de API • Usuário pode gravar uma imagem de uma VM e criar várias instâncias • AWS permite escolher região geográfica • API EC2 • JClouds abstrai EC2 (e outras APIs) para Java • AWS: nuvem pública • OpenStack: nuvem privada
  • 17.
    Google App Engine(PaaS) • Cliente escreve aplicação web Python/Java • Engine aloca aplicação na nuvem do Google • Engine cuida da escalabilidade
  • 18.
    Agenda • Web services •Composições de serviços em larga-escala • O projeto CHOReOS • A nuvem • O middleware • O Chef • CHOReOS + Chef • Dificuldades
  • 19.
    O middleware • Ofereceserviços REST para automatizar a implantação de web services na nuvem. • Abstrai diferentes tipos de nuvem (AWS, OpenStack) • Decide em que nó o serviço fornecido será implantado. • Diferentes organizações podem definir diferentes políticas de alocação. • Informa aos serviços recém implantados os endpoints de suas dependências.
  • 20.
    O middleware Implantação deserviços Requisição POST servicedeployer/services <serviceSpec>   <type>WAR</type>   <codeURI>http://ccsl.ime.usp.br/marketservice.war</codeURI>   <port/>  <endpointName>market</endpointName>  <resourceImpact>    <storage>high</storage>    <mem>low</mem>  </resourceImpact> </serviceSpec>
  • 21.
  • 22.
    O middleware Criação denós Requisição POST nodepoolmanager/nodes <node>    <cpus>2</cpus>   <ram>1024</ram>    <storage>100</storage>    <so>Ubuntu 10.4</so> </node>
  • 23.
  • 24.
    O middleware Mas comotudo isso funciona por de baixo dos panos?
  • 25.
    Agenda • Web services •Composições de serviços em larga-escala • O projeto CHOReOS • A nuvem • O middleware • O Chef • CHOReOS + Chef • Dificuldades
  • 26.
    O Chef • Configuraçãode nós da nuvem. • Funciona assim: • Uma receita descreve como se instala um software • Receitas são atribuídas a papéis • Papéis são atribuídos a nós • Exemplo: • Receita 'tomcat' descreve instalação do tomcat • Papel 'web' contém receita 'tomcat' • Nó 192.168.56.103 deve ter papel 'web' • Não gerencia a instanciação dos nós na nuvem
  • 27.
  • 28.
    Receitas do Chef •DSL Ruby-like • Armazenadas no Chef-server • Descrevem dependências • Exemplo: receita 'tomcat' requer receita 'java'
  • 29.
  • 30.
    Interação com oChef Server • API REST • Interface web • Knife
  • 31.
    Agenda • Web services •Composições de serviços em larga-escala • O projeto CHOReOS • A nuvem • O middleware • O Chef • CHOReOS + Chef • Dificuldades
  • 32.
    CHOReOS + Chef •Middleware instancia nós na nuvem (AWS, OpenStack) usando a API Jclouds • Middleware faz o bootstrap do nó criado para que ele seja um nó do Chef • Middleware cria uma receita para cada serviço que precisa ser implantado • Middleware usa Chef para aplicar a receita em um nó escolhido pelo próprio middleware
  • 33.
    CHOReOS + Chef •Problema: • Não tem como a receita de um serviço A ser a mesma receita do serviço B • Solução • Criação dinâmica de receitas
  • 34.
    Dificuldades • Web services •Composições de serviços em larga-escala • O projeto CHOReOS • A nuvem • O middleware • O Chef • CHOReOS + Chef • Dificuldades
  • 35.
    Dificuldades • Falta deuma API Java pra usar o Chef • Chamadas concorrentes pelo Knife • Chamadas concorrentes pela API EC2 • Suporte imaturo do JClouds para o OpenStack
  • 36.
    Conclusão • O usodo Chef simplificou grandemente o desenvolvimento • Ponto para o software livre! • OpenStack e Web Services evitam a dependência de fornecedores/provedores fechados • Middleware e ferramentas usadas são livres • Software livre é a base da Internet do Futuro • Novas pesquisas devem continuar a partir do código desenvolvido • Venha fazer pós conosco!
  • 37.
    Obrigado! CCSL IME/USP • Nosso site: • http://ccsl.ime.usp.br • Projeto CHOReOS: • http://www.choreos.eu • Código-fonte: • http://forge.ow2.org/projects/choreos/ • Email de contato: • ccsl@ime.usp.br