System Design
Source: https://github.com/madd86/awesome-system-design at
52834671253b
License: CC0-1.0
Read the English original
This edition is an AI-assisted translation.
Se você gostou do conteúdo 📖, ajude a dar visibilidade ao projeto com 👍| ⭐| 👏
Seleção de artigos, livros, vídeos e ferramentas sobre sistemas distribuídos e big data.
Seja para se preparar para uma entrevista ou projetar um aplicativo distribuído/orientado a microsserviços, esta lista ajudará você.
Atenção: o número de estrelas no GitHub não reflete o uso nem a popularidade de todos os itens listados.
Inspirado em Awesome-BigData
Iniciado por Gabriel Leon de Mattos
Conteúdo
Seção intitulada “Conteúdo”- Relational Database
- NoSQL
- Sistemas de arquivos distribuídos
- Gerenciamento de recursos
- Processamento de fluxos
- Broker de mensagens
- Balanceadores de carga
- Ecossistema Hadoop
- Framework REST
Artigos
Seção intitulada “Artigos”Introdução / entrevistas
Seção intitulada “Introdução / entrevistas”-
System Design Primer - [109k ⭐] - Compilação incrível de recursos, incluindo baralhos de flashcards Anki.
-
System Design Interview Questions - Concepts you should know - Uma lista selecionada de tópicos para apresentar o design do sistema.
-
Grokking the System Design Interview - [Paid 💵] - A preparação para Grokking System Design é um dos cursos mais comentados. A melhor coisa é o design dos aplicativos que ele sugere, em vez de explicações sobre o que cada ferramenta deve fazer.
-
System Design in Software Development - Artigo básico sobre os tópicos de design e arquitetura de sistemas.
-
System Design - Recursos introdutórios de preparação para entrevistas.
-
Design Pattern for Distributed Systems - Artigo falando sobre alguns padrões, bem como algumas tecnologias a serem consideradas.
-
Practice system design problems using AI on Codemia.io - Uma ferramenta que permite praticar problemas de design de sistema de forma interativa, como uma entrevista com IA. Há feedback iterativo e avaliação final que avalia seu desempenho
Avançado
Seção intitulada “Avançado”-
Distributed Computing - Artigo da Wikipedia ampliando a visão do design de sistemas distribuídos.
-
Fallacies of Distributed Computing - Artigo da Wikipédia apresentando o tópico das falácias da computação distribuída e seus efeitos.
-
Fallacies of Distributed Computing Explained - Explicação detalhada das falácias mencionadas acima.
-
CAP Theorem - Artigo IBM sobre Teorema CAP, Microsserviços e Bancos de Dados NoSQL.
-
Pattern: Microservice Architecture - Bom artigo falando sobre arquitetura de microsserviços e também suas desvantagens.
-
Taxonomy of Distributed Systems - Palestra de 11 páginas classificando sistemas distribuídos e especificamente por que precisamos deles.
-
Top 10 Secure Coding Practices - Breve artigo falando sobre boas práticas para títulos de código.
-
Scalable Web Architecture and Distributed Systems - Bom artigo sobre sistemas distribuídos, bem como algumas das ferramentas potenciais.
-
Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services - [Paid 💵] - Livro que fala sobre sistemas distribuídos e também demonstra levemente alguns códigos de sua aparência.
-
Designing Data Intensive Applications - [Paid 💵] - Aprofunda-se ao explicar diversos recursos que utilizamos ao trabalhar com sistemas distribuídos, bem como como surgiu e quais problemas pretende resolver.
-
The System Design Manual - [Paid 💵] - Abrange os principais aspectos dos sistemas distribuídos, como: fundamentos de rede, a teoria que sustenta os sistemas distribuídos, padrões arquitetônicos de sistemas escaláveis, padrões de estabilidade que protegem os sistemas contra falhas e melhores práticas operacionais sobre como manter sistemas de grande escala com uma equipe pequena.
-
Building Microservices - [Free 👍] - Livro incrível que fala detalhadamente sobre como projetar arquitetura de sistema com microsserviços e inclui os tópicos mais relevantes a esse respeito.
-
Monolith to Microservices - [Free 👍] - Escrito pelo mesmo autor do livro acima, este livro abordará a migração do Monolith para Microservices, é recomendável começar pelo livro anterior.
-
Distributed Systems (3rd Edition) - [Free 👍] - Ótima visão geral e introdução detalhada aos sistemas distribuídos. Recomendado para leitores de nível intermediário.
-
Safe by Design - [Free 👍] - Ótimo livro sobre como impor a correção do código desde o design.
Uma coleção de vídeos sobre sistemas distribuídos.
Introdução / entrevistas
Seção intitulada “Introdução / entrevistas”-
Gaurav Sen - System Design Series - Bom recurso para quem deseja aprender mais sobre design de sistemas, apresenta o tema de uma forma muito fácil de entender.
-
Tech Dummies - System Design Series - Outra introdução ao design de sistemas.
-
Mock System Design Interview at Google - Visão geral de como seria uma entrevista sobre design de sistema do ponto de vista de um cumprimento falho, mas rigoroso, dos requisitos. O principal aqui é como ocorre a interação com o entrevistador.
-
Google Preparation Guide - Um vídeo rápido explicando como eles entrevistam.
-
System Design Interview - Canal no YouTube focado em conteúdo específico para entrevistas de design de sistemas, com explicações detalhadas de diversos problemas.
-
Intro to Architecture and System Design Interviews - Um vídeo do YouTube com Jackson Gabbard com boas informações sobre entrevistas de design de sistemas.
-
System Design Introduction for Interview - Introdução de Tushar ao System Design.
-
Distributed Systems - Este é um curso introdutório a Sistemas Distribuídos feito por Chris Colohan. Ele obteve doutorado pela Carnegie Mellon e depois passou 10 anos trabalhando no Google construindo sistemas distribuídos.
-
The Easy Way - Canal emergente com vídeos fáceis de entender sobre Sistemas Distribuídos.
-
System Design by SDE Skills - Bom recurso para pessoas que estão se preparando para entrevistas de design de sistema, há várias entrevistas simuladas de design de sistema e aprofundamentos.
-
System Design by CodeKarle - Outro ótimo recurso gratuito, uma lista de perguntas mais frequentes em entrevistas.
Avançado
Seção intitulada “Avançado”- The evolution of Reddit Architecture - Visão geral de como o design do sistema Reddit foi dimensionado.
- 6.824 Distributed Systems by MIT - Curso de pós-graduação em sistemas distribuídos pelo MIT (2020).
- CSE138 Distributed Systems by UCSC - Curso de graduação em sistemas distribuídos pela UCSC (2020).
Ferramentas
Seção intitulada “Ferramentas”- Uma coleção das ferramentas mais usadas em sistemas distribuídos
Sistema de gerenciamento de banco de dados relacional
Seção intitulada “Sistema de gerenciamento de banco de dados relacional”-
MariaDB - MariaDB é um fork do servidor MySQL.
-
MySQL - Banco de dados relacional amplamente utilizado.
-
PostgresSQL - Banco de dados relacional que vem ganhando popularidade.
-
SQLite - Outro banco de dados amplamente utilizado, integrado a todos os telefones celulares e à maioria dos computadores.
-
Sql Server - Banco de dados relacional amplamente utilizado.
Cache (chave-valor)
Seção intitulada “Cache (chave-valor)”-
Apache Ignite - [3.3k ⭐] - Cache de memória com propriedades ACID.
-
Couchbase - Inspirado no memcached, adicionando recursos como replicação e persistência.
-
Oracle Coherence - [126 ⭐] - Cache na memória de alta escalabilidade e baixa latência.
-
Memcached - [10.2k ⭐] - Um dos primeiros bancos de dados com cache na memória, de alto desempenho e multithread.
-
Redis - [44k ⭐] - Banco de dados de cache na memória amplamente utilizado com muitos recursos adicionais, como armazenamento persistente e suporte a strings, listas, conjuntos, hashses, fluxos, bitmaps, etc.
Armazenamento (chave-valor)
Seção intitulada “Armazenamento (chave-valor)”-
Apple FoundationDB - [10k ⭐] - Multimodelo (muitos tipos de dados em um único banco de dados), armazenamento de chave-valor ACID. Facilmente escalável e tolerante a falhas.
-
Cosmos DB - Serviço de banco de dados multimodelo distribuído globalmente da Microsoft. Dimensione a taxa de transferência e o armazenamento de maneira oriental e independente. APIs SQL, MongoDB, Cassandra, Tabelas, Gremlin e Spark.
Armazenamento de documentos
Seção intitulada “Armazenamento de documentos”-
CouchDB - [4.6k ⭐] - Banco de dados de armazenamento de documentos NoSQL compatível com ACID, fornece uma API RESTful HTTP para leitura e atualização de documentos de banco de dados.
-
MongoDB - Um dos bancos de dados ‘NoSQL’ mais populares para uso geral.
-
RethinkDB - [23.8k ⭐] - Banco de dados de armazenamento de documentos.
-
ElasticSearch - [49.9k ⭐] - Banco de dados ‘NoSQL’ amplamente popular para mecanismos de pesquisa rápidos e escalonáveis.
-
Cosmos DB - Serviço de banco de dados multimodelo distribuído globalmente da Microsoft. Dimensione a taxa de transferência e o armazenamento de maneira oriental e independente. APIs SQL, MongoDB, Cassandra, Tabelas, Gremlin e Spark.
Armazenamento de colunas largas
Seção intitulada “Armazenamento de colunas largas”-
Amazon DynamoDB - Banco de dados de valores-chave e documentos, de alto desempenho, escalável e seguro.
-
Google Bigtable - Banco de dados ‘NoSQL’ escalável e de alto desempenho para grandes cargas de trabalho analíticas e operacionais.
-
Cassandra - Projeto nascido no Facebook muito rápido, facilmente escalável, com opção de incluir consistência em cada operação.
-
Scylla - [4.9k ⭐] - Armazenamento de dados ‘NoSQL’ usando framework seastar, compatível com Cassandra.
-
HBase - [3.6k ⭐] - Modelado a partir do Bigtable do Google e escrito em Java. Desenvolvido como parte do projeto Apache Hadoop e executado em HDFS ou Alluxio. (Ver Hadoop Related)
-
Cosmos DB - Serviço de banco de dados multimodelo distribuído globalmente da Microsoft. Dimensione a taxa de transferência e o armazenamento de maneira oriental e independente. APIs SQL, MongoDB, Cassandra, Tabelas, Gremlin e Spark.
-
Amazon Neptune - Serviço de banco de dados gráfico rápido, confiável e totalmente gerenciado.
-
ArangoDB - [10k ⭐] - Banco de dados flexível para documentos, valores-chave, gráficos. Usa sua própria linguagem de consulta, AQL.
-
Neo4j - [7.9k ⭐] - Bom suporte para um banco de dados gráfico, compatível com ACID e flexível.
-
Cosmos DB - Serviço de banco de dados multimodelo distribuído globalmente da Microsoft. Dimensione a taxa de transferência e o armazenamento de maneira oriental e independente. APIs SQL, MongoDB, Cassandra, Tabelas, Gremlin e Spark.
Sistemas de arquivos distribuídos
Seção intitulada “Sistemas de arquivos distribuídos”-
HDFS - O Hadoop File System é uma escolha amplamente popular entre seus concorrentes de big data, fornecendo acesso de alto rendimento.
-
Lustre - Sistema de arquivos para clusters de computadores.
-
CephFS - Sistema de armazenamento unificado e distribuído.
-
GlusterFS - Sistema de arquivos NAS expansível.
-
MooseFS - Sistema de arquivos distribuído compatível com POSIX.
-
XtreemFS - Sistema de arquivos tolerante a falhas.
Gerenciamento de recursos
Seção intitulada “Gerenciamento de recursos”- Kubernetes - Maneira altamente popular de implantar, gerenciar e dimensionar automaticamente um cluster de contêineres em servidores bare-metal ou virtuais.
Processamento de fluxos
Seção intitulada “Processamento de fluxos”-
Apache Samza - Crie aplicativos com estado que processam dados em tempo real de diversas fontes, incluindo Kafka. Modelo multiassinante fácil e barato, pode eliminar contrapressão e tem persistência confiável com baixa latência.
-
Apache Flink - Baseado no conceito de fluxos e transformações. Usa maven, lida com tarefas em lote como fluxos de dados com limites finitos. Baixa latência, alto rendimento.
-
Amazon Kinesis Streams - Serviço durável, escalável e em tempo real. Coleta gigabytes de dados por segundo de centenas de milhares de fontes, incluindo fluxos de eventos de banco de dados, fluxos de cliques de sites, transações financeiras, etc.
-
Azure Stream Analytics - Serviço de análise em tempo real projetado para cargas de trabalho de missão crítica.
Broker de mensagens
Seção intitulada “Broker de mensagens”-
Amazon MQ - Corretor de mensagens de código aberto da Amazon.
-
Apache ActiveMQ - É um servidor de mensagens multiprotocolo baseado em Java.
-
Apache Kafka - Corretor de mensagens amplamente popular com baixa latência para streaming de dados.
-
RabbitMQ - Leve amplamente popular corretor de mensagens escrito em erlang que também oferece suporte a vários protocolos de mensagens.
-
IronMQ - Corretor de mensagens muito rápido e altamente escalável. (não é de código aberto)
-
Apache Pulsar - Criado pelo Google, também altamente escalonável, baixa latência, replicação geográfica e multitenacidade.
-
Kestrel - Escrito em Scala e fala o protocolo memcached. Funciona como Kafka.
-
Azure Service Bus - Um corretor de mensagens de integração empresarial totalmente gerenciado.
Balanceadores de carga
Seção intitulada “Balanceadores de carga”Software de código aberto
Seção intitulada “Software de código aberto”-
SeeSaw - [5.1k ⭐] - Utilizado pelo Google, desenvolvido em Go, servidor balanceador de carga virtual baseado em Linux.
-
HAProxy - Opção amplamente popular, fornece alta disponibilidade, proxy e balanceamento de carga TCP/HTTP. Usado por Reddit, Imgur, MaxCDN, GitHub, AirBNB.
-
Zevenet - Suporta L3, L4 e L7. Fácil instalação com um repositório docker. Suporta monitoramento avançado de verificação de integridade.
-
Neutrino - Usado pelo eBay, desenvolvido com Scala e Netty. Suporta algoritmos round-robin e de menor conexão.
-
Nginx - Espere, o Nginx não é um servidor web? Sim, o código aberto oferece suporte ao nível básico de troca de conteúdo e roteamento de solicitações. A edição Plus suporta balanceamento de carga, WAF, monitoramento, etc.
-
Openresty - Nginx + Lua, combinação perfeita.
Hardware
Seção intitulada “Hardware”-
F5 - Opção robusta de balanceador de carga de hardware, com suporte a vários protocolos (IP, TCP, FTP, UDP, HTTP).
-
TP-Link - Alternativa mais barata que funciona como balanceador de carga.
-
Barracuda - Uma das principais opções para balanceamento de carga quando se trata de servidores internos. Principais medidas de segurança integradas, relatórios abrangentes e monitoramento do tráfego de saída para prevenção de perda de dados.
-
Amazon Elastic Load Balancing - Escolha popular para clientes Amazon, suporta funções lambda, altamente escaláveis.
-
Google Load Balancing - Escolha popular para clientes do Google, vem com recurso de escalonamento automático, muito rápido e possui CDN integrado.
-
Cloudflare Load Balancing - Balanceamento de carga escalonável da Cloudflare, recurso de failover rápido e um painel.
-
DigitalOcean Load Balancing - Se você é cliente digitalocean, esta é uma boa opção, muito barata, disponibilidade regional, escalável, fácil de implantar entre seus outros droplets.
-
Azure Load Balancing - Escolha popular para clientes do Azure da Microsoft. Suporta tráfego interno e externo, ipv6, monitoramento e o conjunto padrão de recursos de balanceamento de carga.
Ecossistema Hadoop
Seção intitulada “Ecossistema Hadoop”
- Ambari - Painel que integra a maioria das tecnologias relacionadas ao hadoop para fácil gerenciamento e execuções.
Ingestão de dados
Seção intitulada “Ingestão de dados”-
Sqoop - Transfira dados com eficiência entre o Hadoop e armazenamentos de dados estruturados, como bancos de dados relacionais.
-
Flume - Distribuído, altamente disponível e eficiente na coleta, agregação e movimentação de grandes quantidades de dados de log.
-
Apache Kafka - Corretor de mensagens amplamente popular com baixa latência para streaming de dados.
Agendador de workflows
Seção intitulada “Agendador de workflows”- Oozie - Criar fluxos de trabalho em xml para executar trabalhos (de outros aplicativos do ecossistema hadoop) em etapas, também permite a execução paralela.
Consultas
Seção intitulada “Consultas”- Hive - Consulte dados armazenados no hadoop em SQL.
- Pig - Linguagem de script semelhante a SQL para consultar dados hadoop.
Processamento
Seção intitulada “Processamento”- Tez - Resolve um problema semelhante ao Spark e MapReduce, é mais eficiente que MapReduce porque calcula a maneira mais eficiente de fazer isso.
- Map Reduce - MapReduce, como o nome indica, mapeia dados e reduz os resultados.
- Spark - Processamento de dados poderoso não apenas para processar dados como Tez (e MapReduce), mas também para processar fluxos de dados em tempo real, aplicar algoritmos de análise de regressão em ML e muito mais.
- Apex - *Projeto descontinuado, é uma plataforma nativa do YARN que unifica o processamento em fluxo e em lote.
Banco de dados
Seção intitulada “Banco de dados”- HBase - [3.6k ⭐] - Modelado a partir do Bigtable do Google e escrito em Java. Desenvolvido como parte do projeto Apache Hadoop.
Gerenciamento de recursos
Seção intitulada “Gerenciamento de recursos”- YARN - ‘Yet Another Resource Negotiator’ funciona como um kernel para gerenciar recursos do computador nos clusters.
- MESOS - Funciona como um kernel Linux gerenciando CPU, memória, armazenamento e outros recursos em todo o cluster.
Framework REST
Seção intitulada “Framework REST”-
Gin - [40.6k ⭐] - Estrutura de microsserviço extremamente rápida usando Golang e alta capacidade de rendimento.
-
Phoenix - [15.5k ⭐] - Processamento distribuído, facilmente escalável, suporte para canais e chat ao vivo. Este framework - escrito em Elixir, utiliza BEAM e Erlang, muito eficiente para sistemas de grande escala e suporta alto rendimento.
-
Express.js - [49.6k ⭐] - API de descanso node.js rápida que pode funcionar bem em muitos cenários.
-
Rails - [46.2k ⭐] - Escrito em Ruby, Rails oferece APIs rápidas do protótipo à produção de maneira eficiente.
-
Play Framework - [11.6k ⭐] - Estrutura muito rápida e de alto rendimento escrita em Scala/Java que é RESTful por padrão.
-
Flask - [51.6k ⭐] - Um microframework Python leve para prototipagem e produção rápidas.
-
FastAPI - [22.7k ⭐] - Um microframework Python leve inspirado no Flask, mas mais moderno, usando Python assíncrono.
-
Django REST - [18.4k ⭐] - Escrito em Python, Django Rest é uma API REST poderosa e flexível. A eficiência e o tempo de lançamento no mercado se assemelham ao Rails.
-
ASP.NET Core MVC - Uma estrutura avançada para criar aplicativos Web e APIs usando o padrão de design Model-View-Controller em C# ou F#. Número 6 em TechEmpower Composite Benchmarks para estruturas web.
-
Fastify - [15.4k ⭐] - Uma estrutura web Node.js altamente focada em fornecer a melhor experiência do desenvolvedor com o mínimo de sobrecarga e uma arquitetura de plugin poderosa.
HagiCode
O HagiCode é um ambiente de programação com agentes. Interações de interface ricas e práticas tornam o planejamento, a execução de agentes e o trabalho em projetos mais acessíveis e fáceis de acompanhar, criando uma experiência de desenvolvimento envolvente.
Uma experiência de desenvolvimento envolvente, com interações de interface ricas e práticas.
- InteligenteOs fluxos de trabalho do OpenSpec transformam a intenção em um caminho executável, da proposta ao design, às tarefas e à entrega.
- EficienteA execução multiagente mantém pesquisa, implementação e revisão em andamento em paralelo, em vários repositórios e com os Agent CLI que você já usa.
- InteressanteInterações de interface ricas e práticas tornam o planejamento, a execução de agentes e o trabalho em projetos mais acessíveis e fáceis de acompanhar.
Baixar para Windows
Compartilhar o HagiCode
Transforme ideias em software entregue.
O HagiCode é um ambiente de programação com agentes: os fluxos de trabalho do OpenSpec planejam a mudança, a execução multiagente a realiza e o Hero Scenario torna o longo percurso visível, para transformar ideias em software entregue.
- Inteligente
- Os fluxos do OpenSpec transformam a intenção em um caminho da proposta à entrega.
- Eficiente
- A execução multiagente conduz pesquisa, implementação e revisão em paralelo.
- Divertido
- As interações de interface facilitam o planejamento, a execução de agentes e os projetos.
© 2026 HagiCode | Powered By hagilight-starlight@0.21.0 | Branch: main | Commit: 745b50b | Built:

