DEV Community

Renan Matias Zanini
Renan Matias Zanini

Posted on

Arquitetura Cliente-Servidor: Descomplicando a Teoria e Explorando Aplicações Práticas

Resumo: A revolução da informática gerou a distribuição do tratamento de dados, ou seja, a mudança do uso dos grandes computadores centrais para a utilização de redes. Neste cenário, o padrão cliente-servidor estabeleceu-se como a base para os sistemas em atividade atualmente. O presente estudo descreve a separação das funções entre cliente, que solicita, e servidor, que presta os serviços. Ao lado dos estudos teóricos, apresentamos os casos práticos. Concluímos que, apesar de os problemas, como a vulnerabilidade a falhas do servidor ou a existência de gargalos, o modelo ainda se faz necessário em razão da sua maneira de organização e segurança unificada e facilidade para realizar os reparos.

1. Introdução

Quando entramos em um site, enviamos uma mensagem ou salvamos um arquivo em uma nuvem, na maioria das vezes não pensamos na complexa transferência de dados do que está acontecendo nos bastidores. Desde os grandes mainframes - máquinas grandes e isoladas que faziam todo o processamento enquanto os usuários trabalhavam por terminais simples - o mundo da computação mudou muito.

Com o barateamento do hardware e a evolução das redes de computadores, foi evidente que a carga útil poderia ser dividida de forma mais eficiente. A arquitetura cliente-servidor passou a ser importante na demanda por uma carga de trabalho mais equilibrada.

Nesse tipo de computação distribuída, há uma divisão clara entre quem pede e quem fornece:

  • Servidor: o responsável pelos recursos e serviços.
  • Cliente: a interface que usa esses recursos.

O objetivo deste artigo é simplificar esse cenário. Além de dar a teoria de como essas partes se comunicam, daremos exemplos úteis para seu uso no desenvolvimento e nas redes.

2. Fundamentação Teórica

Para entender como este modelo se torna eficaz, deve-se observar atentamente a distribuição de funções e a própria organização da comunicação.

2.1 O papel do Cliente e do Servidor

O cliente é, fundamentalmente, o nosso ponto de partida. O cliente é também o agente ativo da comunicação: inicia a conversa e aguarda por uma resposta. Em um modelo adequado, o cliente não tem que ser um dispositivo poderoso, já que sua função resume-se a traduzir as informações ao seu usuário de forma amigável e a manipular o pedido a ser enviado pela rede.

Por outro lado, o servidor é adotado mentalmente em sentido passivo. O servidor escuta a rede passivamente, aguardando ser solicitado para responder. De acordo com Tanenbaum e Van Steen (2007), o servidor gerencia as fontes de recursos compartilhadas e serve a diversos clientes ao mesmo tempo. É nesse ponto que o trabalho pesado acontece: regras de negócios complexas devem ser processadas, verificações de segurança devem ser aplicadas e a persistência final dos dados em um banco de dados deve ser obtida.

2.2 A Comunicação na Rede

Para prevenir qualquer tipo de ressalva, cliente e servidor precisam concordar a respeito da comunicação. Essa "conversa" ocorre através de uma infraestrutura de rede utilizando na maioria das vezes a família de protocolos TCP/IP para prevenir a perda de arquivos.
Além disso, contamos com o uso de protocolos como o HTTP para organizar a solicitação. De acordo com Sommerville (2011), as arquiteturas cliente-servidor necessitam de redes de comunicação duráveis para prevenir a fluidez dos dados, isto é, transformando sistemas complexos em um ambiente de serviços com o melhor formato.

2.3 A Teoria na Prática

Na área da engenharia de software:
Estão claras as responsabilidades divididas. É viável pensar na criação de um sistema de gestão empresarial. A interface, que é feita com bibliotecas como React, funciona no browser do usuário e opera como o Cliente. Quando o usuário clicar em "salvar", o cliente envia uma solicitação HTTP. Por outro lado, um back-end feito com linguagens como Python funciona como o servidor. Esse servidor pega essa solicitação, executa a lógica, armazena as informações em um banco de dados estruturado como o PostgreSQL e devolve uma resposta positiva para a tela do usuário.

Na infraestrutura de TI:
Uma situação prática é a administração de cópias de segurança dos sistemas de segurança. Considere dispositivos de CFTV, como um DVR MHDX 3116, integrados à rede e atuantes como clientes, que continuamente produzem enormes arquivos de vídeo e utilizam protocolos seguros, como SFTP, para enviar esses pacotes pela rede ao servidor Linux central. Enquanto isso, o servidor recebe as conexões, processa os pedidos e armazena as imagens de forma segura.


3. Conclusão

Neste texto, nós observamos que a arquitetura cliente-servidor é mais do que um conceito encontrado em livros de TI; é a base invisível que sustenta a internet e as infraestruturas corporativas atuais. A divisão de responsabilidades entre quem cuida da interface e quem realiza o processamento e a manipulação dos dados possibilitou uma significativa melhoria no desenvolvimento e na manutenção dos sistemas.

Os benefícios desta estratégia são claros: facilidade na realização de backups, segurança centralizada e uma escalabilidade impressionante. Se o sistema crescer, basta aprimorar o servidor central e não há necessidade de troca dos dispositivos de cada usuário.

Entretanto, é preciso ser realista sobre as dificuldades. O servidor torna-se um "ponto único de falha"; se ele falhar, toda a operação é interrompida. Além disso, se muitos clientes tentarem se comunicar ao mesmo tempo, a rede pode tornar-se congestionada. Apesar disso, com bom planejamento e medidas de segurança, o modelo cliente-servidor continua sendo a solução mais robusta e confiável para engenheiros e para o campo de TI que constrói nosso mundo digital.


Referências

  • SOMMERVILLE, Ian. Engenharia de software. 9 ed. São Paulo: Pearson Prentice Hall, 2011.
  • TANENBAUM, Andrew S.; VAN STEEN, Maarten. Sistemas distribuídos: princípios e paradigmas. 2 ed. São Paulo: Pearson Prentice Hall, 2007.

Autor: Renan Matias Zanini

Top comments (0)