コンテンツにスキップ

言語の選択

現在の言語: 日本語

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.

Awesome

内容を気に入ったら 📖、👍| ⭐| 👏 でプロジェクトを応援してください。

分散コンピューティングとビッグデータ向けのシステム設計に関する記事、書籍、動画、ツール集です。

面接の準備にも、分散型またはマイクロサービス指向のアプリケーション設計にも、この一覧が役立ちます。

注意:GitHub のスター数は、ここに掲載された各項目の利用状況や人気を示すものではありません。

Awesome-BigData に触発されました

Gabriel Leon de Mattos によって開始

記事

書籍

動画

ツール

ボーナス


  • Designing Distributed Systems: Patterns and Paradigms for Scalable, Reliable Services - [Paid 💵] - 分散システムについて説明し、それがどのようなものかを示すコードを軽くデモする本。

  • Designing Data Intensive Applications - [Paid 💵] - 分散システムで作業するときに使用するさまざまなリソースと、それがどのようにして誕生し、どのような問題を解決することを目的としているのかについて詳しく説明します。

  • The System Design Manual - [Paid 💵] - ネットワークの基礎、分散システムを支える理論、スケーラブルなシステムのアーキテクチャ パターン、障害に対してシステムを強化する安定性パターン、小規模なチームで大規模システムを維持する方法に関する運用上のベスト プラクティスなど、分散システムの中核となる側面をカバーします。

  • Building Microservices - [Free 👍] - マイクロサービスを使用したシステム アーキテクチャの設計について詳しく説明した素晴らしい本で、この点で最も関連性の高いトピックが含まれています。

  • Monolith to Microservices - [Free 👍] - 上記の本と同じ著者によって書かれたこの本では、モノリスからマイクロサービスへの移行について説明します。前の本から始めることをお勧めします。

  • Distributed Systems (3rd Edition) - [Free 👍] - 分散システムの優れた概要と詳細な紹介。中級レベルの読者にお勧めします。

  • Safe by Design - [Free 👍] - コードの正確性を設計によって強化するための素晴らしい本。


分散システムに関する動画集です。

  • Gaurav Sen - System Design Series - システム設計について詳しく知りたい人に適したリソースで、非常にわかりやすい方法でトピックが紹介されています。

  • Tech Dummies - System Design Series - システム設計のもう 1 つの紹介。

  • Mock System Design Interview at Google - 欠陥はあるものの、要件はほぼ満たされているという観点から、システム設計に関する面接がどのようなものになるかを概観します。ここで重要なのは、面接官とのやり取りがどのように行われるかです。

  • Google Preparation Guide - 面接の様子を説明した簡単なビデオ。

  • System Design Interview - YouTube チャンネルでは、システム設計インタビューに特化したコンテンツに焦点を当て、さまざまな問題について詳しく説明しました。

  • Intro to Architecture and System Design Interviews - Jackson Gabbard の YouTube ビデオには、システム設計のインタビューに関する有益な情報が含まれています。

  • System Design Introduction for Interview - Tushar によるシステム設計の紹介。

  • Distributed Systems - これは、Chris Colohan によって作成された分散システムの入門コースです。彼はカーネギー メロン大学で博士号を取得し、その後 Google で分散システムの構築に 10 年間勤務しました。

  • The Easy Way - 分散システムに関するわかりやすいビデオを提供する新進気鋭のチャンネル。

  • System Design by SDE Skills - システム設計面接の準備をしている人にとっては良いリソースです。システム設計の模擬面接や詳細な説明が複数あります。

  • System Design by CodeKarle - もう 1 つの優れた無料リソースは、面接でよく聞かれる質問のリストです。

  • 分散システムでよく使われるツール集

リレーショナルデータベース管理システム

Section titled “リレーショナルデータベース管理システム”
  • MariaDB - MariaDB は MySQL サーバーのフォークです。

  • MySQL - 広く使用されているリレーショナル データベース。

  • PostgresSQL - 人気が高まっているリレーショナルデータベース。

  • SQLite - すべての携帯電話とほとんどのコンピュータに組み込まれている、もう 1 つの広く使用されているデータベースです。

  • Sql Server - 広く使用されているリレーショナル データベース。

キャッシュ(キー・バリュー)

Section titled “キャッシュ(キー・バリュー)”
  • Apache Ignite - [3.3k ⭐] - ACID プロパティを使用したメモリ内キャッシュ。

  • Couchbase - memcached からインスピレーションを受け、レプリケーションや永続化などの機能が追加されています。

  • Oracle Coherence - [126 ⭐] - 高スケーリング、低レイテンシのメモリ内キャッシュ。

  • Memcached - [10.2k ⭐] - 最初のインメモリ キャッシュ データベースの 1 つで、高性能でマルチスレッドです。

  • Redis - [44k ⭐] - 永続ストレージや文字列、リスト、セット、ハッシュ、ストリーム、ビットマップなどのサポートなど、多くの追加機能を備えた、広く使用されているメモリ内キャッシュ データベース。

  • Apple FoundationDB - [10k ⭐] - マルチモデル (単一データベース内の多数のデータ型)、ACID キー/値ストア。簡単に拡張可能で耐障害性があります。

  • Cosmos DB - Microsoft のグローバルに分散されたマルチモデル データベース サービス。スループットとストレージを個別に個別に拡張します。 SQL、MongoDB、Cassandra、テーブル、Gremlin、および Spark API。

  • CouchDB - [4.6k ⭐] - ACID 準拠の NoSQL ドキュメント ストア DB は、データベース ドキュメントの読み取りと更新のための RESTful HTTP API を提供します。

  • MongoDB - 汎用の最も人気のある「NoSQL」データベースの 1 つ。

  • RethinkDB - [23.8k ⭐] - ドキュメントストア DB。

  • ElasticSearch - [49.9k ⭐] - 高速かつスケーラブルな検索エンジンとして広く普及している「NoSQL」データベース。

  • Cosmos DB - Microsoft のグローバルに分散されたマルチモデル データベース サービス。スループットとストレージを個別に個別に拡張します。 SQL、MongoDB、Cassandra、テーブル、Gremlin、および Spark API。

  • Amazon DynamoDB - Key-Value およびドキュメント データベース。パフォーマンスが高く、スケーラブルで安全です。

  • Google Bigtable - 大規模な分析および運用ワークロードに対応する、スケーラブルでパフォーマンスの高い「NoSQL」データベース。

  • Cassandra - Facebook 生まれのプロジェクトは非常に高速で、簡単に拡張可能で、各操作との一貫性を含めるオプションがあります。

  • Scylla - [4.9k ⭐] - Seastar フレームワークを使用した「NoSQL」データ ストア。Cassandra と互換性があります。

  • HBase - [3.6k ⭐] - Google の Bigtable をモデルとしており、Java で書かれています。 Apache Hadoop プロジェクトの一部として開発され、HDFS または Alluxio 上で実行されます。 (Hadoop Relatedを参照)

  • Cosmos DB - Microsoft のグローバルに分散されたマルチモデル データベース サービス。スループットとストレージを個別に個別に拡張します。 SQL、MongoDB、Cassandra、テーブル、Gremlin、および Spark API。

  • Amazon Neptune - 高速かつ信頼性の高いフルマネージドのグラフ データベース サービス。

  • ArangoDB - [10k ⭐] - ドキュメント、キーと値、グラフのための柔軟なデータベース。独自のクエリ言語である AQL を使用します。

  • Neo4j - [7.9k ⭐] - グラフ データベースの優れたサポート、ACID 準拠、柔軟。

  • Cosmos DB - Microsoft のグローバルに分散されたマルチモデル データベース サービス。スループットとストレージを個別に個別に拡張します。 SQL、MongoDB、Cassandra、テーブル、Gremlin、および Spark API。

  • HDFS - Hadoop ファイル システムは、ビッグ データの競合他社の間で広く人気のある選択肢であり、高スループットのアクセスを提供します。

  • Lustre - コンピューター クラスターのファイル システム。

  • CephFS - 統合された分散ストレージ システム。

  • GlusterFS - スケールアウトNASファイルシステム。

  • MooseFS - POSIX準拠の分散ファイルシステム。

  • XtreemFS - フォールトトレラントなファイルシステム。

  • Kubernetes - ベアメタルまたは仮想サーバー上でコンテナーのクラスターをデプロイ、管理し、自動的にスケーリングするための非常に人気のある方法。
  • Apache Samza - Kafka などの複数のソースからのデータをリアルタイムで処理するステートフル アプリケーションを構築します。簡単で安価なマルチサブスクライバー モデルは、バックプレッシャーを排除でき、低遅延で信頼性の高い永続性を備えています。

  • Apache Flink - ストリームとトランスフォーメーションの概念に基づいています。 Maven を使用し、バッチ タスクを有限境界を持つデータ ストリームとして処理します。低遅延、高スループット。

  • Amazon Kinesis Streams - 耐久性があり、スケーラブルな、本物のサービス。データベース イベント ストリーム、Web サイトのクリック ストリーム、金融取引など、数十万のソースから毎秒ギガバイトのデータを収集します。

  • Azure Stream Analytics - ミッションクリティカルなワークロード向けに設計されたリアルタイム分析サービス。

  • Amazon MQ - Amazon のオープンソース メッセージ ブローカー。

  • Apache ActiveMQ - これは、マルチプロトコルの Java ベースのメッセージング サーバーです。

  • Apache Kafka - データ ストリーミングの待ち時間が短く、広く普及しているメッセージ ブローカー。

  • RabbitMQ - 幅広く人気の軽量タイプ erlang で書かれたメッセージ ブローカー。複数のメッセージング プロトコルもサポートします。

  • IronMQ - 非常に高速で拡張性の高いメッセージング ブローカー。 (オープンソースではありません)

  • Apache Pulsar - yahoo によって作成され、スケーラビリティも高く、低遅延、地理レプリケーション、マルチテナシーを備えています。

  • Kestrel - Scala で書かれており、memcached プロトコルを実行します。それはカフカとよく似た働きをします。

  • Azure Service Bus - フルマネージドのエンタープライズ統合メッセージ ブローカー。

  • SeeSaw - [5.1k ⭐] - Google によって使用され、Go で開発された Linux ベースの仮想ロード バランサー サーバー。

  • HAProxy - 広く普及しているオプションで、高可用性、プロキシ、TCP/HTTP ロード バランシングを提供します。 Reddit、Imgur、MaxCDN、GitHub、AirBNB によって使用されます。

  • Zevenet - L3、L4、L7をサポートします。 Docker リポジトリを使用して簡単にインストールします。高度なヘルスチェック監視をサポートします。

  • Neutrino - eBay によって使用され、Scala と Netty で構築されています。ラウンドロビンおよび最小接続アルゴリズムをサポートします。

  • Nginx - ちょっと待って、Nginx は Web サーバーではないでしょうか?はい、オープン ソースは基本レベルのコンテンツ スイッチングとリクエスト ルーティングをサポートしています。 Plus エディションでは、ロード バランシング、WAF、モニタリングなどをサポートします。

  • Openresty - Nginx + Lua、完璧な組み合わせ。

  • F5 - 複数のプロトコル (IP、TCP、FTP、UDP、HTTP) をサポートする、堅牢なハードウェア ロード バランサー オプション。

  • TP-Link - ロードバランサーとして機能する安価な代替手段。

  • Barracuda - 社内サーバーに関しては、負荷分散の最優先の選択肢の 1 つです。組み込まれた最高のセキュリティ対策、包括的なレポート、およびデータ損失防止のためのアウトバウンド トラフィックの監視。

  • Amazon Elastic Load Balancing - Amazon の顧客に人気の選択肢で、ラムダ関数をサポートし、拡張性が高くなります。

  • Google Load Balancing - Google の顧客に人気の選択肢で、自動スケーリング機能が付属しており、非常に高速で、CDN が統合されています。

  • Cloudflare Load Balancing - Cloudflareによるスケーラブルな負荷分散、高速フェイルオーバーとダッシュボードを備えています。

  • DigitalOcean Load Balancing - Digitalocean の顧客であれば、これは良いオプションであり、非常に安価で、地域的に利用可能で、スケーラブルで、他のドロップレット間での展開が簡単です。

  • Azure Load Balancing - Microsoft の Azure 顧客に人気の選択肢。内部および外部トラフィック、IPv6、モニタリング、および標準の負荷分散機能セットをサポートします。

  • Ambari - Hadoop 関連テクノロジーのほとんどを統合し、管理と実行を容易にするダッシュボード。
  • Sqoop - Hadoop とリレーショナル データベースなどの構造化データストアの間でデータを効率的に転送します。

  • Flume - 分散型で可用性が高く、大量のログ データを効率的に収集、集約、移動できます。

  • Apache Kafka - データ ストリーミングの待ち時間が短く、広く普及しているメッセージ ブローカー。

  • Oozie - XML でワークフローを作成し、(他の Hadoop エコシステム アプリケーションからの) ジョブを段階的に実行し、並列実行も可能にします。
  • Hive - Hadoop に保存されたデータを SQL でクエリします。
  • Pig - Hadoop データをクエリするための SQL に似たスクリプティング言語。
  • Tez - Spark と MapReduce と同様の問題を解決します。最も効率的な方法を計算するため、MapReduce よりも効率的です。
  • Map Reduce - MapReduce は、その名前が示すように、データをマップし、結果を削減します。
  • Spark - Tez (および MapReduce) のようなデータを処理するだけでなく、リアルタイムでデータ ストリームを処理したり、ML で回帰分析アルゴリズムを適用したりする強力なデータ処理。
  • Apex - *廃止されたプロジェクト。ストリームとバッチ処理を統合する YARN ネイティブ プラットフォームです。
  • HBase - [3.6k ⭐] - Google の Bigtable をモデルとしており、Java で書かれています。 Apache Hadoop プロジェクトの一部として開発されました。
  • YARN - 「Yet Another Resource Negotiator」は、カーネルのように動作して、クラスター全体のコンピューター リソースを管理します。
  • MESOS - クラスター全体の CPU、メモリ、ストレージ、その他のリソースを管理することで、Linux カーネルのように動作します。
  • Gin - [40.6k ⭐] - Golang を使用した超高速マイクロサービス フレームワーク、高スループット能力。

  • Phoenix - [15.5k ⭐] - 分散処理、容易に拡張可能、チャネルとライブチャットのサポート。このフレームワークは Elixir で書かれており、BEAM と Erlang を使用しており、大規模システムにとって非常に効率的で、高スループットをサポートします。

  • Express.js - [49.6k ⭐] - 多くのシナリオで適切に実行できる高速なnode.js REST API。

  • Rails - [46.2k ⭐] - Ruby で書かれた Rails は、プロトタイプから本番環境まで効率的な方法で迅速な API を提供します。

  • Play Framework - [11.6k ⭐] - Scala/Java で書かれた非常に高速で高スループットのフレームワークで、デフォルトで RESTful です。

  • Flask - [51.6k ⭐] - 迅速なプロトタイピングと生産のための軽量の Python マイクロフレームワーク。

  • FastAPI - [22.7k ⭐] - Flask にインスピレーションを得た軽量の Python マイクロフレームワークですが、Python 非同期を使用したより現代的なものです。

  • Django REST - [18.4k ⭐] - Python で書かれた Django Rest は、強力で柔軟な REST API です。効率性と市場投入までの時間は Rails に似ています。

  • ASP.NET Core MVC - C# または F# の Model-View-Controller デザイン パターンを使用して Web アプリと API を構築するための豊富なフレームワーク。 Web フレームワークの TechEmpower Composite Benchmarks の番号 6。

  • Fastify - [15.4k ⭐] - 最小限のオーバーヘッドと強力なプラグイン アーキテクチャで最高の開発者エクスペリエンスを提供することに重点を置いた Node.js Web フレームワーク。

HagiCode

HagiCode はエージェント型コーディングワークスペースです。豊富で便利な UI インタラクションにより、計画・エージェント実行・プロジェクト作業を始めやすく、進めやすくし、開発をより魅力的な体験にします。

豊富で便利な UI インタラクションで、計画からプロジェクト作業までを分かりやすく進められます。

HagiCode を見るドキュメントを読む
  • スマートOpenSpec ワークフローが意図を、提案・設計・タスクから変更のリリースまで実行可能な道筋にします。
  • 効率的マルチエージェント実行で調査・実装・レビューを並行して進め、複数リポジトリや使い慣れた Agent CLI にも対応します。
  • 興味深い豊富で便利な UI インタラクションにより、計画・エージェント実行・プロジェクト作業を始めやすく、進めやすくします。

Windows 版をダウンロード

Microsoft Store で入手すべてのダウンロード

アイデアを、出荷できるソフトウェアへ。

HagiCode はエージェント型コーディングワークスペースです。OpenSpec ワークフローで変更を計画し、マルチエージェント実行で進め、Hero Scenario で長い作業の進み具合を見える化して、アイデアを出荷できるソフトウェアにします。

スマート
OpenSpec ワークフローが、意図を提案からリリースまでの実行可能な道筋にします。
効率的
マルチエージェント実行で、調査・実装・レビューを並行して進めます。
楽しい
使いやすい UI で、計画・Agent 実行・プロジェクト作業を進めやすくします。

Awesome Site を離れますか?

外部のウェブサイトに移動しようとしています。そのサイトのコンテンツやプライバシーの取り扱いは管理していません。

移動先

ウェブサイトに進む