Linkerd

linkerd.io

まだできたばっかりのわりには随分しっかりしているようにみえる…うーんこれは来るかな?日本語の情報があんまりないので下手くそな訳おいときますね。

Linkerdとは?

Linkerdはクラウドネイティブアプリケーション用オープンソースでスケーラブルなサービスメッシュです。

我ながらひどい訳である

Linkerdの解決する問題

LinkerdはTwitterやYahoo, Google, Microsoftのような巨大なシステムを運営する際の問題を解決するために開発されました。我々の経験ではもっとも複雑で驚くべき緊急の振る舞いの原因はたいていサービスそのものではなく、サービス間の連携にあります。Linkerdはこれらの連携メカニズムそのものをコントロールするだけでなく、サービスの上に抽象層を提供することで解決できると考えています。

Linkerdは統一された単一の実装例やとサービスをまたぐ制御によって、サービスに最も適した言語をどれでも選択できるようにしています。また、アプリケーションのソースコードからサービス間のメッセージのやり取りメカニズムを邪魔しないようにすることで、アプリケーションを帰ることなくこれらのメカニズムを可視化し、コントロール可能にします。

今日、世界中の企業がソフトウェアインストラクチャの核心にフォーカスするためにLinkerdを使用しています。Linkerdはサービス間コミュニケーションの困難さ、エラー発生箇所に対処し――遅延を考慮したロードバランシングやコネクションプール、TLS、計測、リクエストレベルのルーティングも含みます――アプリケーションコードをスケーラブルで高性能かつ強靭なものとします。

使い方

Linkerdはスタンドアロンプロクシとして動作します。言語や依存ライブラリのことは気にする必要はありません。アプリケーションはふつう、既知の場所でインスタンスとして起動し、他のインスタンスからの呼び出しをプロキシサーバに送信することでLinkerdを使用します。つまり直接宛先へ接続するのではなく、対応するLinkerdインスタンスに接続して宛先のサービスを使用しているようにインスタンスを扱うのです。

ユーザの見えないところでLinkerdはルーティングルールを適用し、存在するサービスを検索するメカニズムでコミュニケーションを行い、相手のインスタンスとの間でロードバランシングを行います。またこれらの一連の挙動の間もコミュニケーションを計測し、メトリックスのレポートを行います。Linkerdへの呼び出しを行うメカニクスを遅延させることによってアプリケーションコードは下記から切り離されます。
1. 製品のトポロジーの知っていること
2. サービスを発見するメカニズムを知っていること
3. ロードバランシングと接続マネジメントロジック

アプリケーションは統一されたグローバルトラフィック制御メカニズムの恩恵も受けます。これは特に複数言語で書かれたアプリケーションにとっては重要なことです。なぜなら、ライブラリを通してこれらの一貫性を獲得するのは大変に難しいことだからです。


Linkerdのインスタンスサイドカー(アプリケーションサービスインスタンス毎に1インスタンス)またはホストに対してデプロイされます。Linkerdインスタンスはステートレスで独立しているので、既存開発のトポロジーにも簡単にフィットします。また、様々な構成と最小限の変更でアプリケーションコードと一緒にデプロイできます。