OpenShift – PaaS “de verdade”

Esses dias, procurando por uma solução mais inteligente para automatizar deploys de aplicações, me deparei com o OpenShift, que logo de início me pareceu ser mais complexo do que o necessário. Mas, ao criar uma conta, experimentar o serviço e ler a documentação eu simplesmente pirei imaginando as milhares de possibilidades para automação que eu tinha em mãos.

openshift

Primeiras impressões

A primeira coisa que notei foi a incrível simplicidade do conceito: aplicações rodam em máquinas (gears) compostas por serviços, chamados de cartuchos (cartridges). Para um site em PHP com base em MySQL, cria-se uma aplicação que rodará numa máquina com os cartuchos php-5.4 e mysql-5.5, por exemplo. Se também precisarmos usar crontabs ou um phpMyAdmin, basta adicionar o cartucho.

A segunda coisa que me impressionou foi a forma adotada para o modo de operação e deploy: ssh (sem ele eu não viveria) e git! Nada mais óbvio, simples e eficiente! Deploy de aplicação? “git push” e já era! Perfeito! Isso me fez querer mais… e tinha: facilidade de administração do ambiente tanto via navegador quanto via terminal (é aqui que as coisas começam a ficar realmente interessantes).

Terceira super-impressão: o comando “rhc”. Só para ter uma idéia da simplicidade: “rhc app create site php-5.4 mysql-5.5” cria uma aplicação de nome “site” com os cartuchos de php e mysql, clona o repositório e está tudo pronto. Adicionar outro cartucho? “rhc add-cartridge”. Quer conectar diretamente nas portas dos serviços (como apache e mysql)? “rhc port-forward”.

Um rápido “overview” da estrutura dessa mágica toda

A mágica começa com o uso de cgroups para definir limites de ciclos de processamento e memória, quota para limitar uso de disco e o SELinux para “blindar” o ambiente e permitir somente o acesso necessário as aplicações e seus envolvidos (administradores, desenvolvedores, fuçadores e por aí vai). É uma implementação bem simples e funcional que garante acesso e funcionamento controlado das aplicações sem detrimento de funcionalidades necessárias tanto para desenvolvedores quanto para administradores.

É estruturado com broker e nodes. O broker é a “central de comando” do OpenShift, é ele o responsável pela alocação e controle dos recursos dos nodes, que por sua vez são as máquinas (físicas ou virtuais) que serão “divididas” pelas aplicações.

Com esse nível de magia, conseguimos aumentar ainda mais a densidade de um data center. Combinando o poder do OpenShift com um ambiente de cloud computing, podemos ainda automatizar todo o processo de criação de VMs (sob demanda) e inclusão de nós no sistema tornando a infraestrutura totalmente transparente e de certa forma irrelevante para as equipes de desenvolvimento e suporte.

Alta disponibilidade

O broker também é capaz de mover aplicações entre os nós conforme necessidade causada por indisponibilidade ou carga do servidor, sendo capaz de garantir disponibilidade e responsibilidade das aplicações (lógico que isso também depende muito da carga média total da infraestrutura).

Há, ainda, opções de HA que garantem tanto o uptime da aplicação quanto a distribuição de carga (haproxy) bem como escalabilidade horizontal automática baseada na carga das aplicações. O OpenShift é capaz de subir novas gears automaticamente para suprir as necessidades.

Outra mágica: DNS

Dentre as diversas funcionalidades espetaculares do OpenShift, tem uma que gostei muito: a gestão de nomes. Para mapear um domínio ou subdomínio para uma aplicação, basta criar um alias. Assim como em todas as outras funcionalidades, não existe a necessidade de configurações manuais. E ainda existe a gerência automática de zonas de DNS para os domínios utilizados (mais explicado em seguida).

O esquema de nomes é baseado na estrutura de aplicação-domínioAPP.domínio, onde domínioAPP representa o “domínio” conforme nomeado no OpenShift (são como “divisões”) e domínio representa o domínio (DNS) propriamente dito, ex: loja-meucliente.minhaempresa.com.br. Essa atualização de DNS para inclusão de aplicação-domínio também é feita de forma automatizada.

Três “sabores” disponíveis

Podemos encontrar o OpenShift em três formas distintas: Online (serviço oferecido pela própria Red Hat, com servidores na Amazon, que inclui plano gratuito para 3 small gears), Enterprise (o top, conforme imaginado, pago e com suporte) e Origin (versão da comunidade que pode ser utilizada livremente).

Sem complicações

Imaginando algo dessa magnitude já tendemos a prever os seguidos dias de dores de cabeça para colocar um sistema desses em funcionamento. Mas acredite: até nesse momento o OpenShift surpreende. Conforme pode ser visto em install.openshift.com, basta executar um único comando para efetuar a instalação.

Quando se trata de utilização e administração, tudo segue a mesma linha de simplicidade. A WebUI é extremamente simples e a utilização via terminal é igualmente descomplicada com a ferramenta rhc, que te guia até mesmo na hora de configurar a conexão com o broker.

Tudo também é facilmente ajustável, como definições de “tamanho” (ou capacidade) de gears ou de quotas. Até mesmo as aplicações podem ter seus recursos alterados bastando um “rhc app scale-up” ou “rhc app scale-down“.

Segurança e densidade

Sem dúvidas essas são as palavras mais utilizadas na hora de projetar um data center.

Fazendo “uso pesado” do SELinux e cgroups, as aplicações ficam “isoladas” umas das outras e são incapazes de “invadir” o espaço (falando em consumo de recursos) das demais. Toda autenticação é baseada em chaves (usuários das aplicações não conseguem mudar isso) e apenas os recursos necessários para o funcionamento e manutenção das aplicações são disponibilizados.

Já no quesito densidade, podemos imaginar o seguinte: compartilhar máquina física (com virtualização) já parece promissor, então compartilhar máquinas virtuais maiores (reduzindo overhead ocasionado por SO tanto em memória quanto processamento quanto armazenamento) é uma opção ainda mais promissora. Outro benefício obtido, ainda, será a “dupla camada” de alta disponibilidade (HA na aplicação e na infraestrutura).

Opinião final

Parabéns a Red Hat… como de costume surpreendeu.

Se abstrairmos toda a tecnologia utilizada e integrada na construção do OpenShift, ainda sim teremos um sistema impressionante capaz de reduzir ao máximo a necessidade de trabalho para deploy de aplicações e “áreas” para que elas sejam executadas. É certamente parte do futuro de meus projetos e implantações e altamente recomendado para qualquer gestor de infraestrutura e administrador de sistemas que ocasionalmente tem problemas com segurança, disponibilidade, estabilidade, densidade de data center e continuidade.

Quer uma dica? Experimente!

Miniero

Mais artigos deste autor »

SysAdmin com vasta experiência em projetos de grande porte, data centers, performance tuning, segurança e clustering. Um verdadeiro "escovador de bits" que possui uma fome insaciável por conhecimento nas mais diversas áreas de estudos possíveis, de matrizes elétricas a microprocessadores, de aritmética a mecânica quântica, de meros verbos a psicologia.


5 Comentários

Gabriel
1

Excelente artigo, estou fazendo algumas experiências com projetos pequenos e tenho tido ótimos resultados e impressões do OpenShift! RedHat nessa mandou super bem.

Elias Aparecido Marciano
2

Tenho alguns sites executando no openshift, até o momento ótima ferramenta, inclusive na versão free de 3 gears, muito melhor que as hospedagens brasileiras.

Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!