<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Pedro Lucas</title>
    <description>The latest articles on Forem by Pedro Lucas (@pedroluucas).</description>
    <link>https://forem.com/pedroluucas</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3536043%2F6adb3101-12d3-47f2-ac15-f68963145ddd.jpeg</url>
      <title>Forem: Pedro Lucas</title>
      <link>https://forem.com/pedroluucas</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/pedroluucas"/>
    <language>en</language>
    <item>
      <title>Arquitetura Cliente-Servidor na Web Moderna: REST e GraphQL</title>
      <dc:creator>Pedro Lucas</dc:creator>
      <pubDate>Mon, 29 Sep 2025 00:52:02 +0000</pubDate>
      <link>https://forem.com/pedroluucas/arquitetura-cliente-servidor-na-web-moderna-rest-e-graphql-2b79</link>
      <guid>https://forem.com/pedroluucas/arquitetura-cliente-servidor-na-web-moderna-rest-e-graphql-2b79</guid>
      <description>&lt;h1&gt;
  
  
  Arquitetura Cliente-Servidor na Web Moderna: REST e GraphQL
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;O modelo cliente-servidor é uma das arquiteturas fundamentais da computação distribuída. Desde as décadas de 1980 e 1990, esse paradigma orienta o desenvolvimento de sistemas baseados na interação entre clientes, que solicitam serviços, e servidores, que os fornecem. Esse conceito, continua sendo a base da maioria das aplicações distribuídas.  &lt;/p&gt;

&lt;p&gt;Na Web moderna, a arquitetura cliente-servidor ganhou novas formas de implementação, especialmente com a popularização das &lt;strong&gt;APIs REST&lt;/strong&gt; e do &lt;strong&gt;GraphQL&lt;/strong&gt;, que adaptam os princípios clássicos para atender às necessidades atuais de escalabilidade, flexibilidade e integração em tempo real. Este artigo analisa como essas tecnologias aplicam o modelo cliente-servidor na prática e quais são os desafios envolvidos.&lt;/p&gt;




&lt;h2&gt;
  
  
  Fundamentação Teórica
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Arquitetura Cliente-Servidor
&lt;/h3&gt;

&lt;p&gt;A arquitetura cliente-servidor organiza o processamento em camadas. No modelo de &lt;strong&gt;duas camadas (2-tier)&lt;/strong&gt;, o cliente acessa diretamente o servidor, enquanto no modelo de &lt;strong&gt;três camadas (3-tier)&lt;/strong&gt; ou &lt;strong&gt;multicamadas (n-tier)&lt;/strong&gt; existem intermediários, como servidores de aplicação. Sommerville (2019) aponta que a separação de responsabilidades favorece a manutenção, modularidade e escalabilidade dos sistemas.  &lt;/p&gt;

&lt;p&gt;O princípio central permanece o mesmo: o cliente envia requisições e o servidor responde, o que permite estruturar sistemas de maneira clara e eficiente.  &lt;/p&gt;




&lt;h3&gt;
  
  
  2. O Modelo Cliente-Servidor na Web
&lt;/h3&gt;

&lt;p&gt;Na Web, o cliente normalmente é um navegador ou aplicação móvel, que envia requisições por meio do protocolo HTTP ou HTTPS. O servidor, por sua vez, processa essas requisições e devolve respostas em formatos como JSON ou XML. É como a natureza sem estado (stateless) do HTTP influenciou a definição do estilo arquitetural REST, consolidando o modelo cliente-servidor como base da comunicação em rede.  &lt;/p&gt;

&lt;p&gt;Com o crescimento da Internet, surgiram desafios relacionados à escalabilidade, segurança, autenticação e controle de concorrência. Para enfrentar esses problemas, padrões arquiteturais como REST e GraphQL foram amplamente adotados.  &lt;/p&gt;




&lt;h3&gt;
  
  
  3. REST (Representational State Transfer)
&lt;/h3&gt;

&lt;p&gt;REST é um estilo arquitetural que define princípios para sistemas distribuídos baseados na Web. Cada recurso é identificado por uma URI e manipulado por métodos HTTP, como GET, POST, PUT e DELETE.  &lt;/p&gt;

&lt;p&gt;Entre suas principais características estão:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Statelessness&lt;/strong&gt;: cada requisição deve conter todas as informações necessárias para ser processada, sem depender de estado mantido no servidor;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cacheability&lt;/strong&gt;: as respostas devem indicar se podem ser armazenadas em cache, o que melhora o desempenho;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Uniform Interface&lt;/strong&gt;: a comunicação entre cliente e servidor segue padrões consistentes e previsíveis;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Layered System&lt;/strong&gt;: a arquitetura pode incluir camadas intermediárias, como proxies e gateways.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;a simplicidade e compatibilidade com a infraestrutura existente tornaram o REST a abordagem mais difundida para a construção de APIs.  &lt;/p&gt;




&lt;h3&gt;
  
  
  4. GraphQL
&lt;/h3&gt;

&lt;p&gt;O GraphQL foi criado pelo Facebook em 2012 e disponibilizado como open source em 2015. Diferente do REST, em que cada endpoint retorna um conjunto pré-definido de dados, o GraphQL permite que o cliente especifique exatamente quais informações deseja. Isso evita problemas comuns como &lt;strong&gt;overfetching&lt;/strong&gt; (dados em excesso) e &lt;strong&gt;underfetching&lt;/strong&gt; (dados insuficientes).  &lt;/p&gt;

&lt;p&gt;De acordo com a documentação oficial do GraphQL (FACEBOOK, 2025), suas principais características são:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Schema e Tipagem Forte&lt;/strong&gt;: a API define um esquema com tipos e relações, garantindo consistência;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Single Endpoint&lt;/strong&gt;: todas as requisições passam por um único endpoint, simplificando o consumo;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Queries, Mutations e Subscriptions&lt;/strong&gt;: suporte a leitura, escrita e comunicação em tempo real.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O modelo cliente-servidor continua presente, mas com maior flexibilidade na forma como os dados são entregues.  &lt;/p&gt;




&lt;h3&gt;
  
  
  5. Comparação e Desafios
&lt;/h3&gt;

&lt;p&gt;REST e GraphQL representam abordagens diferentes para o mesmo paradigma cliente-servidor.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O &lt;strong&gt;REST&lt;/strong&gt; é amplamente suportado, simples de implementar e facilita o uso de cache.
&lt;/li&gt;
&lt;li&gt;O &lt;strong&gt;GraphQL&lt;/strong&gt; se destaca em cenários de maior complexidade, nos quais o cliente precisa de controle preciso sobre os dados retornados.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Apesar das diferenças, ambos enfrentam desafios semelhantes:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Escalabilidade&lt;/strong&gt;, necessária para lidar com grande volume de requisições;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Segurança&lt;/strong&gt;, essencial para proteger endpoints contra ataques;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoramento e Observabilidade&lt;/strong&gt;, fundamentais para manter a performance e a confiabilidade.
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mesmo em arquiteturas mais modernas, como microserviços e serverless, a lógica cliente-servidor permanece como base. Cada microserviço funciona, essencialmente, como um servidor atendendo a requisições de outros clientes internos ou externos.  &lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;A arquitetura cliente-servidor consolidou-se como um modelo atemporal na engenharia de software. Tecnologias como REST e GraphQL demonstram como esse paradigma evoluiu para atender às demandas da Web moderna, oferecendo soluções para escalabilidade, flexibilidade e comunicação em tempo real.  &lt;/p&gt;

&lt;p&gt;Embora diferentes em seus mecanismos, REST e GraphQL reforçam a centralidade do modelo cliente-servidor, mostrando que sua adaptação constante é essencial para o desenvolvimento de aplicações distribuídas em ambientes cada vez mais complexos, como nuvem e dispositivos móveis.  &lt;/p&gt;




&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;FIELDING, R. T. &lt;em&gt;Architectural Styles and the Design of Network-based Software Architectures&lt;/em&gt;. Tese (Doutorado) – University of California, Irvine, 2000.
&lt;/li&gt;
&lt;li&gt;RICHARDSON, L.; RUBY, S. &lt;em&gt;RESTful Web Services&lt;/em&gt;. O’Reilly Media, 2007.
&lt;/li&gt;
&lt;li&gt;SOMMERVILLE, I. &lt;em&gt;Engenharia de Software&lt;/em&gt;. 10. ed. São Paulo: Pearson, 2019.
&lt;/li&gt;
&lt;li&gt;TANENBAUM, A. S.; STEEN, M. &lt;em&gt;Distributed Systems: Principles and Paradigms&lt;/em&gt;. 2. ed. Pearson, 2007.
&lt;/li&gt;
&lt;li&gt;FACEBOOK. &lt;em&gt;GraphQL: A query language for your API&lt;/em&gt;. Disponível em: &lt;a href="https://graphql.org/" rel="noopener noreferrer"&gt;https://graphql.org/&lt;/a&gt;. Acesso em: 28 set. 2025.
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>graphql</category>
      <category>api</category>
      <category>webdev</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
