com/br/articles/kubernetes-effect
O Efeito Kubernetes
por Bilgin Ibryam Bilgin Ibryam Seguir 1 Seguidores, traduzido por Marcelo Costa Marcelo
Costa Seguir 37 Seguidores em 30 ago 2018. Tempo estimado de leitura: 16 minutos Dê sua
opinião
Links
patrocinados
Pontos Principais
A forma como devemos olhar para o Kubernetes é mais como um paradigma
fundamental que tem implicações em múltiplas dimensões, que uma API para
interação.
O Kubernetes adiciona uma dimensão completamente nova às linguagens baseadas
em blocos de construção, oferecendo um novo conjunto de primitivas distribuídas e
tempo de execução para criar sistemas distribuídos que se espalham por vários
processos e nós.
Os princípios fundamentais para a criação de aplicativos em container usam a imagem
do container como a primitiva básica e a plataforma de orquestração do container como
o ambiente de tempo de execução alvo. Os princípios incluem preocupação única,
autocontenção, imutabilidade da imagem, alta observabilidade, conformidade com o
ciclo de vida, descartabilidade do processo e confinamento em tempo de execução.
Padrões de design de container estão focados na sua estruturação e outras primitivas
distribuídas da melhor maneira possível para resolver os desafios em questão. Os
padrões incluem sidecar, ambassador, adapter, initializer, work queue, custom
controller e self awareness.
As práticas recomendadas para containers estão relacionadas ao tamanho da imagem,
à especificação da porta, ao uso do volume, aos metadados da imagem e muito mais.
O Kubernetes (k8s) percorreu um longo caminho em muito pouco tempo. Apenas dois anos
atrás, ele teve que competir e provar ser melhor do que as soluções Fleet, Docker Swarm,
Cloud Foundry Diego, Nomad, Kontena, Rancher's Cattle, Apache Mesos, Amazon ECS, etc.
1 of 12 9/1/18, 11:33 AM
O Efeito Kubernetes https://www.infoq.com/br/articles/kubernetes-effect
Além disso, cada vez mais, grandes nomes continuaram se juntando ao ecossistema
Kubernetes, não apenas como usuários ou patrocinadores platinum, mas apostando
totalmente em seus negócios de containers sobre o sucesso do Kubernetes. O Kubernetes
Engine da Google, o OpenShift da Red Hat, o Azure Container Service da Microsoft, o Cloud
Container Service da IBM, o Container Engine da Oracle e outros são os primeiros a serem
lembrados aqui.
Mas o que tudo isso significa? Primeiro, significa que os desenvolvedores precisam dominar
uma única plataforma para a orquestração de containers para ser relevante a 90% do
mercado de trabalho relacionado à containers. Um bom motivo para investir tempo para
aprender bem o k8s. Isso também significa que estamos todos mergulhados até o joelho em
k8s.
O Kubernetes é como a Amazon, mas, para os containers, se não quiser ficar preso a
apenas um fornecedor, inevitavelmente optará por Kubernetes. Projetando, implementando e
executando aplicativos no Kubernetes, você tem a liberdade de mover seus aplicativos entre
os diferentes provedores de nuvem, distribuições do kubernetes e provedores de serviços.
Mergulhando no Kubernetes
A seguir temos um diagrama de um serviço em container demonstrando o quanto ele
depende do Kubernetes.
2 of 12 9/1/18, 11:33 AM
O Efeito Kubernetes https://www.infoq.com/br/articles/kubernetes-effect
Observe que não escrevemos que o Kubernetes é uma API de portabilidade entre
aplicações, e sim uma camada. O diagrama apresenta apenas os objetos K8 que temos que
criar explicitamente - que podemos chama-los de API k8s. Mas, na realidade, estamos muito
mais ligados à plataforma. Os K8s oferecem um conjunto completo de primitivas distribuídos
(como pods, serviços, controladores) que atendem aos requisitos e orientam o design de
nossas aplicações. Essas novas primitivas e os recursos da plataforma ditam os princípios
de design e os padrões de design que usamos para implementar todos os serviços futuros.
Eles, por sua vez, afetam as técnicas que utilizaremos para enfrentar os desafios cotidianos
e inclusive podem afetar o que chamamos de "melhor prática". Portanto, a maneira como
devemos olhar para o Kubernetes é mais como um paradigma fundamental que tem
implicações em múltiplas dimensões, ao invés de apenas uma API.
O efeito Kubernetes
O container e os recursos do orquestrador fornecem um novo conjunto de abstrações e
primitivas. Para obter o melhor valor dessas novas primitivas e equilibrar suas forças,
precisamos de um novo conjunto de princípios de design que nos guie. Posteriormente,
quanto mais usarmos essas novas primitivas, mais acabaremos resolvendo problemas
repetitivos e reinventando a roda.
3 of 12 9/1/18, 11:33 AM
O Efeito Kubernetes https://www.infoq.com/br/articles/kubernetes-effect
É aqui que os padrões entram em cena. Padrões de projeto nos fornecem receitas sobre
como estruturar as novas primitivas para resolver problemas repetidos mais rapidamente.
Embora os princípios sejam mais abstratos, mais fundamentais e mudem com menos
frequência, os padrões podem ser afetados por uma mudança no comportamento primitivo.
Um novo recurso na plataforma pode tornar o padrão um antipadrão ou menos relevante.
Então, também existem práticas e técnicas que usamos diariamente. As técnicas vão desde
pequenos truques técnicos para realizar uma tarefa de maneira mais eficiente, até formas
mais extensas de trabalho e práticas. Nós mudamos as técnicas e práticas assim que
encontramos uma maneira um pouco melhor de fazer as coisas, mais fácil e mais rápido. É
assim que nós e a plataforma evoluímos. E por que fazemos tudo isso? É aí que obtemos os
benefícios e os valores de usar essa nova plataforma e satisfazer nossas necessidades. Em
certo sentido, "O Efeito Kubernetes" é auto-imposto e multifacetado:
Para o restante deste artigo, vamos nos aprofundar e ver exemplos de cada categoria.
4 of 12 9/1/18, 11:33 AM
O Efeito Kubernetes https://www.infoq.com/br/articles/kubernetes-effect
Por exemplo, posso confiar nas verificações de integridade do Kubernetes (por exemplo,
testes de prontidão e de vivacidade) para alguma confiabilidade do meu aplicativo. Eu posso
usar o Kubernetes Services para a descoberta de serviço em vez de fazer a descoberta de
serviço do lado do cliente a partir do aplicativo. Posso usar o Kubernetes Jobs para agendar
uma unidade de trabalho atômica assíncrona. Eu posso usar o ConfigMap para o
gerenciamento de configuração e o Kubernetes CronJob para agendamento de tarefas
periódicas, em vez de usar a biblioteca Quartz baseada em Java ou uma implementação da
interface ExecutorService.
5 of 12 9/1/18, 11:33 AM
O Efeito Kubernetes https://www.infoq.com/br/articles/kubernetes-effect
Tempo de construção
Princípio de preocupação única - cada container deve abordar uma única preocupação
e executá-la bem.
6 of 12 9/1/18, 11:33 AM
O Efeito Kubernetes https://www.infoq.com/br/articles/kubernetes-effect
Tempo de execução
Seguindo esses princípios, é mais provável que criemos aplicações em container que sejam
mais adequados para plataformas nativas em nuvem, como o Kubernetes.
Estes princípios estão bem documentados e disponíveis gratuitamente para download como
um white paper. Uma antevisão dos princípios é descrita na Figura 5 acima.
7 of 12 9/1/18, 11:33 AM
O Efeito Kubernetes https://www.infoq.com/br/articles/kubernetes-effect
As novas primitivas precisam de novos princípios que expliquem as forças entre elas. Quanto
mais usamos as primitivas, mais acabamos resolvendo problemas repetitivos que nos levam
a reconhecer soluções repetidas chamadas padrões. Padrões de design para container estão
focados na estruturação dos containers e outras primitivas distribuídas da melhor maneira
possível para resolver os desafios em questão. Uma pequena lista de padrões de design
relacionados à containers é a seguinte:
O trabalho de base nesta área foi realizado por Brendan Burns e David Oppenheimer em seu
artigo sobre padrões de design de container. Desde então, Brendan publicou um livro que
também cobre os padrões de design e tópicos relacionados a sistemas distribuídos. Roland
Huß e eu também estamos escrevendo um livro intitulado Kubernetes Patterns cobrindo
todos esses padrões de design e casos de uso para aplicativos baseados em containers. A
seguir estão alguns desses padrões visualizados.
8 of 12 9/1/18, 11:33 AM
O Efeito Kubernetes https://www.infoq.com/br/articles/kubernetes-effect
Práticas / Técnicas
Além dos princípios e padrões, a criação de boas aplicações em container exige
familiaridade com outras práticas recomendadas e técnicas relacionadas à containers.
Princípios e padrões são idéias abstratas e fundamentais que mudam com menos
frequência. As melhores práticas e as técnicas relacionadas são mais concretas e podem
mudar com mais frequência. Aqui estão algumas das práticas comuns recomendadas
relacionadas à containers:
Os benefícios do Kubernetes
Como você pode ver neste artigo, o Kubernetes dita as operações de design,
desenvolvimento e operações de 2o. dia para sistemas distribuídos de maneira fundamental.
A curva de aprendizado também não é curta e atravessar o abismo do Kubernetes requer
tempo e paciência. Por isso, gostaria de terminar com uma lista de benefícios que o
Kubernetes traz aos desenvolvedores. Espero que isso ajude a justificar por que vale a pena
entrar no Kubernetes e usá-lo para orientar sua estratégia de TI.
Recursos
Espero ter conseguido descrever como vejo o Kubernetes afetando o dia a dia dos
desenvolvedores. Se você quiser ler mais sobre este tópico, ou seja, o Kubernetes do ponto
de vista de um desenvolvedor, confira meu livro e siga-me no twitter em @bibryam.
A seguir, estão alguns links para recursos que focam em Kubernetes do ponto de vista de um
desenvolvedor:
Sobre o Autor
Bilgin Ibryam(@bibryam) é arquiteto chefe na Red Hat, committer e membro da
ASF. Ele é um evangelista de código aberto, blogueiro e autor de livros de
Padrões de Design para o Camel e o Kubernetes. Em seu trabalho do dia-a-dia,
Bilgin gosta de orientar, codificar e liderar desenvolvedores para obter sucesso
com a criação de soluções nativas em cloud. Seu trabalho atual concentra-se
em integração de aplicativos, sistemas distribuídos, mensageria, microservices, devops e
desafios em cloud nativo em geral. Você pode encontrá-lo no Twitter, no Linkedin ou no Blog
dele.
12 of 12 9/1/18, 11:33 AM