Cloud Native Computing Foundation (CNCF)のTechnical Oversight Committee(TOC 技術監視委員会)は2018年3月15日(米国時間)、Kubernetes、Prometheus、OpenTracing、Fluentd、Linkerd、gRPC、CoreDNS、containerd、rkt、CNI、Envoy、Jaeger、Notary、TUF、Rook、Vitessに続き、新たにNATSをインキュベーション プロジェクトとしてホストすることを決定しました。
クラウド ネイティブに一から築き上げられたNATSは、成熟した7年のオープンソース メッセージング テクノロジーです。プロセス間通信(IPC)の効率の良いセキュアなメソッドの作成を支援する、パブリッシュ / サブスクライブ、リクエスト / リプライ、分散型のキュー パターンを実装しています。NATSは、シンプル / パフォーマンス / スケーラビリティ / セキュリティをコア理念としています。
プロジェクトは、緊密に統合されつつも独立してデプロイできるひとまとまりのオープンソース コンポーネントで構成されています。NATSは、単一のエンティティとして運用するようにクラスタ化できるサーバーと、これらのクラスタと接続してメッセージ内にカプセル化されたデータと交換するクライアントによる、クライアント サーバー アーキテクチャに基づいています。
Synadia CommunicationsのCEOでありNATSのクリエイターであるDerek Collison氏は、次のように述べています。
「ほとんどのメッセージング システムは、メッセージを持続しメッセージの配信を保証するメカニズムを提供しますが、一方でNATSは、これをログ ベースのストリーミングを通じて行います。私たちはこの方がメッセージを保存・再生する簡単な方法であると考えています。NATSは、最新のクラウド ネイティブ アーキテクチャをサポートするために書かれたシンプルかつパワフルなメッセージング システムです。複雑さは拡大しないため、NATSは分散アプリケーションを構築するための中枢神経システムとして機能しつつ使いやすいように設計されています。」
NATSストリーミングの契約者は、オフライン時に発行されたメッセージを取得したり、一連のメッセージを再生したりできます。ストリーミングは分散アプリケーション エコシステムにバッファーを提供し安定性を高めます。これにより、アプリケーションはローカルのメッセージ キャッシングとバッファリング ロジックをNATSにオフロードでき、メッセージが紛失しないことを保証します。
NATSは、マイクロ サービス アーキテクチャ、クラウド ネイティブ アプリケーション、IoTメッセージングを含む革新的なユース ケースで、何千もの企業により世界中でデプロイされています。NATSは、次のような企業・組織で採用されています : Apcera、Apporeto、Baidu、Bridgevine、Capital One、Clarifai、Cloud Foundry、Comcast、Ericsson、Faber、Fission、General Electric (GE)、Greta、HTC、Logimethods、Netlify、Pex、Pivotal、Platform9、Rapidloop、Samsung、Sendify、Sensay、StorageOS、VMware Acadiant、Weaveworks、Workiva。
NATSは、シンプルかつ高性能なメッセージング ソリューションに対する市場ニーズに応えて、Synadiaの創設者兼CEOであるDerek Collison氏により開発されました。Synadiaチームは、NATSサーバー(Go言語)、NATSストリーミング、およびGo / Python / Ruby / Node.js / Elixir / Java / NGINX / C / C#言語で書かれたクライアントを管理しています。コミュニティは、Arduino / Rust / Lua / PHP / Perlなど多くのライブラリにコントリビュートしています。NATSはNATSクラウドとしても利用できます。
Cloud Native Computing FoundationのCOOでありThe Linux Foundationのデベロッパー リレーション担当バイス プレジデントであるChris Aniszczykは、次のように述べています。
「今日のクラウド ネイティブは、拡張性と完全な柔軟性を重視し、プロセス間のデータを迅速・確実・安全に転送する必要性を強調しています。メッセージングはこれに対処するために生まれました。CNCFへのコントリビューションでは、NATSは成熟したクラウド ネイティブ メッセージング ソリューションのギャップを埋めます。広範なクライアント カバレージとプロトコルの簡潔さは、将来のクラウド ネイティブ システムのサポートとインテグレーションを容易にします。」
NATSは、Kubernetes / Prometheus / gRPC / Fluentd / Linkerd / containerdのようなプロジェクトと連携するなど、CNCFの他のプロジェクトとの強いシナジーがあります。
主な特徴
- Pure pub-sub
- Clustered mode server
- Auto-pruning of subscribers
- Text-based protocol
- Multiple qualities of service (QoS)
- Durable subscriptions
- Event streaming service
- Last/Initial value caching
注目すべきマイルストーン
- 44人のコントリビューター
- 3,820 GitHubスター
- 20リリース
- 1,356件のコミット
- 415フォーク
TOC代表でありプロジェクト スポンサーであるAlexis Richardson氏は、次のように述べています。
「メッセージングとインテグレーション ミドルウェア パラダイムは、クラウドネイティブ時代に根本的に変化しており、NATSはアプリケーション同士およびサービス同士のIPCの将来の見通しを示しています。NATSの高い性能は、最新の信頼性の高いスケーラブルなクラウド ネイティブ分散システムを構築する上で理想的な基盤であり、プロジェクトをCNCFに最適なものにします。」
CNCFがホストするプロジェクトとして、NATSは技術的関心に沿った中立的なCloud Native FoundationとLinux Foundationの一員となり、プロジェクト ガバナンスとマーケティング サポート、コミュニティー アウトリーチが提供されます。
その他の資料
NATS Introduction https://nats.io/documentation/
Video by founder Derek Collison https://www.youtube.com/watch?v=t_USxxOGzcw
Review this slideshow on NATS messaging + the problems it can solve in “Simple Solutions for Complex Problems.” https://www.slideshare.net/Apcera/simple-solutions-for-complex-problems
An overview of NATS architecture can be found in “Understanding NATS Architecture.” https://github.com/nats-io/roadmap/blob/master/architecture/ARCHITECTURE.md
For more on how it integrates with other projects, read “Guest Post: Fission – Serverless Functions and Workflows with Kubernetes and NATS.” https://nats.io/blog/serverless-functions-and-workflows-with-kubernetes-and-nats/