Este artigo resume conceitos e direcionamentos para ampliar seu poder de abstração de modelo e indicar a aplicação prática e de sucesso no uso de container.
O mundo de tecnologia é algo que muda com uma grande frequência.
O uso de containers tem se popularizado e trazido mais agilidade e menor custo no momento de desenvolver aplicações e entregar serviços, abstraindo a camada de infraestrutura, outrora de difícil escalabilidade e portabilidade. Mas além das vantagens mencionadas, como podemos tirar melhor proveito delas?
Para melhor contextualizar, temos como principal uso de containers o Docker, essa ferramentinha que se popularizou pela facilidade no uso, e é bem recente (surgiu em 2013), isola e encapsula as aplicações e os serviços através da criação de imagens base e compartilhamento de recursos via Sistema Operacional.
A configuração é bem simples, basta escrever um Dockerfile – (arquivo de configuração) e usar da forma que bem preferir, definindo os passos necessários para o funcionamento de sua aplicação desde a instalação de dependências até scripts e comandos que deverão ser executados. O típico “na minha máquina funciona” não é mais desculpa, pois o Docker permite a personalização de itens e a portabilidade, sendo necessário apenas instalar a ferramenta.
Apesar do Docker ter se popularizado, a gerência de muitos containers se tornou complexa, portanto surgiram os orquestradores que passaram a garantir a saúde dos muitos itens que rodavam, sem a necessidade de alguém que tomasse conta.
Temos diversas ferramentas que cumprem esse papel, entre elas o Kubernetes que ganhou força à partir da quantidade de features, robustez e quantidade de contribuidores que decidiram tornar o processo de orquestração amigável e permitiram a compatibilidade com os principais Provedores Cloud (AWS, Google e Azure), bem como os servidores que já estavam dentro de casa.
Muitos problemas como escalabilidade automática, balanceamento de carga, comunicação entre containers,exposição de aplicações e serviços foram resolvidos e muitas empresas adotaram a tecnologia, como por exemplo: Ebay, Pinterest, Samsung e etc.
Uma camada acima do Kubernetes, temos as plataforma como serviços, os famosos PAAS (Plataform As A Service em inglês). O Openshift, que embora use o Kubernetes por baixo dos panos, está nessa camada, pois possui um “self-service” de componentes que podem ser selecionado a gosto de cliente, tendo soluções internas de registry, build de imagens a partir de código fonte(S2I), bem como uma preocupação e padronização de itens importantes como: monitoria, segurança, logs, integração contínua, etc. Empresas como UOL, Pioneer e Santander utilizam a plataforma.
A ferramenta é mantida pela Red Hat e possui versões pagas e gratuitas. A versão free – denominada Origin pode ser utilizada pela comunidade e se encontra no github, já a Enterprise é paga e incluí suporte e uma maior estabilidade. Tal como Kubernetes é possível rodar a plataforma em locais como VMware ou nos provedores cloud.
E qual eu devo usar ?
Um container sozinho não faz verão, portanto, é importante saber que utilizar Docker em produção vai exigir um orquestrador, contudo é importante avaliar itens como liberdade de desenvolvimento, custo da infraestrutura que irá suportar as aplicações, dimensionamento da stack que a empresa irá utilizar, se terá um time dedicado para administrar ou se será utilizado como serviço gerenciado por algum provedor.
Um Openshift, por exemplo, deve ser usado em stacks mais robustas, devido à estrutura recomendada (são no mínimo 9 máquinas robustas para suportar os componentes + 1 máquina bastion para acessar os recursos), contudo ao mesmo tempo que são resolvidos alguns problemas primordiais, existem algumas particularidades a serem seguidas, perdendo-se a liberdade de tomada de decisão em alguns aspectos, como por exemplo, a exposição de serviços em portas diferentes de 80 e 443, enquanto um Kubernetes puro permite a exposição em qualquer porta, mas o mesmo poderia ter vulnerabilidades de segurança se não for configurado corretamente.
Cada ferramenta possui suas limitações, desafios e features, portanto escolher bem mediante uma avaliação rigorosa do cenário em que se está trabalhando garante um melhor aproveitamento da ferramenta escolhida, poupando trabalho extra e problemas futuros.
Outro ponto base é definir o time ou o serviço que irá tomar conta das aplicações da empresa. Capacitar um time ou delegar as aplicações internas da companhia à terceiros exige análises de custo, viabilidade e medidas preventivas de segurança.
Concluindo
É de suma importância ponderar e avaliar corretamente, pois apesar das facilidades, sempre surgem os desafios que uma nova tecnologia traz, principalmente se integrada com uma série de itens dependentes de uma série de variáveis como rede, provedores, time, aprovação de processos, etc.
Dominar as tecnologias internas e ser ágil influencia muito na qualidade da entrega, não existe mágica. Kubernetes, Openshift, Docker estão aí para trazer novas perspectivas sim e encurtar a jornada de desenvolvimento, integração e entrega de software, mas exigem uma atenção e cuidado ao serem utilizados.
Toda empresa hoje em dia é uma empresa de software, independente do ramo que tenha escolhido, portanto definir as ferramentas também é ter o controle do negócio.
Siga a Mandic nas seguintes redes sociais:
Gostou do conteúdo? Tem alguma dúvida? Entre em contato com nossos Especialistas Mandic Cloud, ficamos felizes em ajudá-lo.