Provisionamento orquestrado de serviços em cloud com Juju
Saber como um servidor web deve ser instanciado e configurado não é basta para resolver os desafios de infraestrutura de sua aplicação.
Escrever a receita de como um servidor web deve ser instanciado e configurado não é o que basta para resolver todos os desafios de infraestrutura para sua aplicação, pois isso é apenas uma parte dos problemas de gestão.
É preciso que o provisionamento de serviços e servidores seja feito de maneira orquestrada, pois os serviços devem se comunicar uns com os outros, e sabemos que cada serviço tem uma necessidade diferente para escalar, assim como também é necessário que sejam realizados backups, análises de performance, gestão de logs etc.
Existe agora uma solução que realiza implementação, integração e ampliação instantaneamente em todas as grandes nuvens públicas e privadas – ela se chama Juju, onde há os “charms”, que são responsáveis por oferecer uma interface padronizada que permite essa integração com outros serviços. Para compreender melhor a diferença, enquanto as ferramentas de provisionamento estão preocupadas em instalar e configurar, a Juju faz tudo isso, mas também se preocupa com a integração.
Para que tudo isso possa acontecer, é necessário criar o ambiente juju – existem versões para Linux↳Linux34 conteúdosKali Linux em um Servidor VPS: como, quando e por que usar?DevSecOps · dez 2024Construindo um Windows Service ou Linux Daemon com Worker Service & .NET Core – Parte 2Dev (Back & Front) · jul 2020Criando uma WebApi utilizando .NET, Linux e VSCodeDev (Back & Front) · ago 2019Ver tudo em DevSecOps →, Mac e Windows. Depois de instalado, é necessário que seja realizado a configuração inicial, para isso basta executar o comando:
$ juju generate-config
Feito isso, será criado o diretório ~/.juju com todos os arquivos e diretórios necessários para que você possa começar a explorar a ferramenta. Inicialmente, basta você editar o arquivo environments.yaml que está nesse diretório e configurar qual provedor de cloud você irá utilizar, e suas credenciais.
Precisamos preparar o ambiente no provedor de cloud para poder instalar o state-server do juju, que é responsável por gerenciar todos os serviços e recursos necessários para realizar a integração com segurança entre todos os pontos envolvidos e, para isso, basta executar o comando:
$ juju bootstrapCom o state-server instalado, agora podemos começar a instalar e a integrar os serviços. Para que você possa usufruir do juju, é necessário que todos os serviços instalados estejam concebidos através de um “charm”. Já existem diversos prontos neste link. Caso não encontre você terá que montar um, o que também é muito simples, vide aqui.
Para este artigo, iremos utilizar o exemplo clássico utilizado na própria documentação do juju, que é o setup do WordPress↳WordPress9 conteúdosAndroid push notifications com Quasar Framework, Firebase e integração com WordPressDev (Back & Front) · mai 2019Simplificando a acessibilidade de documentos: introduzindo a integração do ONLYOFFICE DocSpace com WordPress e DrupalDev (Back & Front) · abr 2024Como criar seu site WordPress com um único prompt de IA em minutos?Dev (Back & Front) · mar 2025Ver tudo em Dev (Back & Front) →. Vamos supor que para iniciar um deploy de um novo site, precisemos do aplicativo em si e de um banco de dados↳Banco de dados134 conteúdosSQL ou NoSQL: eis a questão!!Data · mar 2020Banco de dados: como organizar e dar segurança para milhões de dados de loteriasData · mai 20215 serviços gratuitos na cloud para bancos de dados PostgresData · fev 2025Ver tudo em Data →, no caso o MySQL. Para realizar a instalação destes dois serviços, basta:
$ juju deploy cs:precise/wordpress $ juju deploy cs:precise/mysql
Até o momento, os serviços foram instalados, porém não estão integrados, precisamos avisar que eles irão trabalhar de maneira integrada, para isto:
$ juju add-relation wordpress mysql
Pronto, estamos com um WordPress instalado e utilizando um serviço de MySQL pronto, e isso só é possível pois ambos estão preparados para trabalhar com o juju de maneira integrada, e para que tudo isso? Em um cenário que você queira escalar horizontalmente por algum motivo, basta adicionar mais unidade onde é necessário, por exemplo:
$ juju add-unit wordpress
Ou seja, agora a topologia são duas máquinas sendo executadas com o WordPress e utilizando o mesmo banco de dados.
Além de integrar os serviços entre si, existem hooks que disponibilizam mecanismos para realizar a configuração dos serviços, como trocar o titulo do WordPress:
$ juju set wordpress title="My Blog"
Para gerenciar os serviço, você pode utilizar o comando:
$ juju status
Assim como para tornar a ferramenta pública para todos:
$ juju expose wordpress
Veja mais:
- https://juju.ubuntu.com/
- https://juju.ubuntu.com/docs/
- http://cloud.dzone.com/articles/juju-deploy-integrate-and
- http://blog.labix.org/2013/06/25/the-heart-of-juju
- http://www.youtube.com/watch?v=kKQLhGZVN4A
As imagens foram criadas pelo Gustavo Niemeyer.
Abs!








