Visão geral
Com o Red Hat® OpenShift®, você pode desenvolver e executar aplicações Spring e Spring Boot nativas do Kubernetes.
O que é Spring?
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.
Recursos da Red Hat
Suporte do Kubernetes para desenvolvedores Spring
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
Nas chamadas dos 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 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.
Como otimizar o Spring para 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.
Benefícios do Red Hat OpenShift para desenvolvedores Spring
Existem muitos benefícios para os desenvolvedores Spring que usam o Red Hat OpenShift. Entre eles estão:
Otimização para Kubernetes e DevOps
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 de desenvolvedor do Red Hat OpenShift para desenvolver novos projetos Spring com rapidez, obter acesso a APIs Spring em seu IDE de preferência e implantar no Red Hat OpenShift
Pré-integração no stack
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.
- Versão do OpenJDK da Red Hat otimizada para execução em aplicações Java em um ambiente de containers.
- Serviços nativos do Kubernetes com o Red Hat Application Services que se integram ao Spring Cloud Kubernetes, ao Spring Security (com o Red Hat SSO), ao Spring Caching (com o Red Hat Data Grid), ao Spring Messaging (com o Red Hat AMQ), ao Spring Web, ao Spring Data e muito mais.
- Implementação de padrões de integração empresarial comuns nos serviços das suas aplicações com o Spring Boot e o Red Hat Fuse (com base no Apache Camel)
Suporte para aplicações modernas
Use o conhecimento do Spring para desenvolver aplicações modernas com a tecnologia mais recente.
- Aplicações Spring serverless com o Camel-K e o Kafka
- Use APIs Spring que você já conhece para compilar aplicações Java nativas em container com o Quarkus
- Processos de negócios nativos do Kubernetes com o Kogito
- Use os operadores do Kubernetes para oferecer uma forma natural de criar e conectar as aplicações Spring usando as APIs nativas do Kubernetes pelo Halkyon
Blog da Red Hat
Tudo relacionado à Red Hat: soluções, treinamentos e certificações Red Hat, casos de sucesso de clientes, novidades dos nossos parceiros e notícias sobre projetos das comunidades open source.