このページの内容

Awesome Microservices

Microservicesを扱う資料や関連プロジェクトをまとめたAwesomeリストです。

プラットフォーム

  • 1Backend - AIネイティブなマイクロサービスプラットフォーム
  • Jolie - マイクロサービス志向のオープンソースプログラミング言語
  • OpenWhisk - イベントに応じてスケールを問わず関数を実行するサーバレス、オープンソースのクラウドプラットフォーム
  • Pulumi - クラウドネイティブインフラストラクチャのためのSDK。好きな言語でアプリとインフラの更新をプレビューし、管理し、常にクラウドにデプロイ可能(YAML不要)
  • Triton - 1つ以上のデータセンターで動作する次世代のコンテナベースのサービス指向インフラを提供するオープンソースクラウド管理プラットフォーム

フレームワーク/ランタイム

  • Akka - JVM上で高並列性・分散性・耐障害性を備えたメッセージ駆動アプリケーションを構築するためのツールキットとランタイム
  • Axon (c) - JVM上で実行可能なDDD、CQRS、イベントソースアプリケーションの開発と実行を容易にする、端到端の開発およびインフラプラットフォーム
  • Ballerina - クラウドネイティブプログラミング言語
  • Bun - 高速なすべての機能を備えたJavaScriptランタイム
  • Dapr - 任意のプログラミング言語で高パフォーマンスなマイクロサービスを書くためのオープンソースランタイム
  • Deno - JavaScript、TypeScript、WebAssemblyランタイムで安全なデフォルトと優れた開発体験を提供
  • Eclipse Microprofile - マイクロサービスアーキテクチャにおけるエンタープライズJavaの最適化を進めるためのオープンフォーラム。複数の実装を革新し、共通の関心領域で協力し、標準化を目指す。
  • Erlang/OTP - 高可用性を要する大规模スケーラブルソフトリアルタイムシステムを構築するためのプログラミング言語
  • Finagle - JVM上で高並列性を実現する拡張可能なRPCシステム
  • Gleam - 型安全かつスケーラブルなシステムを構築するための親しみやすい言語
  • GraalVM - アプリケーションパフォーマンスと効率性に大きな改善をもたらすハイパフォーマンスランタイム。マイクロサービスに最適。
  • Helidon - Nettyで駆動された高速ウェブコアを備えたマイクロサービス開発用のJavaライブラリのコレクション
  • Ice - C++、C#、Java、JavaScript、Pythonなど、多数の言語に対応する包括的なRPCフレームワーク
  • Light-4j - 高スループット、低遅延、小さなメモリフットプリント、そして生産性の高いマイクロサービスプラットフォーム
  • Micronaut - モジュール化されやすくテストしやすいマイクロサービスアプリケーションを構築するための現代的な、JVMベースのフルスタックフレームワーク
  • Moleculer - Node.js、Java、GoおよびRuby向けの高速かつ強力なマイクロサービスフレームワーク
  • Open Liberty - クラウドネイティブJavaマイクロサービスを高速かつ効率的に構築するための軽量オープンフレームワーク
  • Pears - ペア・トゥ・ペアのランタイム、開発およびデプロイ
  • SmallRye - クラウド開発向けに設計されたAPIおよび実装、Eclipse MicroProfileを含む
  • Spin - WebAssemblyを活用した、高速で安全かつ組み立て可能なクラウドマイクロサービスを構築・実行するためのオープンソースフレームワーク
  • ScaleCube - JVM上で反応性マイクロサービスを構築するためのツールキット:遅延が少なく、高スループット、スケーラブルかつ耐障害
  • Vert.X - JVM上で反応性アプリケーションを構築するためのツールキット
  • Vert.X Toolbox - Vert.xのコンポーネントを用いて反応性マイクロサービスアプリケーションを構築するためのセット
  • Wangle - 一貫性があり、モジュラーかつ組み立て可能なサービスを構築するための、共通のクライアント/サーバー抽象化を提供するフレームワーク

サービスツールキット

多言語

  • GRPC - モバイルおよびHTTP/2を最優先にした、高性能かつオープンソースの一般RPCフレームワーク。C、C++、Java、Go、Node.js、Python、Ruby、Objective-C、PHPおよびC#でのライブラリを提供

C

  • Lwan - 高性能かつスケーラブルなウェブサーバー
  • uSockets - 異常処理アプリケーション向けに、跨プラットフォームで極めて小さいイベント、ネットワークおよび暗号化ツール

C++

  • Cap’n Proto RPC - Cap’n ProtoのC++ RPC実装
  • C++ Micro Services - OSGiに類するC++の動的モジュールシステムおよびサービスレジストリ
  • Enduro/X - GNU/Linux向けのXATMIベースのサービスフレームワーク
  • Pistache - C++で書かれた高性能RESTツールキット
  • Poco - ネットワークベースのアプリケーションおよびサーバーを構築するためのC++クラスライブラリ
  • Sogou Workflow - エンタープライズレベルのプログラミングエンジンで、ほとんどのバックエンド開発要件を満たす
  • uWebSockets - 最も厳しい要件を満たすアプリケーション向けにシンプルで安全かつ標準適合のウェブサーバー

C#

  • Awesome Microservices .NET Core - .NET Coreにおけるマイクロサービス向けの素晴らしいトレーニングシリーズ、記事、動画、書籍、コース、サンプルプロジェクト、ツールのコレクション :star:

D

  • Vibe.d - 非同期I/Oで、あなたの仕事に邪魔にならない、D言語で書かれたもの

Erlang VM

Elixir

  • Phoenix - HTML5アプリケーション、APIバックエンド、分散システムを構築するためのフレームワーク
  • Plug - ウェブアプリケーション間の可合成モジュールをつなぐための仕様と便利な機能

Erlang

  • Cowboy - Erlangで書かれた小さな、高速、モジュラリティの高いHTTPサーバー
  • Mochiweb - Erlangで書かれた軽量HTTPサーバーを構築するためのライブラリ

Go

  • Chi - GoのHTTPサービスを構築するための軽量、自然で可合成なルーター
  • Echo - Go向けの高速かつシンプルなHTTPサーバーフレームワーク。他のものと比べて最大10倍速い
  • Fiber - FasthttpというGoの最も高速なHTTPエンジンに基づいた、Expressをインスピレーションとしたウェブフレームワーク。ゼロメモリ割り当てとパフォーマンスを意識して、開発を容易に設計。
  • Gin - GinはGo(Golang)で書かれたHTTPウェブフレームワーク。MartiniのようなAPIを備え、パフォーマンスが非常に高く、最大40倍速い。
  • Goa - Goで設計されたHTTPマイクロサービス。
  • GoFr - スケーラビリティと堅牢性を強調した、意見をもつマイクロサービス開発フレーム及。マイクロサービス開発を簡易化するように設計。
  • Go Chassis - Goでマイクロサービスの迅速開発を行うためのフレームワーク。いくつかのクラウドエコシステムとの統合が容易。
  • Go-micro - 分散システム開発用のフレームワーク。
  • Go-zero - ウェブとRPCの分散システム開発用のフレームワーク。
  • Gorilla - Goプログラミング言語向けのウェブツールキット。
  • Iris - Go向けの高速、シンプルで効率的なマイクロウェブフレームワーク。
  • Lura - 中間ソフトウェアを用いた、極めて高速なAPIゲートウェイを構築するためのフレームワーク。
  • RPCX - アリババのDubboや微博のMotanに似たNET/RPCに基づいた分散RPCサービスフレームワーク。

Haskell

  • Scotty - RubyのSinatraをインスピレーションとした、WAIとWarpを用いたマイクロウェブフレームワーク。
  • Servant - 型レベルのウェブDSL。
  • Yesod - ハスケルのRESTフルウェブフレームワーク

Java VM

Clojure

  • Compojure - リング/クロージャー向けの簡潔なルーティングライブラリ
  • Duct - クロージャー向けのサーバーサイドフレームワーク
  • System - スチュアート・シエラのcomponentライブラリに基づき構築された、事前準備済みのコンポーネントを提供するフレームワーク
  • Tesla - オト・デのクロージャーマイクロサービスの一部を構成する共通の基盤

Java

  • ActiveJ - 複雑な高負荷分散アプリケーションおよびメモリキャッシュのようなソリューション向けの軽量かつ高速なライブラリ
  • Airlift - JavaでRESTサービスを構築するためのフレームワーク
  • Armeria - Java 8、Netty、ThriftおよびgRPCに基づくオープンソースの非同期HTTP/2 RPC/RESTクライアント・サーバーライブラリ
  • Disruptor - 高パフォーマンスのスレッド間メッセージングライブラリ
  • Dropwizard - オペレーションに最適化された、高パフォーマンスなRESTフルウェブサービスを構築するためのJavaフレームワーク
  • Dubbo - アリババがオープンソースにした、高性能なJavaベースのRPCフレームワーク
  • Conjure - FeignまたはRetrofitをクライアント、Dropwizard/JerseyとJAX-RSサービス定義をサーバーとして使うことで、RESTish/RPCサーバーおよびクライアントを定義・作成するための意見を反映したライブラリセット
  • Jersey - JavaでのRESTフルサービス。JAX-RSのリファレンス実装
  • Quarkus - Kubernetesにネイティブに対応したJavaスタック。OpenJDK HotSpotおよびGraalVMに最適化され、優れたJavaライブラリと標準から構築されたもの
  • Ratpack - 高速かつ効率的で、進化しやすく、テストも可能なHTTPアプリケーションを支援するJavaライブラリセット。Groovy言語への特別なサポートを提供。
  • Spring Boot - スタンドアローンかつプロダクションレベルのSpringベースアプリケーションの作成を容易にする。

Kotlin

  • Http4k - 純粋なKotlinで書かれた軽量だが完全機能のHTTPツールキット。HTTPサービスの提供と消費を関数型かつ一貫性のある方法で可能にする。
  • Ktor - Kotlinプログラミング言語を用いて接続システムにおける非同期サーバーおよびクライアントを構築するためのフレームワーク

Scala

  • Finatra - Twitter-ServerおよびFinagleに基づく、高速かつテスト可能なScala HTTPサービス
  • Http4s - Scalaの最小で自然なHTTPインターフェース
  • Play - JavaおよびScala向けの高速ウェブフレームワーク

Node.js

  • Actionhero - マルチトランスポートのNode.js APIサーバーでクラスタ機能と遅延タスクを統合
  • Express - Node.js向けの高速で意見がなく、ミニマリズムを採用したウェブフレームワーク
  • Fastify - Fastify:Node.js向けの高速かつ低負荷のウェブフレームワーク
  • FeathersJS - 現代アプリケーション向けのオープンソースRESTおよびリアルタイムAPIレイヤー
  • Hono - JavaScriptランタイムのいずれにも対応する、小型でシンプルで超高速なウェブフレームワーク。エッジ上で動作する。
  • Koa - Node.js向けの次世代ウェブフレームワーク
  • Loopback - APIを作成し、バックエンドデータソースに簡単に接続できるNode.jsフレームワーク
  • NestJS - 効率的でスケーラブルなサーバーサイドアプリケーションを構築するためのNode.jsフレームワーク。組み込みのマイクロサービス対応を提供。
  • Seneca - Node.js向けのマイクロサービスツールキット
  • Serverless - AWS LambdaおよびAPI Gateway(以前はJAWS)上で実行されるウェブ、モバイル、IoTアプリケーションの開発と維持。
  • tRPC - 端末から端末までタイプセーフなAPIを提供。

Perl

  • Cro - Perl 6を使用して反応型分散システムを作成するためのライブラリ。
  • Mojolicious - Perl向けの次世代ウェブフレームワーク

PHP

  • API Platform - Symfony上に構築されたAPIファーストのウェブフレームワーク。JSON-LD、Schema.orgおよびHydraのサポートを提供。
  • Ecotone - DDD、CQRSおよびイベントソースのアーキテクチャ原則に基づいたフレームワーク。スケーラブルで拡張可能なアプリケーションの構築ブロックを提供。
  • Hyperf - Hyperfは、Swoole 4.5+に基づく、非常にパフォーマンスが高く柔軟なPHP CLIフレームワーク。最先端のコルーチンサーバーと、多数の実証済みコンポーネントによって駆動。
  • Lumen - 驚異的な速度のマイクロフレームワーク。
  • Slim - シンプルで強力なウェブアプリケーションおよびAPIを迅速に書くことができるマイクロフレームワーク。
  • Spiral - 長期間実行されるアプリケーション向けに設計されたフレームワーク。RoadRunnerとの統合を提供。TemporalワークフローエンジンおよびCentrifugoウェブソケットサーバーとの統合を提供。マイクロサービスアーキテクチャに特に効果的であり、REST APIおよびgRPCサービスに対して強固なサポートを提供。
  • Swoft - PHPのマイクロサービスコルーチンフレームワーク。高性能なウェブシステム、API、ミドルウェア、基本サービスの構築に適しています。
  • Symfony - Symfonyコンポーネントに基づくマイクロフレームワーク。

Python

  • Aiohttp - asyncio用のHTTPクライアント/サーバー。
  • Bottle - Python用の高速でシンプルかつ軽量のWSGIマイクロウェブフレームワーク。
  • Connexion - Flask上で構築されたPython用のSwagger/OpenAPIフレームワーク。自動エンドポイント検証とOAuth2サポートを備えています。
  • Falcon - ベアメタルのPythonウェブAPIフレームワーク。非常に高速なアプリバックエンドやマイクロサービスの構築に適しています。
  • FastAPI - Python 3.6以降をベースに、標準Python型ヒントを使用した現代的で高速(高性能)なウェブフレームワーク。
  • Flask - WerkzeugとJinja 2に基づくマイクロサービス用のPythonフレームワーク。
  • Nameko - マイクロサービスを構築するためのPythonフレームワーク。
  • Sanic - Sanicは、Python 3.5以降向けのFlaskに似たウェブサーバーで、高速性を実現するために設計されています。
  • Tornado - ウェブフレームワークおよび非同期ネットワークライブラリ。
  • Twisted - イベント駆動型ネットワークプログラミングエンジン。
  • Web.py - Python用のミニマリズムウェブフレームドーム。

Ruby

  • Grape - REST風APIを作成するための意見を反映したフレームワーク。
  • Hanami - Ruby用の現代的なウェブフレームワーク。
  • Praxis - APIの設計および実装に用いるフレームワーク。
  • Scorched - Ruby用の軽量ウェブフレームワーク。
  • Sinatra - Sinatraは、Rubyでウェブアプリケーションを最小限の労力で迅速に作成するためのDSL。

Rust

  • Are we web yet? :star: - Rustにおけるウェブプログラミングの現在の状態の要約。
  • Actix - Rustをベースにした強力で実用的かつ極めて高速なウェブフレームワーク。
  • Tarpc - Rust向けのRPCフレームワークで、使いやすさを重視。
  • Tokio - ネットワークアプリケーションの開発に用いる非同期ランタイム。
  • Tower - 堅牢なネットワーキングクライアントおよびサーバーを構築するための、モジュール化・再利用可能なコンポーネントを備えたライブラリ。
  • Wtx - HTTP/2クライアント/サーバーフレームワーク。

フロントエンド/UI

  • Awesome Micro Frontends -0000 - ミクロフロントエンドに関するリソースを厳選したリスト。 :star:
  • Electrode - React/Node.jsアプリケーション向けのユニバーサルプラットフォーム。
  • Micro Frontends - フロントエンド開発におけるマイクロサービスの概念を拡張。
  • MiniApp White Paper - ミニアプリ標準化に関する白書。

機能

APIゲートウェイ/エッジサービス

現時点ではデータプレーンとコントロールプレーンのコンポーネントを分類していません。

  • Ambassador (c) - Envoyを基盤としたKubernetes向けのマイクロサービスAPIゲートウェイ。
  • APIcast - APIcastはNGINX上に構築されたAPIゲートウェイであり、Red Hat 3scale APIマネジメントプラットフォームの一部である。
  • Bunker Web - Webアプリケーションホスティングおよびリバースプロキシがデフォルトで安全。
  • Caddy - 拡張可能なHTTP/2ウェブサーバーでHTTPSが自動的に有効。
  • Camel - ルーティングおよびメディエーションルールを、JavaベースのフラットAPI、SpringまたはBlueprint XML構成ファイル、Scala DSLなど、さまざまなドメイン特定言語で定義できるようにする。
  • Envoy - Lyftの開発者たちが開発したオープンソースのエッジおよびサービスプロキシ。
  • HAProxy - 信頼性と高性能を備えたTCP/HTTP負荷分散サーバー。
  • Istio - マイクロサービスを接続・管理・セキュリティ化するためのオープンプラットフォーム。
  • Keepalived - LinuxシステムおよびLinuxベースのインフラに向けた負荷分散および高可用性を提供するシンプルかつ堅牢な機能。
  • Kong - APIの管理に向けたオープンソース管理層。
  • KrakenD - オープンソースの超高性能APIゲートウェイ。
  • Kuma - サービスミッシュとマイクロサービス向けのプラットフォームに依存しないオープンソースコントロールプレーン。
  • Linkerd - クラウドネイティブアプリ向けの頑健なサービスメッシュ
  • Neutrino - 拡張可能なソフトウェアロードバランサ
  • OpenResty - Nginxに基づく高速なウェブアプリケーションサーバー
  • Open Service Mesh - 軽量かつ拡張可能なクラウドネイティブサービスメッシュ
  • Otoroshi - 現代的なHTTPリバースプロキシと軽量API管理
  • Pingora - 高速で信頼性高く進化可能なネットワークサービスを構築するためのライブラリ
  • Skipper - サービス論理とルーティングを分離するためのHTTPルーター
  • Spring Cloud Gateway - Spring MVCに基づくAPIゲートウェイ。APIへのルーティングをシンプルかつ効果的に提供することを目的としている。
  • Tengine - Nginxにいくつかの高度な機能を追加したディストリビューション
  • Træfɪk - マイクロサービスを簡単にデプロイできる現代的なHTTPリバースプロキシおよびロードバランサ
  • Traffic Server - クラウドサービス向けの高性能な基本コンポーネント
  • Tyk - オープンソースで高速かつスケーラブルなAPIゲートウェイ、ポータルおよびAPI管理プラットフォーム
  • Vulcand - Etcdに基づくプログラムによるロードバランサ
  • Zuul - エッジサービスで、動的ルーティング、監視、耐性、セキュリティなどを提供

構成とサービス発見

  • Central Dogma - Git、ZooKeeperおよびHTTP/2に基づくオープンソースの高可用性かつバージョン管理されたサービス設定リポジトリ
  • Consul - サービス発見と設定を簡単に実現。分散型、高可用性、データセンター認識対応。
  • Etcd - 共有設定およびサービス発見用の高可用性キーバリューストア
  • Eureka - AWSクラウドで主に使用されるRESTベースのサービス。中間サーバーのロードバランシングおよびフェイルオーバーのためのサービスの位置を特定する。
  • Microconfig - マイクロサービスの設定管理を現代的かつシンプルに実現。
  • Nacos - 使いやすい動的サービス発見、設定およびサービス管理プラット度
  • SkyDNS - etcdに基づいたサービスの発表および発見を実現する分散サービス。利用するDNSクエリにより、利用可能なサービスを発見する。
  • Spring Cloud Config - 分散システムにおける外部化された設定のサーバーおよびクライアント側のサポートを提供する。
  • ZooKeeper - 高信頼性の分散協調を実現するオープンソースサーバー。

ワークフローオーケストレーション

  • AWS Step Functions (c) - 分散アプリケーションおよびマイクロサービスのコンポーネントを視覚的なワークフローで調整する。
  • Cadence - 障害に無関心な状態保持コードプラットフォーム。
  • Conductor - マイクロサービスのオーケストレーションエンジン。
  • Inngest - 信頼性の高いバックグラウンド論理(バックグラウンドジョブから複雑なワークフローまで)を提供するデューラブルな関数。
  • Kestra - イベント駆動、言語に依存しないオープンソースマイクロサービスのオーケストレーションおよびスケジューリングプラットフォーム。
  • Temporal - どんなスケールでもミッションクリティカルなコードを実行できるオープンソースマイクロサービスオーケストレーションプラットフォーム。
  • Zeebe - マイクロサービス間のビジネスプロセスを定義・オーケストレーション・監視する。

弾力性

  • Hazelcast - オープンソースのメモリ内データグリッド。サーバー、クラスタ、地理的領域にデータと計算を分散させ、非常に大きなデータセットや高いデータインジェスト速度を管理できる。成熟した技術。
  • Helix - ノードのクラスタにホストされたパーティション化、レプリケーション、分散リソースの自動管理を行う汎用クラスタ管理フレームワーク。
  • Ignite - 高パフォーマンスで統合された、分散型のメモリプラットフォーム。リアルタイムで大規模データセットの計算および取引を行う。従来のディスクベースまたはフラッシュ技術と比べて、何十倍もの速度で実行可能。
  • Libp2p - ペア・ト・ペアネットワークアプリケーションの構築に用いるフレームワークおよびプロトコルのセット。
  • Mesos - CPU、メモリ、ストレージおよびその他のコンピュートリソースをマシン(物理的または仮想的)から抽象化し、障害対応かつエラスティックな分散システムの構築と実行を容易に可能にする。
  • Nomad - データセンターを意識した、分散型かつ高可用性のスケジューラ。
  • Redisson - Redisサーバー上に構築された分散型およびスケーラブルなJavaデータ構造。
  • Serf - クラスタメンバーの分散解決、障害検知およびオーケストレーションを実現する分散型ソリューション。
  • Valkey - 元々オープンソースであったRedisプロジェクトの開発を再開するための新しいプロジェクト。
  • Zenoh - データの移動、データの静的状態、計算を統合するプブ/サブ/クエリプロトコル。従来のプブ/サブと、地理分散型ストレージ、クエリ、計算を効率的に統合する。

ジョブスケジューラー/ワークロード自動化

  • Celery - 分散メッセージ伝達に基づく非同期タスクキュー/ジョブキュー。リアルタイム運用に特化しており、スケジューリングをサポート。
  • Dkron - 分散型かつ障害に強いジョブスケジューリングシステム。
  • Faktory - 言語に依存しない永続的なバックグラウンドジョブサーバー。
  • Rundeck (c) - ジョブスケジューラとランブック自動化。既存のスクリプトやツールへのセルフサービスアクセスを可能にする。
  • Schedulix - オープンソースのエンタープライズジョブスケジューリングシステム。高度なシステム環境におけるITプロセスのプロフェッショナルな自動化に革新的な基準を設定。

ログ

  • Fluentd - 統合ログレイヤー向けのオープンソースデータ収集ツール。
  • Graylog - 完全に統合されたオープンソースログ管理プラットフォーム。
  • Kibana - 柔軟な分析および可視化プラットフォーム。
  • LogDNA (c) - 中央集約型ログ管理ソフトウェア。あらゆるプラットフォームから、あらゆる量のログをリアルタイムで収集、集中、分析できる。
  • Logstash - イベントおよびログの管理ツール。
  • Loki - プロメテウスに似た、ログ向けのツール。

メッセージング

  • ØMQ - ブローカーなしの知能あるトランスポート層。
  • ActiveMQ - 強力なオープンソースメッセージングおよび統合パターンサーバー。
  • Aeron - 効率的かつ信頼性の高いUDPユニキャスト、UDPマルチキャスト、およびIPCメッセージ伝送。
  • Beanstalk - シンプルで高速なワークキュー。
  • Bull - ノード向けの高速かつ信頼性の高いRedisベースのキュー。
  • Crossbar - 分散型およびマイクロサービスアプリケーション向けのオープンソースネットワーキングプラットフォーム。WAMP(Web Application Messaging Protocol)を実装。
  • Kafka - パブリッシュ・サブスクリプションメッセージングを分散コミットログとして再考。
  • Malamute - ゼロ・エム・エー企業向けメッセージブローカー。
  • Mosquitto - MQTTプロトコルを実装するオープンソースメッセージブローカー。
  • NATS - オープンソース、高性能、軽量のクラウドメッセージングシステム
  • NSQ - リアルタイムの分散メッセージングプラットフォーム
  • Pulsar - 分散型パブリッシュ・サブスクリプションメッセージングシステム
  • RabbitMQ - Erlangベースのオープンソースメッセージブローカー。シンプルに動作する。
  • Redpanda - 開発者向けストリーミングデータプラットフォーム:Kafka APIと互換、10倍速、ZooKeeperおよびJVMなし
  • RocketMQ - アリババの大量メッセージングビジネスから生まれた、低遅延、信頼性、スケーラブルで使いやすいメッセージ指向のミドルウェア

監視とデバッグ

  • Beats - ElasticsearchおよびLogstash向けの軽量シャッパー
  • Elastalert - Elasticsearch向けの簡単で柔軟なアラート機能
  • Ganglia - 高性能コンピューティングシステム(クラスタやグリッドなど)向けのスケーラブルな分散モニタリングシステム
  • Grafana - Graphite、InfluxDBおよびOpenTSDB向けのオープンソース、機能豊富なメトリクスダッシュボードおよびグラフエディタ
  • Graphite - スケーラブルなリアルタイムグラフ表示
  • IOpipe (c) - Amazon Lambda向けアプリケーションパフォーマンスモニタリング
  • Jaeger - オープンソース、端到端の分散トレースシステム
  • OpenTelemetry - 高品質で汎用的で移植性の高いテレメトリを提供し、効果的な可観測性を実現
  • Prometheus - オープンソースのサービスモニタリングシステムおよび時系列データベース
  • Riemann - 分散システムの監視
  • Sensu - 今日のインフラ向けの監視
  • SkyWalking - 分散システム向けアプリケーションパフォーマンスモニタリングツール。特にマイクロサービス、クラウドネイティブおよびコンテナベース(Docker、K8s、Mesos)アーキテクチャに最適化
  • Zabbix - オープンソースのエンタープライズクラスモニタリングソリューション
  • Zipkin - 分散トレースシステム

リアクティビティ

  • Reactor.io - JVM上で非ブロッキングアプリケーションを構築するための、リアクティブストリーム仕様に基づく2世代目のリアクティブライブラリ
  • Reactive Kafka - Apache Kafka用のリアクティブストリームAPI
  • ReactiveX - 観測可能なストリームによる非同期プログラミング用API。idiomatic Java、Scala、C#、C++、Clojure、JavaScript、Python、Groovy、JRubyなど、多数の言語で利用可能
  • RSocket - リアクティブストリームの意味論を提供するアプリケーションプロトコル

耐障害性

  • Awesome Chaos Engineering :star: - 素晴らしい混沌工程リソースを厳選したリスト
  • Raft Consensus - 故障耐性とパフォーマンスにおいてPaxosと同等の、理解しやすいコンセンサスアルゴリズム
  • Resilience4j - Java8および関数型プログラミングに特化した、故障耐性を備えたライブラリ
  • Svix - ユーザーにウェブホークを送信するウェブホークサービス。完全なリトライスケジュール、指数関数的なバックオフ、署名検証、イベントタイプをサポート

セキュリティ

  • Cerbos Hub - マイクロサービスアーキテクチャ上でスケーラブルかつ細粒度の認可を構築・テスト・デプロイするための認可管理システム
  • Dex - プラグイン接続を備えた意見のある認可/ディレクトリサービス。OpenID Connectプロバイダーおよび第三者OAuth 及デLEGATIONを提供
  • JWT - JSON Web Tokensは、2つの当事者間で安全に主張を表現するための、オープンな業界標準RFC 7519手法
  • Keycloak - フル機能かつ拡張可能な認可サービス。OpenID Connectプロバイダーおよび第三者OAuth 2.0デLEGATIONを提供
  • OAuth - ウェブアプリケーション、デスクトップアプリケーション、モバイル端末、リビングルームデバイス向けに特定の認可フローを提供。多数の実装がある
  • OpenID Connect - 現在のOpenID仕様および関連仕様を実装するライブラリ、製品、ツールのリスト
  • Open Ziti - ゼロトラストセキュリティとオーバーレイネットワークを純粋なオープンソースソフトウェアとして提供
  • ORY - オープンソースのアイデンティティインフラストラクチャおよびサービス
  • OWASP Agent Memory Guard — AIアグエントのメモリポイズニング(OWASP ASI06)に対するランタイム防御層。メモリエントリの改ざん、メモリパスにおけるプロンプトインジェクション、秘密情報の漏洩を検出。YAMLポリシー、マイクロ秒遅延、外部依存なし。
  • SCIM - クロスドメインアイデンティティ管理システム
  • Vault - 現代コンピューティングにおけるトークン、パスワード、証明書、APIキーなどの秘密情報をセキュリティ確保、保存、厳密にアクセス制御。

シリアライズ

  • Avro - Apacheによるデータシリアライズーションシステム。コンパクトで高速なバイナリデータ形式で豊かなデータ構造を提供。
  • Bond - スキーマ化されたデータを扱うためのクロスプラットフォームフレームワーク。マイクロソフトの大规模サービスで広く使用されている。
  • BooPickle - 効率的なネットワーク通信用のバイナリシリアライゼーションライブラリ。ScalaおよびScala.js用。
  • Cap’n Proto - 驚くほど高速なデータ交換フォーマットおよびベースドなRPCシステム。
  • CBOR - 多くの言語でCBOR標準(RFC 7009)の実装。
  • Cereal - C++11用のシリアライゼーションライブラリ。
  • Cheshire - Clojure用のJSONおよびJSON SMILEのエンコード/デコード。
  • Etch - クロスプラットフォーム、言語およびトランスポートに依存しないネットワークサービスの構築および消費用フレームワーク。
  • Fastjson - 高速JSONプロセッサ。
  • Ffjson - Go用の高速JSONシリアライゼーション。
  • FST - Java用の高速シリアライゼーションのドロップイン置き換え。
  • Jackson - JSONデータフォーマットを処理するためのマルチ用途Javaライブラリ。
  • Jackson Afterburner - バイトコード生成を使用してデータバインディングをさらに高速化するジャッソンモジュール(シリアライゼーションおよびデシリアライゼーションのパフォーマンス向上30~40%)。
  • Kryo - Javaのシリアライゼーションおよびクローン:高速、効率的、自動。
  • Lite³ - JSON互換のゼロコピーシリアライゼーションフォーマット。
  • MessagePack - 効率的なバイナリシリアライゼーションフォーマット。
  • Protostuff - スキーマ進化およびバリデーションを内蔵したシリアライゼーションライブラリ。
  • SBinary - Scala型のバイナリフォーマットを記述するためのライブラリ。
  • Thrift - Apache Thriftソフトウェアフレームワーク。スケーラブルなクロス言語サービス開発用。
  • yyjson - Cで最も高速なJSONライブラリ。

ストレージ

  • Alluxio - 仮想分散ストレージシステム。
  • Apache Cassandra - 列指向型であり、単一の障害点をもたない高可用性を提供する
  • Aerospike (c) - スケールで高速に実現する高性能NoSQLデータベース
  • ArangoDB - ドキュメント、グラフ、キー・バリューの柔軟なデータモデルを備えた分散型無料オープンソースデータベース
  • AtlasDB - キー・バリューストア上のトランザクション層
  • Citus - PostgreSQLの拡張として提供される分散型データベース
  • CockroachDB (c) - Google SpannerをモデルにしたクラウドネイティブSQLデータベース
  • Couchbase - パフォーマンス、スケーラビリティ、簡易な管理を設計した分散型データベース
  • Crate (c) - スケーラブルなSQLデータベースにNoSQLの利点を備えたもの
  • Datomic - 完全にトランザクション対応、クラウド対応可能な分散型データベース
  • Druid - 高速な列指向型分散データストア
  • Elasticsearch - オープンソースの分散型、スケーラブルかつ高可用性の検索サーバー
  • Geode - スケーラブルなアプリケーション向けのオープンソース、分散型、メモリ内データベース
  • Infinispan - キャッシュに使用される高並列性のキー・バリューデータストア
  • InfluxDB - メトリクス、イベント、リアルタイム分析用のスケーラブルなデータストア
  • OpenTSDB - Apache HBase上に構築されたスケーラブルで分散型のタイムシリーズデータベース
  • Pilosa - 複数の巨大データセット間のクエリを劇的に高速化するオープンソース、スケーラブルなビットマップインデックス
  • RethinkDB - リアルタイムアプリケーションの構築を容易にするオープンソ及、スケーラブルなデータベース
  • Secure Scuttlebutt - メッセージフィード向けのP2Pデータベース
  • TiKV - トランザクション対応の分散型キー・バリューデータベース
  • Trino - ビッグデータ分析に最適な高速分散型SQLクエリエンジンで、データ宇宙を探索可能

テスト

  • Goreplay - ライブHTTPトラフィックをテスト環境にキャプチャ・リプレイするツール
  • Keploy - 実際のトラフィックをキャプチャし、テストケースやスタブに変換することで、マイクロサービスの信頼性の高いテストを可能にするAPIテストおよびモック用のオープンソースツール
  • Mitmproxy - トラフィックの中断・検査・変更・再実行を可能にするインタラクティブコンソールプログラム
  • Mountebank - ワイヤー上で動作するマルチプロトコルなテストダブルを提供するクロスプラットフォームツール
  • Pact - HTTP APIおよび非HTTPのアシンクメッセージシステム向けのコントラクトテストフレームワーク
  • RestQA - ローカルでマイクロサービスのモック、ユニットテスト、パフォーマンステストを管理するツールで、開発者にとって最高クラスの体験を提供
  • Specmatic - API仕様(OpenAPI、AsyncAPI、GraphQL、gRPCなど)を実行可能なコントラクトに変換し、コードを書かずに自動テスト、サービス仮想化、バックワード互換性の検証を行う
  • Spring Cloud Contract - ソフトウェアアーキテクチャレベルでのTDD(テスト駆動開発)
  • VCR - テストスイートのHTTP相互作用を記録し、将来のテスト実行時にそれを再実行することで、高速かつ決定論的かつ正確なテストを実現。他の言語での実装のポートリストを確認してください。
  • Wilma - HTTP/HTTPSサービススタブと透明プロキシの統合ソリューション
  • WireMock - 一般的なモックツールとは異なり、実際のHTTPサーバーを生成して、テスト中のコードが実際にウェブサービスと接続するように動作するウェブサービスのモック・スタブ用のフレキシブルなライブラリ
  • Hoverfly - 開発者およびテスト担当者向けの軽量なサービス仮想化/APIシミュレーションツール

継続的インテグレーションとデリバリー

  • Awesome CI/CD DevOps - CI/CDおよびDevOps向けに素晴らしいツールを厳選したリスト :star:

Web APIモデリングと文書化

非同期

  • AsyncAPI - AsyncAPI仕様、非同期APIを定義する業界標準

GraphQL

  • GraphQL - クライアントアプリケーションの構築を目的としたクエリ言語。直感的かつ柔軟な構文とデータ要件および相互作用を記述するためのシステムを提供。

JSON

  • JSON:API - クライアントがリソースの取得または変更を要求し、サーバーがそれらの要求に応答する方法を定義する仕様。

REST

  • API Blueprint - APIライフサイクル全体にわたるツール。他の人とAPIについて話すために使用したり、自動的にドキュメントを生成したり、テストスイートを生成したり、あるいはコードを生成したりできます。
  • OpenAPI - OpenAPI仕様(OAS)は、APIライフサイクルの各段階で情報を伝達するための一貫した手段を提供。
  • RAML - RESTful APIモデリング言語、実用的なRESTful APIを簡潔に記述するためのシンプルな方法。
  • ReDoc - OpenAPI/Swagger生成APIドキュメント
  • Scalar - オープンソースAPIプラットフォーム:美しいAPIリファレンスと優れたOpenAPI/Swaggerサポート。
  • Slate - あなたのAPI向けに美しい静的ドキュメンテーション。
  • Spring REST Docs - Spring MVC Testで生成された自動スニペットと手書きドキュメントを組み合わせることで、RESTfulサービスをドキュメント化。
  • Swagger - あなたのRESTful APIをシンプルでありながら強力な形で表現。

標準/推奨事項

World Wide Web

  • W3C.REC-Webarch - ウェブのアーキテクチャ、第1巻。
  • RFC3986 - 一貫したリソース識別子(URI):一般形式。
  • RFC6570 - URIテンプレート。
  • RFC7320 - URI設計と所有権。

自己主権と分散化

  • DID - 分散識別子(DID)のW3C規格:検証可能で分散型のデジタルアイデンティティを可能にする新しい識別子タイプ。
  • DIDComm - DIDの分散設計に基づいたプライベートな通信手法。
  • DIDComm Protocols - DIDCommに構築されたプロトコルの登録、どんなトランスポートでも信頼性の高い、自己主権な相互作用を可能にする。
  • IDSA - 国際データスペース協会(IDSA)は、国際データスペース(IDS)を用いて、安全で主権あるデータ共有システムを構築し、すべての参加者が自データの完全な価値を実現できる未来のグローバルデジタル経済を創出する使命を担っている。

HTTP/1.1

  • RFC7230 - メッセージ構文とルーティング。
  • RFC7231 - 意味とコンテンツ。
  • RFC7232 - 条件付きリクエスト。
  • RFC7233 - 範囲リクエスト。
  • RFC7234 - キャッシュ。
  • RFC7235 - 認証。
  • RFC7807 - HTTP API向けの問題詳細。

HTTP/2

  • RFC7540 - ハイパーテキスト転送プロトコルバージョン2。

QUIC

  • QUIC-WG - IETFが設置した、インターネットの次のトランスポートプロトコルを提供する作業部会
  • QUIC-Transport - UDPベースのマルチプレックスかつ安全なトランスポートプロトコル

RPC

  • JSON-RPC 2.0 - ステートレスかつ軽量のリモートプロシージャ呼び出し(RPC)プロトコル
  • Open RPC - OpenRPC規格はJSON-RPC 2.0 APIに対して、プログラミング言語に依存しない標準インターフェース記述を定義する

メッセージング

  • AMQP - 高度なメッセージキューングプロトコル
  • MQTT - MQテレメトリーテレムト
  • STOMP - シンプルテキスト指向メッセージプロトコル

セキュリティ

  • GNAP - 認可および承認の交渉プロトコルは、ソフトウェアに認可を委任し、その委任をソフトウェアに伝達するためのメカニズムを定義する。この委任は、APIセットへのアクセスを含む場合もあり、ソフトウェアに直接渡される情報も含む。DRAFT
  • OIDCONN - OpenID Connect 1.0は、OAuth 2.0プロトコルの上に構築されたシンプルな認証層であり、クライアントが認証サーバーが実行した認証に基づいて終端ユーザーの識別を検証し、終端ユーザーの基本的なプロファイル情報を相互運用性およびREST風の方法で取得できるようにする
  • PASETO - Pasetoは、JOSE(JWT、JWE、JWS)のすべての好ましい点を保持しつつ、JOSE規格が抱える多くの設計上の欠陥を一切排除したプロトコルである。DRAFT
  • RFC5246 - トランスポート層セキュリティ(TLS)プロトコルバージョン1.2
  • RFC6066 - TLS拡張
  • RFC6347 - データグラムトランスポート層セキュリティバージョン1.2
  • RFC6749 - OAuth 2.0の認可フレームワーク
  • RFC6962 - 証明書の透明性
  • RFC7515 - JSONウェブ署名(JWS)は、JSONベースのデータ構造を使用してデジタル署名またはメッセージ認証コード(MAC)でセキュリティを確保したコンテンツを表す
  • RFC7519 - JSONウェブトークン(JWT)は、二つの当事者間で移動する主張をコンパクトかつURL安全に表現する手段である
  • RFC7642 - SCIM:定義、概要、概念、および要件
  • RFC7643 - SCIM:コアスキーマは、ユーザーおよびグループを表すためのプラットフォーム非依存スキーマおよび拡張モデルを提供する
  • RFC7644 - SCIM:プロトコルは、ウェブ上での識別データのプロビジョニングおよび管理を行うアプリケーションレベルのRESTプロトコルである

サービス発見

  • DNS-SD - サービスのnamed instanceの一覧をクライアントが標準DNSクエリを使って発見できる仕組み
  • RFC2782 - サービスの場所を指定するDNS RR(DNS SRV)

データ形式

  • RFC4627 - JavaScriptオブジェクト記法 (JSON)。
  • RFC7049 - コンパクトなバイナリオブジェクト表現 (CBOR)。
  • BSON - バイナリJSON (BSON)
  • JSON-LD - リンクデータ用のJSON。
  • SBE - シンプルなバイナリエンコーディング(SBE)
  • MSGPACK - メッセージパッケージ仕様

語彙

  • JSON Schema - JSONドキュメントに注釈を付加および検証できる語彙。
  • Schema.org - 協働し、コミュニティ活動を行うもので、インターネット上の構造化データ、ウェブページ、メールメッセージ、そしてそれ以上の場面において、スキーマの作成・維持・推進を使命としている。

Unicode

  • UNIV8 - ユニコードコンソーシアム.ユニコード標準 第8版、(カリフォルニア州マウンテンビュー:ユニコードコンソーシアム、2015年.ISBN 978-1-936213-10-8).
  • RFC3629 - UTF-8はISO 10646の変換形式です。

組織設計/チーム力学

  • How Do Committees Invent? :small_orange_diamond:PDF - メルヴィン・E・コンウェイ、Datamation誌1968年。コンウェイの法則を定義した元の記事。
  • Service per Team - 各チームは1つまたは複数のビジネス機能(例:ビジネス能力)を担当する。チームは1つまたは複数のモジュールを含むコードベースを所有する。そのコードベースの規模は、チームの認知能力を超えないように設定される。チームはそのコードを1つまたは複数のサービスとしてデプロイする。チームは、明確な必要性がある場合を除き、正確に1つのサービスを持つべきである。
  • Start with Team Cognitive Load - Team Topologies :small_red_triangle:YT - DOES19 ロンドン。『モノリスとマイクロサービス』の議論は、技術的側面に焦点を当てがちで、戦略やチームのダイナミクスを無視している。その代わりに、スマートな思考を持つ組織は、現代のソフトウェア開発においてチームの認知負荷を指導原則として始めている。この講演では、実際の事例を用いて、その方法と理由を説明します。

企業・業界別

  • Commercetools - ヘッドレスコンマースプラットフォーム
  • Equinox - インフォシス・イクシノは、あらゆるチャネルとタッチポイントにおいて、豊かなハイパーアイデンティフィケーションを実現する人間中心のコンバージョンおよびマーケティングプラットフォームです。
  • Flamingo - フレームワークで柔軟かつ現代的な電子商取引アプリケーションを構築します。
  • Medusa - ヘッドレスオープンソースのコンバージョンプラットフォーム

理論

記事と論文

  • Autonomy, Hyperconnectivity, and Residual Causality - 複雑性科学理論を用いた、適応型ハイパーエピソードシステムの設計に対する哲学的な導入。
  • Awesome Scalability :star: - スケーラブルで信頼性・パフォーマンスの高い大規模システムのパターンを説明するための、更新され組織された読み物リスト。概念は、著名なエンジニアや信頼できる参考文献の記事で解説されている。ケーススタディは、数百万から数十億ユーザーをサービスしている実証済みのシステムから取られている。
  • AKF Scale Cube - サービスをスケーリングするための次元を示すモデル。
  • CALM :small_orange_diamond:PDF - 一貫性として論理的単調性。
  • Canary Release - 新しいソフトウェアバージョンをプロダクションに導入するリスクを減らすための技術。その変更を全体のインフラに徐々に展開し、小さなユーザーのサブセットにまず適用してから、全ユーザーに提供する方法。
  • CAP Theorem - 分散型コンピュータシステムが、以下3つの保証を同時に提供することは不可能である、という主張。一貫性、可用性、パーティション耐性。
  • Formal Foundations of Serverless Computing :small_orange_diamond:PDF - サーバレスコンピューティングの抽象化は、プログラマがコードを書くことや論理的に考えるのを難しくする、いくつかの低レベルの運用詳細を暴露している。この論文は、λ、サーバレスコンピューティングの本質の操作意味論を提示することで、この問題を明らかにする。
  • Microservice Architecture - ソフトウェアアプリケーションを、独立してデプロイ可能なサービスのセットとして設計する特定の方法。
  • Microservices - From Design to Deployment :small_orange_diamond:PDF - F5のマイクロサービスに関する7つのパートシリーズ。
  • Microservices – Please, don’t - マイクロサービスアプローチに関するいくつかの問題についての重要なアドバイス。
  • Microservices Trade-Offs - マイクロサービスアーキテクチャスタイルのコストとメリットを検討するためのガイド。
  • Reactive Manifesto - 反応型システムの定義。
  • Reactive Streams - 非ブロッキングバックプレスを含む、アシンクロンなストリーム処理の標準を提供するための取り組み。
  • ROCAS :small_orange_diamond:PDF - 非常に適応可能なシステム向けのリソース指向コンピューティング。
  • SECO :small_orange_diamond:PDF - ソフトウェアエコシステムの理解:戦略的モデリングアプローチ。
  • Testing Strategies in a Microservice Architecture - 複数の独立してデプロイ可能なコンポーネントによる追加テストの複雑性を管理するためのアプローチ。
  • Your Server as a Function :small_orange_diamond:PDF - 安全でモジュール化され、効率的なサーバソフトウェアを構築するための強力なプログラミングモデルを提供する3つの抽象を説明。それは、合成可能な未来、サービス、フィルタの組み合わせである。

サイトと組織

  • Cloud Native Computing Foundation - クラウドネイティブコンピューティングファウンデーションは、コンテナをマイクロサービスアーキテクチャの一部としてオーケストレーションする、高品質のプロジェクトの集合体を構成し、持続可能なエコシステムを構築し、その周辺のコミュニティを育成している。
  • CNCF Cloud Native Interactive Landscape - クラウドネイティブ技術のインタラクティブな地図。
  • Microservices Resource Guide - マーチン・フォーワーが選んだ、マイクロサービスアーキテクチャスタイルについて学ぶことができる記事、動画、書籍、ポッドキャスト。
  • Microservice Patterns - マイクロサービスアーキテクチャのパターンとベストプラクティス。
  • Microservice Antipatterns and Pitfalls - マイクロサービスでよく見られる反パターンと険悪なポイント。

ライセンス

CC0

コントリビューション

コントリビューションガイドラインを確認してから提案してください。

追加項目はIssueを作成するか、Pull Requestを作成してください。

:star2: ありがとうございます!