Uns anos atrás estava procurando uma solução para automatizar o download, instalação e configuração das aplicações que desenvolvemos. Presenciei diversos momentos estressantes na preparação do ambiente para começar o desenvolvimento num projeto, passando por diversas fases, repetidamente, perdendo uma enorme quantidade de tempo valioso. Por exemplo: hoje uma aplicação Drupal pode ter dependência de MySQL, Redis, Apache Solr,MongoDB e Varnish (não necessariamente todos ao mesmo tempo).
Sem contar com a típica frase “mas na minha máquina funciona ”. Cada desenvolvedor tinha um ambiente local diferente aos ambientes de homologação e produção, então precisava de algo que pudesse de maneira “barata” e eficiente replicar a infra-estrutura de produção (ou o mais perto disso) na máquina do desenvolvedor. E graças aos famosos Linux Containers e à integração com Juju isso é possível.
O que é Ubuntu Juju?
Bom, se você procurar pela palavra “juju” no Google, certamente não vai achar algo relacionado à tecnologia; por isso é importante sempre pesquisar por – ubuntu juju –.
Juju é uma ferramenta trazida pelo time da Ubuntu (Canonical) e, como é de se esperar, este maravilhoso software faz parte da extensa e inovadora família do Software Livre, ou seja, é LIVRE e tem uma comunidade em crescimento que dá suporte e colabora para sua constante evolução.
Pensando em um resumo técnico, poderia ser “Orquestrador automatizado de serviços em cloud agnóstica ao provedor.”
Mas, definitivamente, Juju é mais do que isso:
- Conta com uma plataforma estilo “App Store” de serviços feitos pela comunidade chamados de Charms.
- Arquitetura dos charms orientada aos conhecidos “hooks” como “install”, “config-changed”, “start”, entre outros muito interessantes como “db-relation-joined”, “db-relation-changed” e etc, que se encarregam de lidar com as relações entre charms.
- Sistema de relações que possibilita e aumenta o reaproveitamento dos charms, criando uma sensação de LEGO, onde consigo criar uma topologia simplesmente conectando os charms entre eles, o que chamamos de “Bundle”.
- Portabilidade da topologia, ou seja, sua topologia é exportável e passa a ser totalmente agnóstica ao provedor de cloud que você utiliza. Então o esforço de colocar na Amazon, HP Cloud ou na Joyent é o mesmo devido à automatização fornecida pelo Juju.
- Topologia de sua infra passa a ser volátil, então se precisar replicar sua infra-estrutura inteira, o esforço é quase zero, pois o processo se resumiria na execução do bundle (exportação da topologia).
- Os sistema de “hooks” dos charms possibilitam a utilização de quase qualquer linguagem e até provisionadores, como por exemplo, Chef, Puppet, SaltStack, o famoso Docker e o meu preferido, o Ansible. Então, podemos assumir que o Juju não é concorrente de nenhum deles, ou seja, ao desenvolver um charm podemos utilizar tecnologias já existentes para realizar os processos de instalação e configuração dos serviços sendo orquestrados.
E Juju ainda poderia ser:
- “Mágica” em algum dialeto da África (acho que é isso).
- “A força” do DevOps (Star Wars fan).
Mas afinal, o que é um charm?
É a representação de um serviço ou uma aplicação (como MySQL ou Drupal) contendo em código todo o processo de download, instalação, configuração e ações necessárias para cada tipo de relação entre os charms.
Nós já contamos um pouco, aqui mesmo no blog, sobre como criamos um charm de Drupal para o Juju.
Dica
Como mencionei, o Juju é agnóstico ao seu provedor de cloud, então é importante que você especifique um tipo de ambiente que saiba se comunicar com seu provedor favorito. Atualmente estes são os suportados:
- Amazon Web Service
- Windows Azure
- HP Public Cloud
- Joyent
- DigitalOcean (plugin needed)
- OpenStack
- MAAS (bare metal)
- Local (LXC ou KVM)
Quando penso sobre minhas liberdades como usuário, prefiro e procuro a maior parte do tempo utilizar Software Livre e hoje, como sabemos, a computação em nuvem (Cloud Computing em inglês) faz parte do futuro e da realidade de muita gente. Por isso acredito que é interessante ficar de olho no OpenStack e sua integração com Juju. Já tem um pessoal esperto utilizando, como a Nasa, HP Cloud, SoftLayer da IBM, RackSpace e Mercado Livre.
Espero que este resumo tenha instigado seu conhecimento e sua curiosidade. Fique ligado nos próximos posts onde mostrarei, na prática, como utilizar o Juju na sua máquina local.
***
(Atualização – 25/02/16)
Gravamos um podcast sobre DevOps.
Coloque o fone de ouvido e venha conhecer a Taverna Taller!
Veja a lista com todos os programas | Taverna Taller no iTunes