Entendendo Juju Charms

24
Entendendo Juju Charms Demis Gomes <[email protected] > <[email protected]>

Transcript of Entendendo Juju Charms

Entendendo Juju Charms

Demis Gomes<[email protected]>

<[email protected]>

Roteiro de Apresentacão● O que é Juju Charms?● Utilizacão● Funcionalidades● Pontos fracos● Como um charm funciona?● Conclusão

2

O que é Juju Charms?

Não, esta apresentacão não falará sobre Juju Salimeni :'(

É sobre a ferramenta Juju Charms! 3

O que é Juju Charms?Juju Charms é um modelo open-source para arquiteturas orientadas a servicos e deploys orientados a servicos [1]

Com Juju, é possível modelar diferentes servicos, como por exemplo, um servidor web, um banco de dados ou uma ferramenta de monitoramento e relacioná-los de modo que alcancem os objetivos propostos.

Juju permite "deployar", manter, configurar, destruir e escalar servicos em um ambiente de Nuvem.

Juju é feita principalmente em Go, com quase 99% do código desta linguagem

O nome charm vem da facilidade de criar servicos, como se fosse magia4

O que é Juju Charms?Os servicos, chamados charms, são ferramentas usados por desenvolvedores para criar aplicacões, como por exemplo Hadoop, MySQL, RabbitMQ e outras.

Estes charms são providos pela comunidade através da Charms Store, com alguns deles sendo recomendados, pois são feitos pelo grupo de revisores do Juju, chamado charmers.

O principal objetivo do Juju é reusar o código genérico das aplicacões em diferentes ambientes[1] 5

O que é Juju Charms?Usuários e contribuidores

6

Arquitetura

7

ArquiteturaJuju é iniciado sobre um IaaS ou localmente, criando a máquina chamada State-Service, que gerencia outras máquinas.

A State-service busca no Charms Store ou em um repositóro local (se passado por argumentos) o charm a ser “deployado” a partir da requisição do administrador.

A State-service cria uma VM ou container (depende do IaaS), contendo um agente. O agente se comunica com o State-service, passando informações à ele. O código do charm roda em uma unit, que pode ser executada em uma ou mais máquinas.

O admin pode gerenciar o ambiente pela Juju CLI ou Juju GUI

8

UtilizacãoPode ser desenvolvido em vários provedores de IaaS ou localmente[2]

9

UtilizacãoA instalacão pode ser encontrada em https://jujucharms.com/get-started

Depois da instalacão:

Para criar um servico[2]:

juju deploy wordpress

Para relacioná-lo com o MySQL:

juju deploy mysql

juju add-relation wordpresss mysql

10

UtilizacãoPara adicionar uma unidade:

juju add-unit wordpress

Deste modo será criada uma nova instância do Wordpress

Para desenvolver um servico em uma máquina com mais recursos

juju deploy wordpress --constraints=”mem=6G cpu-cores=4“

Para desenvolver um servico com uma configuracão diferente

juju deploy --config myconfig.yaml mediawiki

É necessário criar o myconfig.yaml, como é mostrado neste link11

UtilizacãoPara adicionar uma unidade em uma máquina específica:

juju add-unit wordpress --to 2

Onde "2" é o id da máquina

Para mudar a configuracão durante a execucão do charm:

juju set wordpress tuning=optimized

Onde “tuning” é uma opcão de configuracão e “optimized” um valor que pode ser atribuído a ela.

Para destruir um servico:

juju destroy mysql 12

UtilizacãoExiste uma ferramenta chamada Juju GUI[3]

Com ela, é possível gerenciar os charms por uma Web GUI, facilitando o uso das funcionalidades do Juju.

13

Características● Instale, modele, escale e gerencie serviços de forma fácil● Utiliza uma Web GUI facilitar o gerenciamento de modo intuitivo● Não reinventa a roda, utilizando códigos feitos por experts que resolvem

muitos problemas comuns● Evita problemas de dependências em diferentes máquinas, executando os

serviços em qualquer lugar que Juju está instalado● Configure os serviços do jeito que quiser antes ou durante a sua execução● Você pode criar um charm e contribuir com a comunidade● Fácil de usar, instalar e configurar

14

Pontos fracos● Não realiza auto scaling● Limitada a máquinas Ubuntu● Poderia ter uma ferramenta como uma IDE para facilitar o desenvolvimento de

um charm

15

Como um charm funciona?Um charm é uma máquina Ubuntu que pode ser criada em algumas versões do Ubuntu. A máquina pode ser uma máquina virtual ou um container, e contém um código com a lógica necessária para funcionar.

Este charm roda scripts nesta máquina, que instalam e configuram o serviço a ser executado, além de definir como o charm se relacionará com outros charms.

O charm pode prover um serviço, como um Web Server, ou requisitar um serviço, como um banco de dados.

* until the presentation’s date in 15/09/2015 16

Como um charm funciona?

A estrutura básica de um código charm, que será detalhada nos próximos slides

17

Como um charm funciona?A estrutura básica de um código charm

● config.yaml: composto por nome, descrição e tipo de várias configurações definidas pelos autores do charm

● metadata.yaml: contém o nome do charm, descrição, resumo, tags e os serviços necessários ou providos pelo charm. Ex: Wordpress requer banco de dados e provê um website

● icon.svg: A imagem do charm● README.md: Apesar da extensão da imagem a

direita ser ex, é indicado a extensão md, pois o texto é melhor preenchido na web. Este arquivo informa aos usuários como o charm funciona.

18

Como um charm funciona?● hooks dir: Este diretório contém os

principais scripts que são executados quando um charm está executando. O diretório é composto por:○ config-changed: este script é

executado quando uma configuração é alterada durante a execução do charm ou um novo arquivo de configuração é passado no momento do deploy

○ install: Script que instala os pacotes necessários e configura o serviço

19

○ start: script simples que inicia o serviço

○ stop: para o serviço

Como um charm funciona?● hooks dir:

○ upgrade-charm: script que é chamado quando uma nova versão do charm está disponível e o usuário deseja atualizá-la para a nova versão.

○ relation-name...: scripts que rodam quando uma relação é criada. Os tipos de relação podem ser joined, departed, changed ou broken. Alguns nomes de relação são banco de dados, website, load-balancer, nfs, etc...

20

Como um charm funciona?Um exemplo de relação ocorre entre Wordpress e MySQL. O Wordpress requer o MySQL como banco de dados, e executa o script db-relation-departed quando conecta com o charm MySQL. Este link contém o script.

Como o MySQL provê um banco de dados, o charm MySQL execta o script db-relation-joined para criar um banco de dados e configurar o acesso do Wordpress à ele. O código pode ser acessado aqui.

Um bundle é um conjunto de charms com características e relações bem definidas. O exemplo acima pode ser considerado um bundle.

21

ConclusãoJuju é uma ferramenta de orquestração que permite modelar arquiteturas orientadas a serviços, podendo rodar em vários provedores de IaaS

Ele reutiliza o código e implementa ambientes facilmente e rapidamente, sem problemas de configuração ou de dependências entre as máquinas

Permite gerenciar, configurar, construir relações e escalar charms, mas não provê autoscaling e é limitado a serviços que rodam no Ubuntu

Criar charms pode ser muito útil, além de ser legal contribuir com a comunidade

23

Referências1. About Juju. https://jujucharms.com/docs/stable/about-juju. Acessado em

11/09/2015.2. Introduction. https://jujucharms.com/docs/stable/getting-started. Acessado em

15/09/2015.3. What is the GUI? https://jujucharms.com/docs/stable/howto-gui-management.

Acessado in 16/09/2015.

24