Login / Registre-se Account
Jump to section

Spring no Kubernetes

Copiar URL

O Red Hat® OpenShift® é a melhor maneira de desenvolver e executar aplicações Spring e Spring Boot nativas do Kubernetes.

O framework Spring é um dos frameworks Java mais populares para a criação de aplicações com base em uma arquitetura de microsserviços distribuídos. O modelo de programação e configuração do Spring para aplicações baseadas em Java tem foco na "tubulação". Assim, os desenvolvedores podem se concentrar na lógica empresarial no nível das aplicações, sem vínculos desnecessários com ambientes de implantação específicos. O Spring Boot simplifica o empacotamento e a configuração da aplicação para que ela seja independente, executável e facilmente implantável como um container no Kubernetes.

Spring nativo do Kubernetes

O Spring, como muitos frameworks Java, não "sabe" que está sendo executado em um container em uma plataforma como o Kubernetes. O framework inclui muitos componentes que facilitam a compilação e implantação de aplicações distribuídas, como Spring Boot, Spring Cloud e Spring Web, além de um host de outros componentes para fazer a descoberta de serviços, o balanceamento de carga, o roteamento de solicitações e mais. Com o Kubernetes, muitas dessas preocupações podem ser delegadas para a plataforma de aplicações em containers subjacente para produzir uma aplicação que se integre melhor à plataforma de execução. Criar aplicações Spring com esses caminhos de códigos otimizados é fundamental para liberar todo o potencial do Spring com Kubernetes.

Aplicações Spring podem confiar no Kubernetes e nos recursos implantados nele para oferecer os serviços de nuvem necessários que viabilizam um desenvolvimento eficaz na plataforma. Isso inclui serviços como filas de mensagens, bancos de dados, armazenamento persistente e em cache, entre outros.

Registro de serviços

Muitas vezes, as arquiteturas de microsserviços exigem escala dinâmica de serviços individuais em nuvem pública, privada ou híbrida onde nem sempre é possível prever ou configurar estatisticamente o número e endereço dos hosts com antecedência. No Kubernetes, a replicação e a escala de serviços é uma funcionalidade central. Isso significa que o cliente não precisa manter uma memória em cache ou uma conta para a falha do próprio registro de serviços. Por exemplo, o Netflix Ribbon (normalmente usado com aplicações Spring) pode ser declarativamente configurado para usar o Kubernetes em vez de um registro de serviço, sem alterações no código.

Balanceamento de carga

Para ligações de clientes para serviços stateless em aplicações Spring, a alta disponibilidade (HA) se manifesta na necessidade de procurar o serviço em um registro de serviços e balancear a carga entre as instâncias disponíveis. O Kubernetes oferece um único endereço de serviço onde as ligações terão a carga balanceada e serão redirecionadas para uma instância adequada. Em um cluster Kubernetes, o nome do serviço resolve esse endereço IP do cluster e pode ser usado para alcançar o balanceador de carga. Quando houver ligações externas e você não quiser passar pelo roteador, será possível configurar um endereço IP externo para o serviço.

Tolerância a falhas

A natureza altamente distribuída dos microsserviços significa um risco maior de falhas nas crescentes ligações remotas. Historicamente, o fardo de implementar padrões de tolerância a falhas como um disjuntor de circuito tem caído sobre o desenvolvedor. No entanto, projetos como o Istio, que implementam uma service mesh, podem aliviar essa carga e oferecer um controle operacional muito maior sobre os serviços Spring executados no cluster.

Configuração externalizada

Soluções de gerenciamento de configuração externalizada podem ser uma ótima alternativa à típica combinação de arquivos de configuração, argumentos de linha de comando e variáveis de ambiente que são usados para tornar as aplicações mais portáteis e menos rígidas em resposta às mudanças externas. Os Kubernetes ConfigMaps podem ser usados para armazenar informações de alta granularidade, como propriedades individuais, ou pouco refinadas, como arquivos inteiros de configuração ou blobs JSON. Eles oferecem mecanismos para injetar dados de configuração nos containers, mantendo as configurações separadas das aplicações Spring, mas acessíveis a elas, com o uso de anotações como @ConfigProperty.

Rastreamento distribuído e métricas de aplicação

Por conta de todas as vantagens, pode ser difícil analisar uma arquitetura de microsserviços e solucionar os problemas. Cada solicitação empresarial gera várias ligações para e entre serviços individuais em diversas camadas. O rastreamento distribuído une todas as ligações de serviços individuais e as associa a uma solicitação empresarial com um ID exclusivo. Além disso, com as métricas, as aplicações Spring conseguem expor dados no nível das aplicações para viabilizar verificações de alta granularidade sobre o estado delas. Ferramentas de rastreamento, como o Jaeger, combinadas a um stack de métricas com o Prometheus e o Grafana oferecem uma base sólida para monitoramento e solução de problemas das aplicações Spring no Kubernetes.

À medida que as aplicações Spring se desenvolvem como coleções de serviços descentralizados, fica mais difícil gerenciar comunicações e a segurança entre esses serviços. Com o Red Hat OpenShift e o Red Hat Runtimes, os desenvolvedores Spring contam com as ferramentas, os frameworks e as integrações nativas do Kubernetes necessários para compilar e gerenciar aplicações Spring em escala na plataforma em nuvem híbrida do Kubernetes e de container líder do setor.

Existem muitos benefícios para os desenvolvedores Spring que usam o Red Hat OpenShift. Entre eles estão:

Ao usar o Spring Boot no OpenShift, o desenvolvedor tem uma experiência natural em aplicações Spring novas e existentes.

  • Suporte para compilação de aplicações nativas em nuvem com o Spring e o Spring Boot
  • Integra as funcionalidades do Kubernetes que substituem os serviços tradicionais de suporte autônomo.
    • Configuração externalizada: Kubernetes ConfigMap e integração com o Spring Cloud Kubernetes
    • Descoberta de serviços: serviços do Kubernetes
    • Balanceamento de carga: controlador de replicações do Kubernetes
    • Reinicialização automática: verificações de integridade do Kubernetes e integração com o Spring Actuator
    • Métricas: Prometheus, Grafana e integração com o Spring Cloud Sleuth
    • Rastreamento distribuído com Istio e Jaeger Tracing
  • Ferramentas do desenvolvedor com o Red Hat OpenShift e o Red Hat CodeReady Studio para rapidamente criar o scaffold de novos projetos Spring, ganhar acesso às APIs Spring que você já conhece no seu IDE favorito e implantar o Red Hat OpenShift.

Use as APIs Spring que você já conhece e aproveite os benefícios dos serviços e da plataforma Kubernetes subjacentes no Red Hat OpenShift e no Red Hat Application Services.

Use o conhecimento do Spring para desenvolver aplicações modernas com a tecnologia mais recente.

Leia mais

Hands-on

Cenário de aprendizado

Obtenha um aprendizado prático para o desenvolvimento de aplicações Spring e Spring Boot no Kubernetes e no OpenShift

Documentação

Arquitetura de referência

Aprenda a arquitetar aplicações Spring distribuídas no OpenShift.

Comunidade

Open source

Conheça melhor a abordagem open source da Red Hat para criação e suporte do Cloud Native Spring pelo projeto SnowDrop

A base Kubernetes para desenvolvimento de aplicações modernas

Red Hat OpenShift

Red Hat OpenShift

Uma plataforma de aplicações em containers para acelerar a implantação de aplicações nativas em nuvem.

Red Hat OpenShift

Red Hat OpenShift Streams for Apache Kafka

Um serviço de nuvem gerenciado para criar, implantar e escalar aplicações.

Red Hat Runtimes

Red Hat Runtimes

Uma seleção de ambientes de execução e frameworks para desenvolver aplicações nativas em nuvem.

Red Hat OpenShift

Red Hat OpenShift Data Foundation

Armazenamento definido por software para containers.

Illustration - mail

Quer receber mais conteúdo deste tipo?

Cadastre-se para receber a nossa newsletter Red Hat Shares.