O que é OpenShift e como ele funciona?

em Soluções.
Vale a pena entender melhor o que é OpenShift. Ganhando cada vez mais confiança e preferência na comunidade DevOps, essa plataforma em código aberto pode agilizar de maneira significativa o trabalho da sua equipe de desenvolvimento, reduzindo muito o investimento em infraestrutura e melhorando a integração entre múltiplos times de TI.
Muitas vezes, no desenvolvimento de softwares, o maior desafio não é o código, mas sim a infraestrutura. O tempo e o esforço investidos em implementação, suporte e configuração podem até não ser maiores que no desenvolvimento propriamente dito.
Aplicativos que não se comportam da mesma forma em máquinas (ambientes) diferentes, incompatibilidades de sistema e outros problemas de ordem técnica podem minar a eficiência e a qualidade da aplicação de uma empresa.
O OpenShift é uma plataforma de utilização simples que poupa o tempo e o esforço de desenvolvedores que precisam de um ambiente virtual isolado para testar, distribuir, desenvolver e escalar aplicações.
Neste artigo, vamos contar um pouco da história do OpenShift, sua relação com containers e arquitetura de microsserviços e quais são os benefícios em adotá-lo. Boa leitura!
O que é OpenShift?
OpenShift é uma plataforma como serviço, ou seja, uma PaaS, sigla para o termo em inglês: Platform as a Service. Uma PaaS serve para as empresas executarem, gerenciarem, testarem seus aplicativos e disponibilizarem seus aplicativos aos seus usuários.
A grande vantagem de uma PaaS é a possibilidade de ter um ambiente de desenvolvimento, homologação e produção sem a necessidade de incluir uma carga gigantesca de tarefas ao gerenciamento de TI.
Hoje, existem inúmeras ofertas de PaaS disponíveis no mercado, mas o OpenShift se destaca como uma opção com ótimo custo-benefício, usabilidade simples e uma portabilidade excelente. Para entender como isso é possível, é importante antes conhecer a base do OpenShift: os containers.
O que é um container?
Containers são uma nova forma de abstração de infraestrutura que está conquistando muito espaço na comunidade desenvolvedora graças a sua praticidade, portabilidade e, especialmente, economia de recurso.
Um container é semelhante a uma VM, sigla do inglês Virtual Machine, ou máquina virtual: uma abstração para encapsular aplicações em ambientes isolados.
Mas, enquanto em uma VM o hardware é virtualizado pelo hypervisor, nos containers isso acontece no nível do sistema operacional, o que faz com que os serviços empacotados não precisem, por exemplo, de uma reserva de memória RAM que seria desperdiçada em uma VM.
Outra grande vantagem dos containers é a portabilidade: o serviço é encapsulado com tudo necessário para sua execução e, com isso, rodará tão bem no notebook do desenvolvedor quanto no ambiente de produção da empresa. Essa característica reduz o trabalho de reconfigurações e elimina incompatibilidades inconvenientes que poderiam retardar o lançamento de uma aplicação.
Por fim, um container é algo que pode ser provisionado em segundos, de forma rápida, prática e segura, especialmente quando o OpenShift é utilizado.
É ainda mais veloz que o provisionamento de máquinas virtuais e, como são mais econômicos, os containers não correm o risco de se tornarem um pesadelo para a TI caso sejam utilizados em excesso — algo que acontece com as VMs.
Utilizando a estrutura básica dos containers criada por volta de 2008, em 2013 foi lançado o projeto Docker, uma aplicação desenvolvida em Go que utiliza o Linux Container para adicionar mais funcionalidades e usabilidade aos containers.
O Docker se tornou rapidamente um padrão de mercado e, nas palavras dos seus criadores, levaram os containers para as massas de desenvolvedores, já que até então a barreira de um backend avançado ainda inibia a adoção dessa forma de virtualização.
Para facilitar ainda mais o deploy, gerenciamento e escalonamento de containers, foi criada uma outra aplicação chamada Kubernetes, escrita em código aberto pela Google e posteriormente doada à Fundação Linux.
O Kubernetes surgiu para orquestrar containers, ou, segundo os seus criadores, eliminar a necessidade de orquestração em favor de um sistema descentralizado com processos independentes.
Como o OpenShift pode deixar seu trabalho mais rápido?
Você nem precisa saber o que é um container ou Kubernetes para utilizar o OpenShift com eficiência: na verdade, a plataforma se destaca justamente porque tira a necessidade de que o desenvolvedor se debruce sobre esses temas quando for realizar seu trabalho.
Muitas vezes, durante o desenvolvimento de uma aplicação, os seus criadores utilizam tecnologias diferentes para os múltiplos serviços dela, especialmente quando é adotada uma arquitetura de microsserviços.
Um exemplo prático é um site em PHP com base em MySQL. Do ponto de vista técnico, integrar essas duas tecnologias até que não é tão difícil assim, mas no OpenShift basta executar um conteiner com uma imagem com PHP e MySQL e pronto. Nenhum problema de compatibilidade, nenhuma configuração extra.
Surgiu a necessidade de incluir algo como phpMyAdmin, por exemplo? Só carregar mais um conteiner. O OpenShift elimina o tempo despendido com alguns aspectos da integração que são não só um desperdício de força de trabalho, como também a parte mais chata do trabalho de desenvolvedor.
E para acelerar ainda mais o começo do desenvolvimento de um projeto, o OpenShift oferece uma ampla gama de Web Framework Quickstart Templates, que permitem que os desenvolvedores, em um clique, instalem frameworks como o cakePHP, o Rails, Django entre outros.
Por fim, uma característica surpreendente do OpenShift está na maneira como a operação e o deploy são feitos: basta um “git push” para isso. A plataforma foi construída para eliminar o máximo de dores de cabeça relacionadas à administração de sistemas, fazendo com que o deploy seja realmente simples.
Gerenciando o ciclo de desenvolvimento com o OpenShift
A questão do deploy e a facilidade de uso e inicialização de projetos já fazem do OpenShift uma PaaS excelente, mas é claro que não ficaria só nisso. Ele disponibiliza importantes ferramentas para o gerenciamento e a organização do projeto, suavizando o ciclo de desenvolvimento como um todo.
Um bom processo de desenvolvimento de software envolve entregas frequentes e, por isso, o gerenciamento de releases é uma parte fundamental do trabalho. Uma das melhores ferramentas disponíveis para isso hoje é o Jenkins, escrito em código aberto e disponível no OpenShift como uma container image: ou seja, basta um clique que ela estará no projeto.
O Jenkins automatiza toda a burocracia que envolve integração contínua e entrega contínua, como a promoção ou o cancelamento de um release, baseando-se nos resultados de testes também automatizados.
Quem já tem fluxos de trabalho no Jenkins e migra para o OpenShift não terá problemas em agregar tudo com o Jenkins Pipeline plugin, também disponível na plataforma.
E para deixar a produtividade ainda mais otimizada, o próprio aplicativo web do OpenShift conta com ferramentas para estabelecer padrões para o fluxo de trabalho, replicando processos e uniformizando o ciclo de desenvolvimento.
Utilizando a flexibilidade do OpenShift para escalar melhor
A automatização do OpenShift faz com que toda a burocracia de infraestrutura se torne até irrelevante para times de desenvolvimento e suporte, deixando que eles se debrucem totalmente nos seus trabalhos. Mas vale a pena entender um pouco como isso acontece.
O OpenShift é estruturado em uma divisão de Broker e Nodes. Os Nodes são as máquinas, físicas, virtuais ou ambas, que serão divididas pelas aplicações e serviços. O Broker é o comando central do OpenShift, que de certa forma faz a orquestração e alocação de recursos dos Nodes.
O Broker consegue mover aplicações de lugar, gerenciar máquinas virtuais e containers para evitar uma sobrecarga que possa causar indisponibilidade do servidor. Isso aumenta o uptime do servidor de forma significativa, sem exigir intervenções regulares da equipe de suporte.
Além disso, o OpenShift é excelente para escalar projetos, já que subir novas imagens de acordo com a necessidade de uso é algo quase instantâneo. E vale lembrar que, como as aplicações estão encapsuladas em um ambiente isolado, não existe risco de incompatibilidades e elas vão escalar horizontalmente sem problemas.
Mais que isso: a escalabilidade horizontal acontece automaticamente em muitos dos casos, e as intervenções humanas nesse processo serão mínimas ou inexistentes. Por isso, muita gente consegue trabalhar com o OpenShift sem nem saber o que é container.
O ambiente de nuvem elástico e customizável permite que o time decida o quanto quer usar da plataforma e qual linguagem, estrutura e serviço vão ser utilizados em cada projeto.
Aderindo ao OpenShift
O OpenShift é uma solução da Red Hat que opera no modelo de container, baseado em Docker, e um mecanismo de orquestração construído sobre o Kubernetes. Ou seja, além de ser Open Source, é elaborado sobre outras soluções Open Source, o que faz com que exista uma comunidade ativa e aberta impulsionando a inovação nesse produto.
Para uma ferramenta tão poderosa e cheia de características que podem afetar profundamente o trabalho do setor de TI, era de se esperar que a implementação do OpenShift fosse um pouco complexa, ou no mínimo lenta.
Mas não, aderir a essa PaaS é muito fácil e rápido. Até o treinamento do time não será um problema, pois é uma ferramenta muito intuitiva e prática — além da grande quantidade de conteúdo disponível sobre o assunto na comunidade de DevOps.
Essencialmente, se o time já trabalha com algum outro modelo qualquer para deploy das suas aplicações, seja outra PaaS ou algo mais tradicional, migrar para o OpenShift será um movimento suave e natural.
Na prática, algumas dores de cabeça vão sumir de um dia para o outro e, depois de uma fricção mínima nos primeiros contatos, o trabalho de todos os times (desenvolvedores, suporte, operação) ficará bem mais fácil e flexível.
No Brasil, a maior autoridade em OpenShift é Locaweb Corp, parceira certificada pela Red Hat na distribuição da plataforma. A vantagem em escolher essa opção local está nos pagamentos em reais e o atendimento e suporte técnico nacional, em português e disponível 24 horas por dia, 7 dias por semana, por telefone ou helpdesk.
Agora que você já sabe o que é o OpenShift, como ele funciona e por que ele pode melhorar muito a infraestrutura de TI da sua empresa, aproveite para seguir nosso FacebookInstagram e LinkedIn, para ficar por dentro de tudo sobre redes, TI, containers e virtualização.