service deployer fisl 2013
TRANSCRIPT
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: