Article image
Matheus Carvalho
Matheus Carvalho02/10/2023 11:39
Compartilhe

Introdução a Sistemas Distribuídos

  • #Estrutura de dados
  • #RESTful
  • #Arquitetura de Sistemas

Sistemas distribuídos, na grande maioria, são sistemas web que possibilitam o acesso rápido e eficaz às informações. Eles são desenvolvidos com a utilização da arquitetura web. Assim, faz-se necessário o estudo dos conceitos, dos métodos, das ferramentas, da web e, principalmente, da arquitetura web.

Veremos brevemente os conceitos de:

  • Arquiteturas para ambientes mobile e web;
  • Protocolo Hypertext Transfer Protocol (HTTP);
  • Elementos de World Wide Web (WWW);

Vamos começar o estudo tratando sobre WWW

  • Você já imaginou como seria o mundo atual sem internet?
  • Sem as redes sociais?
  • Sem os aplicativos?
  • Sem as últimas novidades do mundo?

Podemos nos deparar com várias definições sobre a WWW, a mais clara é a definição dada por Kurose e Ross a World Wide Web "[...] é uma rede de computadores mundial, isto é, uma rede que interconecta milhões de equipamentos de computação em todo o mundo”.

A WWW permite transferir dados em arquivos HTML pela internet. Arquivos HTML são arquivos hipertextos que permitem acesso a dados, fotos, imagens, vídeos e textos.Possuindo vários elementos, dentre eles, diversos protocolos.

Nessa perspectiva, vamos falar um pouco sobre o protocolo HTTP.  

Dentre os vários protocolos que a web possui, encontra-se o HTTP. Esse protocolo visa fornecer acesso a recursos por meio da internet. Com ele, conseguimos acessar páginas HTML pela web.

É muito utilizado na arquitetura cliente-servidor.

A arquitetura cliente-servidor é baseada na comunicação de dois elementos, “cliente” e “servidor”, por meio da internet, mediante requisições e respostas.

O protocolo HTTP é o mecanismo que permite ao “cliente” realizar as requisições e possibilita ao servidor “fornecer as respostas”. O protocolo HTTP envia e recebe mensagem, para isso, fornece alguns métodos.

  • GET - Método responsável por realizar uma requisição ao recurso especificado, geralmente, o servidor.
  • HEAD - Esse método é uma variação do get, em que só o cabeçalho de um documento é solicitado, mas não o corpo do documento.
  • POST - Esse método é responsável por enviar dados para serem processados para um recurso específico.
  • PUT - Método que envia os dados de forma semelhante ao post, todavia difere semanticamente deste.
  • DELETE - Exclui um recurso.

A figura ilustra como o protocolo HTTP funciona:

image

O protocolo Hyper Text Transfer Protocol Secure (HTTPS) é uma variação do protocolo HTTP.

O HTTPS possui como base o HTTP e apresenta uma camada de segurança adicional.

Você pode obter mais detalhes em outros artigos da DIO.

https://www.dio.me/articles/ciberseguranca-por-que-um-site-http-e-considerado-inseguro-e-https-seguro

Já a arquitetura de uma aplicação web refere-se à estrutura geral e ao design de alto nível que guiam o desenvolvimento de um sistema web. Existem várias abordagens e padrões arquiteturais comumente utilizados para desenvolver aplicações web.

Vou descrever brevemente duas das arquiteturas mais populares: a arquitetura cliente-servidor e a arquitetura de microsserviços.

O cliente é a interface de usuário da aplicação que os usuários finais interagem. Normalmente, é implementado usando tecnologias web como HTML, CSS e JavaScript, executando em um navegador da web. O cliente solicita recursos e envia solicitações ao servidor para processamento.

O servidor é responsável por processar as solicitações do cliente, realizar a lógica de negócios e retornar as respostas apropriadas. Pode ser implementado usando uma variedade de tecnologias, como Node.js, Java, Python, Ruby, etc. O servidor pode se comunicar com bancos de dados, serviços externos ou outros sistemas para obter os dados necessários para atender às solicitações dos clientes.

A arquitetura de microsserviços é uma abordagem arquitetural na qual uma aplicação é dividida em componentes independentes chamados de microsserviços. Cada microsserviço é responsável por uma funcionalidade específica e pode ser desenvolvido e implantado de forma independente.

Habitualmente, uma aplicação web é desenvolvida utilizando o modelo Model-View-Control (MVC). Esse modelo possui três elementos.

  • MODEL - Representa o modelo de dados
  • VIEW - Controla as ações do usuário
  • CONTROL - Controla a "regra de negócio"

Esse padrão de arquitetura almeja realizar alterações de dados de forma independente da representação deles. A ideia principal do modelo MVC é separar as regras de negócios, os dados e a forma como os dados são apresentados para o usuário. Sendo assim, o MVC é o modelo mais utilizado atualmente.

O funcionamento básico do modelo MVC se resume da seguinte forma: o componente View é responsável por controlar os eventos dos usuários, assim, ele envia os eventos para o Control.

Este aplica a regra de negócio e, consequentemente, modifica os dados, que consistem no Model.

O Model, por sua vez, representa os dados da aplicação.

Desse modo, podemos acompanhar o funcionamento do modelo MVC a partir da figura seguinte. 

image

Já vimos que sistemas distribuídos, na grande maioria, são implementados por intermédio da web. É comum, também, sistemas distribuídos fornecerem algum tipo de serviço.

Na verdade, a computação distribuída na nuvem é uma das grandes tendências quando falamos em sistemas distribuídos. É usual um sistema distribuído fornecer algum tipo de serviço, um web service, por exemplo. Assim, o estudo de web services é importante.

Se não lembra ou não sabe o que é um web service, não se desespere.

Um web service é um método invocado por outras aplicações por meio de tecnologias web. Um web service visa fornecer algum tipo de serviço. A maior utilização dele é para transferir dados de uma aplicação para outra.

Sobre as tecnologias e a arquitetura de web services, podemos citar o Restful. Este é um estilo de arquitetura para web services.

O Restful estabelece um conjunto de restrições e definições a ser utilizado na criação de web services. Um web service Restful fornece uma maior interoperabilidade entre os computadores, bem como maiores eficiência e confiabilidade.

Quando falamos em web services, estamos tratando de serviços, frequentemente, esses serviços envolvem dois ou mais computadores, um computador solicitante e outro computador que fornecerá tal serviço.

Com Restful, um web service, um computador solicitante acessa e manipula os recursos web solicitados, usando um conjunto de operações. Para essa questão de “Solicitar” e “Fornecer”, podemos utilizar o protocolo HTTP. Frequentemente, as respostas para uma solicitação são arquivos, como: XML, JSON ou até páginas HTML.

Quando abordamos serviços disponibilizados pela internet, em nossas mentes, logo vêm web services e API. Muitos chegam até a pensar que web service é sinônimo de API. Todavia uma API consiste em uma interface que permite que outras aplicações acessem funcionalidades estabelecidas pela API. Isso significa que confundir web service com API não é um erro grosseiro, pois ambos pretendem “fornecer” algum tipo de serviço. A grande diferença entre eles é que API fornece serviços de forma mais abrangente, isto é, com as funcionalidades disponibilizadas pela API, podemos até estruturar um software de forma robusta.

A utilização de API no desenvolvimento de software tem se tornado comum e, a cada momento, mais APIs são criadas. Nos últimos anos, houve vários movimentos para tentar padronizar as APIs. No início do ano de 2000, Leonard Richardson apresentou uma tese em que ele havia analisado centenas de APIs diferentes. Nessa análise, Richardson propôs que as APIs fossem divididas em quatro categorias diferentes para identificar o nível de maturidade. Essa maturidade permite mensurar quão compatível com REST a API é.

Em palavras mais simples, Richardson estabeleceu quatro níveis de maturidade. Cada nível corresponde ao uso de um elemento, quanto mais elementos você utiliza na aplicação, mais maduro e próximo ao padrão REST sua aplicação vai estar.

A seguir, a figura ilustra tais níveis.

image

  • Nível zero - é o nível mais baixo. Nesse nível, estão APIs que utilizam o protocolo HTTP para comunicação, todavia sem seguir nenhum tipo de regra para implementar os métodos. As APIs habituais, nesse nível, somente usam os métodos get e post do HTTP.
  • Nível um - as APIs, nesse nível de maturidade, utilizam as URIs de forma eficiente. Nesse nível, fazemos o uso de recursos para modelar a API.
  • Nível dois - nesse nível, os métodos de nossas APIs são melhorados, e, principalmente, começamos a usar verbos. Na API desse nível, os verbos HTTP são usados de forma semântica. Por exemplo, get para leitura, post para inserir, put para substituir, delete para excluir.
  • Nível três - é o nível mais alto de maturidade. De todas as APIs disponíveis no mercado atualmente, são poucas que estão nesse nível. Nele, é implementado o HATEOAS, que significa Hypermedia as the Engine of Application State. Uma API com esse nível de maturidade fornece aos usuários links que indicam como podem ser feitas a navegação e a utilização dos recursos disponíveis.

É necessário observar a importância da web em sistemas distribuídos. Grandes sistemas distribuídos são desenvolvidos especialmente para arquitetura web. Assim, nota-se que esse estudo é de grande relevância.

Compartilhe
Comentários (1)

MG

Moacir Gonçalves - 02/10/2023 12:15

Ótimo conteúdo, bem didático e rico em informações importantes!