Service deployer FISL 2013

Preview:

Citation preview

CHOReOS:CHOReOS:Automatizando a implantação de Automatizando a implantação de

web services na nuvemweb services na nuvem

Nelson LagoLeonardo Alexandre Ferreira Leite

Carlos Eduardo Moreira dos Santos

CCSL IME/USP

FISL – Julho/2012

AgendaAgenda

• Web services

• Composições de serviços em larga-escala

• O projeto CHOReOS

• A nuvem

• O middleware

• O Chef

• CHOReOS + Chef

• Dificuldades

Web servicesWeb services

Padrão de troca de mensagens (xml)

entre sistemas através da Internet (http)

Web servicesWeb 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 servicesWeb 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

AgendaAgenda

• Web services

• Composições de serviços em larga-escala

• O projeto CHOReOS

• A nuvem

• O middleware

• O Chef

• CHOReOS + Chef

• Dificuldades

Computação emComputação emultra-larga escalaultra-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çosComposição de serviços

AgendaAgenda

• Web services

• Composições de serviços em larga-escala

• O projeto CHOReOS

• A nuvem

• O middleware

• O Chef

• CHOReOS + Chef

• Dificuldades

O projeto CHOReOSO 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 CHOReOSO projeto CHOReOS

• Orquestração

• Coreografia

AgendaAgenda

• Web services

• Composições de serviços em larga-escala

• O projeto CHOReOS

• A nuvem

• O middleware

• O Chef

• CHOReOS + Chef

• Dificuldades

A nuvemA nuvem

• Compartilhamento de recursos

• Pagamento por consumo

• Virtualização

• Provisionamento dinâmico

AWS / OpenStack (IaaS)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)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)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)Google App Engine (PaaS)

• Cliente escreve aplicação web Python/Java

• Engine aloca aplicação na nuvem do Google

• Engine cuida da escalabilidade

AgendaAgenda

• Web services

• Composições de serviços em larga-escala

• O projeto CHOReOS

• A nuvem

• O middleware

• O Chef

• CHOReOS + Chef

• Dificuldades

O middlewareO 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 middlewareO 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 middlewareO middleware

Resposta

201 CREATEDlocation = 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 middlewareO 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 middlewareO middleware

Resposta

201 CREATEDlocation = 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 middlewareO middleware

Mas como tudo isso funciona por de baixo dos panos?

AgendaAgenda

• Web services

• Composições de serviços em larga-escala

• O projeto CHOReOS

• A nuvem

• O middleware

• O Chef

• CHOReOS + Chef

• Dificuldades

O ChefO 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 ChefO Chef

Receitas do ChefReceitas do Chef

• DSL Ruby-like

• Armazenadas no Chef-server

• Descrevem dependências

• Exemplo: receita 'tomcat' requer receita 'java'

Receita mysql-clientReceita mysql-client

Interação com o Chef ServerInteração com o Chef Server

• API REST

• Interface web

• Knife

AgendaAgenda

• Web services

• Composições de serviços em larga-escala

• O projeto CHOReOS

• A nuvem

• O middleware

• O Chef

• CHOReOS + Chef

• Dificuldades

CHOReOS + ChefCHOReOS + 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 + ChefCHOReOS + 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

DificuldadesDificuldades

• Web services

• Composições de serviços em larga-escala

• O projeto CHOReOS

• A nuvem

• O middleware

• O Chef

• CHOReOS + Chef

• Dificuldades

DificuldadesDificuldades

• 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ãoConclusã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!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