Entre Arquitetura Monolítica e Conteinerização: gerenciamento e suas plataformas

Esse artigo é um resumo de estudo do meu Trabalho de Conclusão de Curso e possui embasamento em artigos científicos. Espero contribuir para a área e trazer uma visão mais clara sobre a importância de escolher uma arquitetura de servidor com tecnologias atuais.  

Muito além de apenas desenvolver uma aplicação inovadora, disponibilizar esse software com qualidade é mais do que fundamental para a satisfação do usuário. Por isso, conhecer quais tecnologias e configurações de servidor proporcionam essa entrega é fundamental para a reputação desse produto.

 

 1. A importância de uma infraestrutura: como a arquitetura de servidores podem impactar uma empresa?

Com o avanço cada mais evidente da virtualização de serviços e competitividade tecnológica, surgem empresas com novos produtos, mas também existem aquelas que já possuem seu lugar no mercado, e ambas necessitam estar atualizadas em relação a como alcançar seus clientes e entregar serviços de forma eficiente. E nada melhor do que usar uma plataforma digital, sendo web ou mobile, para entregar esse produto ou serviço ao consumidor.   

A princípio o desenvolvimento de um software é o produto principal e que será entregue ao usuário final. É esse produto que representa a função de uma companhia em relação as pessoas.   

Para que seja possível entregar essa demanda com eficiência, as empresas dependem e precisam de uma infraestrutura de servidores robusta e flexível para suportar muitas requisições de usuários de forma simultânea e consistente, se mantendo, assim, a frente da concorrência e buscando entregar uma melhor experiencia para o usuário.  

O tipo de arquitetura de servidor é um grande fator para garantir essa entrega, pois é lá que serão organizados os componentes relacionados ao funcionamento do software, por isso é preciso ter uma infraestrutura organizada e atualizada tecnologicamente para atender toda essa complexidade de serviços e tecnologias. 

 

 2. Servidores monolíticos: limitações e desafios

Servidores monolíticos são sistemas de software em que todos os componentes estão integrados em uma única aplicação. Esse modelo de arquitetura foi bastante utilizado a partir da década de 70, já que os sistemas eram muito simples e não consumiam recursos de máquina. Além disso, poucas pessoas utilizavam computadores possuindo uma maior usabilidade acadêmica ou governamental.   

Porém, conforme a complexidade e números de usuários cresciam, surgiram alguns problemas com esse tipo de arquitetura: escalabilidade limitada, dificuldade de manutenção, novas atualizações e falta de flexibilidade para adotar novas tecnologias. 

 

3. O uso das Máquinas Virtuais (VMs): desafios na virtualização

Máquinas Virtuais (VMs) foram uma tentativa de abordar as limitações dos servidores monolíticos. As VMs permitiam a criação de ambientes isolados. Assim, cada VM continha um sistema operacional completo, incluindo aplicativos e serviços. Isso deixava a consolidação de vários servidores virtuais em uma única máquina física, proporcionando um melhor isolamento de serviços e segregação nos recursos de hardware. Porém, como cada máquina virtual simulava um sistema operacional completo, ainda havia: desperdício de recursos, alto consumo de memória, gerenciamento complexo. Essas foram algumas das problemáticas associadas às VMs e com isso buscou-se a criação de outras formas de virtualização para um melhor desempenho. 

 

 4. Desempenho VM vs. Docker: comparando virtualização e contêineres

Ao contrário das VMs, os contêineres compartilham o kernel do sistema operacional do host, o que resulta em uma maior eficiência de recursos. Cada contêiner contém apenas os componentes necessários, o que o torna mais leve em execução. Como é mostrado no estudo de Zhao et al. (2019) da Universidade de Tecnologia de Lanzhou da China, o Docker consumiu de 10% a 15% de CPU e memória a menos em comparação às VMs. Com isso, é evidente a economia no uso de hardware. 

 

 5. Micro serviços: adoção de uma arquitetura flexível

O cluster Kubernetes é um sistema para implantar e gerenciar containers Docker que hospedam microserviços. Diferentemente dos servidores com arquitetura monolítica, o cluster é um conjunto de computadores que trabalham juntos, mas que formam um sistema único. A figura abaixo mostra essa distribuição dentro do servidor. Primeiramente, a máquina “Kubernetes Master” é responsável por ordenar o funcionamento dos “Nodes”, que são as máquinas Workers, responsáveis por armazenar os “Pods” (que pode ter entre um ou mais containers). Assim, caso um Node fique indisponível para os usuários, o Node Master irá escalar outro node com a aplicação.  

Disponível em: https://medium.com/@tomerf/so-you-want-to-configure-the-perfect-db-cluster-inside-a-kubernetes-cluster-a4d2c26aca7a  

Alguns benefícios de se usar micro serviços são:  

  • Aplicação auto escalável 
  • Lidam melhor com picos de tráfego garantindo a alta disponibilidade 
  • Manutenção facilitada

 

6. Monolítico vs. Micro serviços: escolhendo a arquitetura certa

No início do desenvolvimento de uma aplicação, a Arquitetura Monolítica pode ser mais atrativa, pois é mais simples de ser construída, porém, escolher e planejar toda uma aplicação baseada em um servidor com arquitetura com micro serviços é mais vantajoso ao longo prazo, pois facilitará as atualizações do software e manutenção, economizará nos recursos de hardware e será auto escalável no pico de altas requisições em números de usuários. Além disso, servidores que possuem arquitetura com base em micro serviços estão mais preparados para lidar com possíveis ataques de DDoS (Distributed Denial of Service), que tem como objetivo deixar o serviço indisponível, fazendo requisições simultâneas e sobrecarregando o servidor.  

 

Portanto, para ter mais qualidade do serviço e satisfação de experiência do usuário, é fundamental saber quais tecnologias e ferramentas utilizar na hora de configurar um servidor.  

*As opiniões aqui colocadas refletem minha opinião pessoal e não necessariamente a opinião da Compass UOL. 

 

Referências:  

DOCKER DOCUMENTATION. Docker Documentation
PORTAINER. Portainer Documentation.
KUBERNETES. Kubernetes Documentation.
ZHAO, H.; HAN, Z. Y. Application of docker container in intelligent traffic cloud. Lecture Notes in Electrical Engineering.2019. 

Gostou da solução? Nós podemos ajudar!

Conheça nossos conteúdos gratuitos, direcionados aos assuntos de sua preferência!

Enviar

Receba nosso conteúdo

Gostaria de receber de forma gratuita mais conteúdos sobre este ou outros assuntos? Preencha o formulário abaixo e receba nosso conteúdo gratuito!

Parabéns!

Você receberá nosso conteúdo em breve!

Atenção

Tivemos um problema com seu formulário, tente novamente.