Escalando aplicações utilizando OpenShift – DevOps.
Escalando aplicações utilizando OpenShift – DevOps.
Sumário
O que é OpenShift?
O OpenShift é uma plataforma de DevOps desenvolvida pela Red Hat que tem como objetivo simplificar a vida dos desenvolvedores na hora de publicar e manter aplicações. A arquitetura em que o OpenShift é feito permite conteinerizar as aplicações, fazendo com que a cada aplicação esteja isolada, possibilitando que seja escalada. Ele usa o Kubernetes, desenvolvido pela Google, para fazer o orquestramento de diversas instâncias de contêineres, fornecendo infraestrutura necessária para receber as aplicações. A plataforma foi criada utilizando a seguinte estrutura:
Sobre a plataforma do OpenShift
Diferente das demais plataformas, o OpenShift é muito simples de ser utilizado. Ele possui uma interface web que com poucos cliques toda a infraestrutura é criada. Existe também a opção de acessar o OpenShift através do terminal. Após a criação da instância, com mais um clique você pode criar uma cópia ou remover uma instância, escalando rapidamente a aplicação. Nessa opção, podem ser configurados scripts que dão mais liberdade ao usuário, como a possibilidade de agendar deploys automáticos.
Ainda, a plataforma permite que seja configurado o auto-scalling de cada uma das aplicações com base no consumo de CPU e memória. O OpenShift também traz resiliência à aplicação. Caso alguma dos contêineres caia, ele é imediatamente reiniciado.
Outro diferencial é a compatibilidade de funcionamento com diversas linguagens de programação e com diversos provedores de serviço. A plataforma pode hospedar aplicações em Java, PHP, Node, Asp NET Core entre outras.
Ao escolher a linguagem e apontar o endereço Git do projeto, a plataforma faz download do código e ainda instala as demais dependências do projeto, deixando a aplicação pronta para uso.
Problemas com deploy
Durante o deploy de uma aplicação, é comum ficarmos algum tempo com a aplicação indisponível. Isso se deve ao tempo gasto entre copiar os arquivos para o servidor e o servidor se reconfigurar.
Utilizando o OpenShift você pode deixar a aplicação todo o tempo disponível, mesmo durante a implantação. Caso o deploy gere erros, o rollback é feito imediatamente após o erro. Isso é possível porque durante o deploy, a plataforma cria uma nova instância com o novo build, porém mantém o antigo se mantém ativo até que se confirme o deploy correto da nova instância. Em caso de erro, a nova instância é removida, mantendo-se a antiga. Logo, a
aplicação fica disponível durante todo o tempo.
O OpenShift possui três tipos de distribuição:
- A primeira é a versão Online. Nela, a própria RedHat fornece o serviço em nuvem, sendo que toda a infraestrutura é feita por conta deles. O acesso pode ser feito através do link: https://manage.openshift.com.
- A segunda é a versão Origin. Essa é uma versão Open Source e pode ser utilizada gratuitamente. Nesse caso, é necessário ter um servidor e prover toda a infraestrutura. O download do código pode ser baixado no link: https://github.com/openshift/origin.
- A terceira versão é a Enterprise. Essa versão é paga e suportada pela RedHat.
Mão na Massa:
Vamos disponibilizar uma aplicação simples em PHP utilizando a versão online do OpenShift.
1. Criar uma conta OpenShift Online:
Acesse o site: https://manage.openshift.com e clique em “sign up”. Registre uma nova conta e entre na plataforma.
2. Clique em “Open Web Console” para abrir a plataforma. Em seguida, clique em “Create Project” para criarmos um novo projeto.
3. Preencha os dados básicos do projeto e clique em “Create”.
4. Selecione a linguagem em que sua aplicação foi escrita. Para esse exemplo, utilizaremos a linguagem PHP. Veja que além das opções disponibilizadas pela plataforma, ainda é possível utilizar uma determinada imagem.
5. Selecione qual a opção de provedor de serviço você deseja. Para o nosso exemplo, selecione o PHP na versão 5.6.
6. Dê um nome ao código utilizado e coloque o endereço do Git onde está o código da sua aplicação e clique em “Create”. Como exemplo, foi criado um “hello world” em php, apenas como exemplo.
Veja que são apresentados algumas informações referentes ao acesso ao projeto via terminal.
Clique em “Continue to overview” para seguir em frente.
Nesse momento, o build do projeto é iniciado. É possível acompanhar os logs gerados e o
status do processo. Após o build, o deploy será feito automaticamente.
7. Após o deploy, clique no botão “Overview” no menu lateral à esquerda. Veja que sua aplicação está lá.
Observe que, no momento, apenas um pod está ativo. Ou seja, só existe uma instância da
aplicação rodando.
8. Para escalar a aplicação, basta clicar na seta para cima. A plataforma irá cuidar de toda a infra, sem causar nenhuma indisponibilidade. A partir daí, o controle de carga também é feito pela plataforma.
9. O site estará disponível no endereço que foi gerado pelo OpenShift online. Clique no endereço e veja o resultado.
Conclusão:
A conteinerização resolve diversos problemas de operação. Dá maior liberdade para o desenvolvedor colocar suas aplicações em produção com segurança e, a oportunidade de voltar sem que haja indisponibilidade do sistema. Escalar aplicações evitando gargalos e lentidão na aplicação também são facilitadas, desde que as aplicações estejam preparadas para isso. Finalmente, o grande diferencial do OpenShift foi disponibilizar uma interface web de fácil utilização, provendo acesso aos logs e a uma interface de configuração muito simples.
Desenvolvimento de Software
Confira outros artigos
Testes end-to-end: sucesso na implementação da automação
Hoje, como você garante a entrega de valor, a confiabilidade e a eficiência do seu projeto? Com o intuito de responder a essa questão crucial, uma das melhores respostas é a automação de testes end-to-end. Muitas pessoas, principalmente nossos clientes, tendem a imaginar que automação de testes é apenas mais um tipo de teste de […]
Desenvolvimento de Software
Mecanismos de Acompanhamento no Desenvolvimento de Software
O uso de mecanismos de acompanhamento é imprescindível no mundo do desenvolvimento de software e pode potencializar a eficiência digital. O acompanhamento efetivo das operações é fundamental para garantir a entrega de soluções digitais de sucesso. Na nossa empresa, utilizamos uma metodologia única, o dti evolve, que incorpora inteligência artificial (IA) para acelerar nosso processo de […]
Desenvolvimento de Software
Eficiência digital com copilot: um caso de uso do GitHub
Em um mundo em constante evolução tecnológica, otimizar o tempo e potencializar a eficiência digital se torna cada vez mais crucial. Portanto, vamos apresentar alguns experimentos que estão sendo implementados com o Git Hub Copilot em busca de maior eficiência digital. Certamente quem nos acompanha sabe que estamos experimentando e introduzindo as melhores ferramentas de […]
Desenvolvimento de Software