Hospedagem Java com alta disponibilidade e escalabilidade!

Hospedagem Java com alta disponibilidade e escalabilidade!

A hospedagem Java com alta disponibilidade e escalabilidade tornou-se essencial para garantir o sucesso de aplicações web e serviços online. Saiba tudo sobre ela!

Monolithic X Microservices - Comparação

Monolithic X Microservices

Abaixo será apresentado a diferença entre os modelos monolithic e de microservices:

  • Downtimes/Oscilações no Deploy
  • Downtimes/Oscilações ao reiniciar serviço
  • Alto risco de falhas ou sobrecarga na VM
  • Dificuldade para escalar
  • Modular e Flexível
  • Deploy e atualizações independentes
  • Mais fácil para escalar e manter

Diagrama

Diagrama

Esse diagrama foi criado pensando em um modelo de aplicação que utiliza microservices e abaixo será apresentado

  1. O usuário vai fazer uma requisição de um domínio no seu navegador, o servidor DNS vai fazer uma ligação entre um domínio e um número de IP e com isso o usuário chega a nossa infraestrutura.
  2. O usuário vai fazer uma requisição de um domínio no seu navegador, o servidor DNS vai fazer uma ligação entre um domínio e um número de IP e com isso o usuário chega aos containers de nossa infraestrutura.
  3. Os nossos containers estão separados em, load balancer, aplicação e banco de dados

Escalabilidade vertical e horizontal

Escalabilidade vertical e horizontal

Escalabilidade vertical é simplesmente aumentar os recursos do hardware de um servidor, como CPU e memória, ou melhorar o desempenho do disco, alterando-o para um mais rápido.
Escalabilidade horizontal é adicionar mais instâncias de um mesmo servidor a um ambiente, como adicionar um outro nó de um servidor de aplicação para o mesmo sistema.

Escalabilidade vertical

Abaixo será apresentado as vantagens e as desvantagens da escalabilidade vertical:

Vantagens
  • Fácil de configurar e publicar
  • Sem necessidade de alterações no código para escalar
  • Sem necessidade de sincronização de dados
  • Pouca complexidade
  • Menores custos
  • Ambientes com muita memória não disponíveis em alguns provedores
  • Facilidade para aumentar a performance
  • Sem problemas com a rede ou latência
Desvantagens
  • Sem alta disponibilidade - risco significativo de downtime se falhar o servidor ou exceder os limites
  • Dificuldade de fazer deploy sem downtime
  • Dificuldade para migrar a outro servidor físico ou infraestrutura maior, e o live migration depende da tecnologia de virtualização escolhida É a capacidade de aumentar e diminuir os recursos disponíveis do seu ambiente, de maneira rápida e flexível. Prós Contras

Escalabilidade vertical/horizontal na SaveinCloud

A principal vantagem da SaveinCloud para outras plataformas de hospedagem Java, é a possibilidade configurar a alocação de recurso para os ambientes sem precisar que a aplicação tenha downtime, Abaixo será apresentados alguns benefícios da escalabilidade horizontal e vertical:

Escalabilidade Vertial
  • Resolver o problema de alocação de recursos sem necessidade de definir exatamente quando vai utilizar
  • RAM e CPU disponíveis de acordo ao uso e limites estabelecidos na configuração do container
  • O consumo é monitorado e cobrado em tempo real baseado no uso
  • Capacidade de ajustar os limites máximos sem necessidade de migração
Escalabilidade horizontal
  • Solução dos problemas de alta disponibilidade: fácil de configurar um ambiente pronto para produção
  • Opção de auto-cluster disponível, diminuindo a complexibilidade
  • Escalabilidade Automática
  • Disponível Escalabilidade Stateful ou stateless.
  • Inteligência na distribuição dos ambientes (Anti-affinity)
  • Flexibilidade na gestão com opções de UI, API y JPS

Limites vs Uso real em uma VM

Nas outras plataformas de hospedagem Java normalmente é contratado um limite de recursos para uma VM, esses recursos dificilmente são totalmente utilizados.

limite de recursos

Já na nossa plataforma, é possível determinar um limite escalonáveis e reservados de recursos, os reservados seriam uma base mínima e os escalonáveis seriam quais são os limites de recursos que podem ser alcançados, desta forma será cobrado apenas o que foi usado.

limite escalonáveis e reservados de recursos

Elasticidade em um Cloud baseado em Containers

A elasticidade dos containers em nossa plataforma ocorre de forma simples, cada host representa a nossa maquina física onde esta alocada os nossos containers com as suas aplicações, caso alguma aplicação precise de mais recursos será disponibilizado conforme na imagem abaixo:

elasticidade dos containers

Elasticidade vertical automática

Cada container hospedado com a SaveinCloud é dividido em unidades de cloudlets, a cada cloudlet equivale a 128MiB de RAM e 400Hz de CPU, é possível configurar um limite de escala máxima para cada container, onde os recursos ficam disponíveis sempre que necessário, no exemplo abaixo foi configurado 1 cloudlet reservado, ou seja sempre será cobrado por este cloudlet e 32 cloudlets escaláveis, que são recursos que podem ser utilizados.

Elasticidade vertical automática

Pagar pelo contratado VS Pagar pelo uso

Na SaveinCloud usamos o modelo paga somente pelo que foi utilizado assim ao usar a escalabilidade vertical automática na nossa plataforma, você conseguira uma economia significativa dos custos do cloud, baseados no uso real.

pay per use

Na imagem acima é possível verificar os recursos alocados pelo modelo pague pelo que contratou que não são utilizados e a perca de dinheiro em relação ao nosso modelo.

Escalabilidade Horizontal de hospedagem Java

No nosso painel é possível verificar o nosso recurso de escalabilidade horizontal, clicando na opção sinalizada em vermelho na imagem abaixo é possível aumentar ou diminuir o numero de containers.

escalabilidade horizontal

Todos os containers serão cridos com o mesmo numero de cloudlets reservados e escalonáveis, os recursos serão multiplicados pelo numero de containers.

Containers com escalabilidade horizontal

Na escalabilidade horizontal será criado os containers em hardwares físicos diferentes replicando os recursos e os dados, com isso garante ainda mais disponibilidade a aplicação.

Containers com escalabilidade horizontal

Stateless (Criação de um novo) vs Stateful (Clone)

O Stateless mode cria um cantainer vazio baseado no template padrão do servidor de aplicação, é mais rapido que o Statefull e mais fácil de paralelizar a escalabilidade, já o Stateful mode cria um novo containers fazendo uma clonagem a partir do master, normalmente leva mais tempo que o Stateless, mas os dados são replicados automaticamente.

Stateless (Criação de um novo) vs Stateful (Clone)

Regras de anti-affinity

Todos os containers adicionados em um ambiente Cluster são criados em diferentes servidores físicos, tendo uma avançada alta disponibilidade e proteção contra falhas.

containers criados em diferentes servidores físicos

Escalabilidade horizontal automática de hospedagem Java

A opção escalabilidade horizontal automática da hospedagem Java pode ser acessada clicando na opção de configurações do ambiente, nessa opção é possível configurar uma regra que permita adicionar novos containers e remove-los.

Escalabilidade horizontal automática

Opção auto-clustering de hospedagem Java

A funcionalidade Auto-Clustering mode está disponível para diferentes servidores de aplicações. Os containers já vem pré configurados com replicação de sessão e load balacer garantindo um ambiente com performance e alta disponibilidade.

Auto-Clustering mode

Para ativar a opção auto-clustering, clique em Novo Ambiente na parte superior do painel, escolha o servidor de aplicação java desejado e na opção Auto-Clustering coloque on, como na imagem acima.

Superando o desperdício de memoria Java

A jelastic inicialmente foi criada para o mercado de java, sendo a primeira linguagem a ser disponível na plataforma, sendo assim reconhecida pela comunidade mundial de java pois consegue um solucionar um dos maiores problemas de desperdício de memoria no java.

pesquisa feita em um evento no Jakarta EE em 2018
  • Requerimentos de uso de memória

O gráfico acima é referente a uma pesquisa feita em um evento no Jakarta EE em 2018, onde foi perguntado quais seriam os pontos a melhorar se tratando de hospedagem java, mais de 40% dos entrevistados responderam que seria o requerimentos de uso de memória.

Entendendo o JVM Footprint

A JVM tem duas funções primárias, que são, permitir que uma aplicação Java funcione em qualquer dispositivo ou sistema operacional, e controlar e otimizar o uso de memória pelas aplicações.

JVM Footprint

O Java foi lançado em 1995, e até então além de escrever as aplicações você ainda tinha que controlar a memoria, um dos maiores problemas seria o uso do jvm heap nas maiorias da vms seria necessário reiniciar o java para limpar a memoria.

uso desnecessário de memória

Pensando nesse problema, a jelastic criou o jvm footprint, um agente responsável por gerenciar o jvm heap, limpando esses dados na memoria sem precisar reiniciar o java, assim o usuario não sofrerá nenhum downtime.

recursos liberados automaticamente

A jelastic foi reconhecida mundialmente pela oracle em 2018, para saber mais sobre o prêmio leia este artigo.

Jelastic reconhecida pela oracle em 2018

Solução para Java < 12: Execução de serviço GC a todo momento

Para versões anteriores ao java 12, recomendamos instalar o java Memory Agent, isso pode ser feito através clicando em marketplace na parte superior do painel, para as versoes superiores do java, este agente já vem instalado por padrão.

java Memory Agent

Exemplo do resultado do ADD-ON

O container da imagem está limitado com 8G, max heap limit(Xmx) 6.5G, e o consumo de memoria depois da entrada chega aos 3G.

resultado do ADD-ON

Depois de instalar o jelastic Agent GC, o consumo de memoria trabalha com um nível mínimo. Sem o agent, o consumo chega nos 3G sem necessidade. Se o uso da aplicação é mais intenso, os números são ainda piores.

Escalabilidade e economia garantidas

A SaveinCloud é reconhecida internacionalmente pela comunidade Java como uma das melhores soluções do mercado. Dispomos de ambientes com alta disponibilidade e performance, com escalabilidade garantida, fazendo com que você obtenha mais recursos computacionais e aumente seus limites cobrando somente pelo que utilizar.

Nossa infraestrutura opera em três Datacenters com certificação Tier III no Brasil, garantindo máxima segurança para sua empresa. O suporte técnico 24/7 e a cobrança é feita em Real (R$).

Faça o teste agora e descubra!