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
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
![](https://saveincloud.com/wp-content/uploads/2021/01/diagrama.png)
- 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.
- 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.
- Os nossos containers estao separados em, load balancer, aplicação e banco de dados
Escalabilidade vertical e horizontal
![](https://saveincloud.com/wp-content/uploads/2021/02/vertical-horizontal.png)
Escalabilidade horizontal é adicionar mais instancias de um mesmo servidor a um ambiente, como adicionar um outro nó de um servidor de aplicação para o mesmo sistema.
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 deinir exatamente quando vai utilizar
- RAM e CPU disponiveis de acordo ao uso e limites estabelecidos na configuração do container
- O consumo é monitorado e cobrao em tempo real baseado no uso
- Capacidade de ajustar os limites maximos sem necessidade de migração
Escalabilidade horizontal
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.
![](https://saveincloud.com/wp-content/uploads/2021/02/vm.png)
![](https://saveincloud.com/wp-content/uploads/2021/02/container2.png)
Elasticidade em um Cloud baseado em Containers
Elasticidade vertical automática
![](https://saveincloud.com/wp-content/uploads/2021/02/escalabilidade-vertical-automatica3.png)
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.
![](https://saveincloud.com/wp-content/uploads/2021/02/pagar-pelo-uso.png)
Escalabilidade Horizontal de hospedagem Java
![](https://saveincloud.com/wp-content/uploads/2021/02/painel.png)
Containers com escalabilidade horizontal
Stateless (Criação de um novo) vs Stateful (Clone)
![](https://saveincloud.com/wp-content/uploads/2021/02/stateless-vs-stateful.png)
Regras de anti-affinity
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
![](https://saveincloud.com/wp-content/uploads/2021/02/auto-escalabilidade.png)
Opção auto-clustering de hospedagem Java
![](https://saveincloud.com/wp-content/uploads/2021/02/auto-clustering-java.png)
Superando o desperdício de memoria Java
![](https://saveincloud.com/wp-content/uploads/2021/02/jakarta-1.png)
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.
![](https://saveincloud.com/wp-content/uploads/2021/03/jvm-footprint.png)
![](https://saveincloud.com/wp-content/uploads/2021/03/jvm-grafico.png)
![](https://saveincloud.com/wp-content/uploads/2021/03/jvm-grafico2.png)
![](https://saveincloud.com/wp-content/uploads/2021/03/jelastic-award.png)
Solução para Java < 12: Execução de serviço GC a todo momento
![](https://saveincloud.com/wp-content/uploads/2021/03/java-memory-agent.png)
Exemplo do resultado do ADD-ON
![](https://saveincloud.com/wp-content/uploads/2021/03/jenkins.png)
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.