DEV Community

Cover image for O que são Sistemas Distribuídos?
Victor Osório
Victor Osório

Posted on • Originally published at blog.vepo.dev

1

O que são Sistemas Distribuídos?

Nos últimos 10 anos a internet se tornou onipresente. Isso nos levou a estarmos sempre conectados ao nosso smartphone que se torna um tela de acesso a todo o mundo. Mas isso não mudou somente as nossas vidas, mas a arquitetura de software como um todo. Quase todos os sistemas hoje são conectados a internet e interagem com outros sistemas como se fossem parte de uma inteligência distribuída. Nessa série vou tentar colocar no "papel" o que são sistemas distribuídos e como podemos avaliar eles.

Procurando uma definição

Antes de começarmos a falar sobre sistemas distribuídos que tal procurar definir o que são sistemas distribuídos? Vou aceitar a definição do livro do Maarten van Steen e Andrew S. Tanenbaum.

Definição
Um Sistema Distribuído é uma coleção de elementos computacionais autônomos que aparecem para seus usuários como um único sistema coerente.

Dessa definição podemos realçar duas características muito importantes para quando analisamos os sistemas distribuídos. A primeira é que estamos falando de elementos computacionais autônomos, ou seja, estamos falando de uma arquitetura de software/hardware que contém elementos distintos e independentes. Mas também estamos falando sobre usuários que veem esses sistemas como um único e coerente sistema, ou seja, estamos falando de vários uma arquitetura de software que conterá vários elementos autônomos que podem ser compreendidos como um só pela colaboração de seus elementos.

— Se fala o tempo inteiro de Microsserviços... Qual seria a diferença entre um Microsserviço e um Sistema Distribuído?!

A discussão sobre microsserviços é uma discussão paralela aos Sistemas Distribuídos. Para termos essa percepção precisamos olhar para a definição que o Sam Newman traz no primeiro capitulo do livro Criando Microsserviços.

Definição
Microsserviços (microservices) são serviços que podem ser lançados (deploy) de forma independentes e são modelados com base em um domínio de negócios. [...] A arquitetura de microsserviços é um tipo de arquitetura orientada a serviços, com uma definição bem clara sobre como as fronteiras dos serviços devem ser traçadas, e para a qual a possibilidade de implantações independentes é fundamental.

Através dessa definição podemos perceber que a discussão de microsserviços é atrelada a implantação e ao deploy. Nós estamos falando de software em produção de um domínio especifico que evolui e não sobre uma arquitetura estática.

Ouso dizer que toda arquitetura de Microsserviço é uma arquitetura de um sistema distribuído, mas nem todo sistema distribuído tem uma arquitetura em microsserviço. Isso porque um sistema composto por microsserviços pode ser visto como um sistema único, mas um sistema distribuído pode não se adequar a uma arquitetura em microsserviço.

— COMO ASSIM?!?!

Deixa eu exemplificar! A análise de um Sistema Distribuído vai focar em qualidades do software que são comuns a uma gama maior que os sistemas que abrangem o foco dos Microsserviços. Por exemplo, se você olhar o The Pirate Bay vai ver o maior catálogo de Torrents que existe. Torrents são baixados em uma arquitetura Peer-to-Peer que é um Sistema Distribuído mas de forma alguma pode ser encarado como um Microsserviço. O The Pirate Bay pode até ter uma arquitetura de microsserviços, mas ele faz parte de um sistema maior que é uma arquitetura mais complexa com protocolos e algoritmos próprios.

Arquitetura Peer-to-Peer

Quando falamos de Sistemas Distribuídos estamos preocupados em como os softwares vão interagir, quais algoritmos eles irão usar para alcançar um objetivo e qual é o modelo de falha. Já quando falamos em Microsserviços estamos falando de um subconjunto dessa analise mais focado em como o software vai se manter em produção, qual a fronteira de cada elemento da arquitetura, como será o design do sistema, etc.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (0)

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more

AWS GenAI Live!

GenAI LIVE! is a dynamic live-streamed show exploring how AWS and our partners are helping organizations unlock real value with generative AI.

Tune in to the full event

DEV is partnering to bring live events to the community. Join us or dismiss this billboard if you're not interested. ❤️