Skip to content

歴史

起源

NATS は Derek Collison が作った。出発点は 2010 年頃、VMware の Cloud Foundry のメッセージング制御プレーンとして Ruby で実装されたものだ (RedMonk interviewWikipedia)。狙いはプラットフォームの内部神経系、つまり中央に重いブローカを置かずにコンポーネント同士が高速かつシンプルに会話する仕組みだった。

Collison が Apcera を創業すると、NATS は Go へ書き直され gnatsd となった。動機は生の速度ではなく、Ruby の依存管理の苦痛から逃れ、静的バイナリと実スタックを得て GC 圧を下げることだった。Go 移行では正規表現パーサもやめ、near-zero-allocation の手書きパーサに置き換えた (RedMonk interview)。そのパーサは今もプロトコルパスを駆動している (server/parser.go:137)。

年表

マイルストーン
2010Cloud Foundry のメッセージング制御プレーンとして最初の Ruby 実装 (RedMonk interview)
2012nats-io/nats-server リポジトリが GitHub に作成 (2012-10-29) (repo)
2018CNCF に Incubating として受理 (2018-03-15) (CNCF project page)
~20212.2 系で JetStream が組み込み・推奨の永続化経路に (JetStream docs)
2025Synadia とのガバナンス紛争が解決。商標は Linux Foundation に譲渡、Apache-2.0 を継続 (CNCF announcement)
2026v2.14.2 リリース (2026-06-02)、graduation 申請がオープン (cncf/toc#2042)

どう進化したか

大きな転換は 2 つ。1 つ目は Ruby から Go への書き直しで、これがプロジェクトの性能的性格を決めた。単一の静的バイナリ、手書きパーサ、tail latency 重視だ。Apcera が Ericsson に売却された後、Collison は Synadia を設立して NATS を継続し、サーバコードの大半を本人が書いたと述べている (RedMonk interview)。

2 つ目は永続化だ。初期の durable メッセージングは NATS Streaming (STAN) という別レイヤにあったが、後に deprecated となった。JetStream はこれを置き換え、永続化をサーバに直接組み込んだ。独自の追記型ファイルストアと Raft ベースの複製を備える (JetStream docs)。これにより単一バイナリ・外部依存なしのモデルを保ったまま、at-least-once 配送・リプレイ・key/value・オブジェクトストレージを追加した。

現在地

2025 年、Synadia が NATS を CNCF から引き上げ BUSL へ再ライセンスする意向をコミュニティに通知し、ガバナンス紛争が表面化した。これは解決した。Synadia は NATS 商標 2 件を Linux Foundation に譲渡し、CNCF はドメインと GitHub 組織を保持し、コードは Apache-2.0 のままとなった (CNCF announcementCNCF blog)。

プロジェクトは CNCF Incubating のままで、graduation 申請がオープンになっている (cncf/toc#2042)。直近リリースは v2.14.2 (2026-06-02)、default ブランチのソースは VERSION 2.15.0-dev を持つ (server/const.go:69)。