ブログ

コンテナを使用する開発者にとってインフラストラクチャが重要な理由

ロリ・マクヴィッティ サムネイル
ロリ・マクヴィッティ
2018年9月4日公開

今日、インフラストラクチャ プロバイダーの社内で最も頻繁に聞かれる質問の 1 つは、そのインフラストラクチャの価値を開発者コミュニティにどのように説明するかということです。 問題は、インフラストラクチャの利点のほとんどが、本番環境に導入された後に得られることです。 これらはどれも、少なくとも開発者の日常業務に影響を与えるような有意義な方法では、開発者に直接的な価値をもたらすものではありません。

開発の追加メリットは、開発者が確実に認識しているものです。 2018 年のアプリケーション配信の現状では、少数の開発者が参加しました。 しかし、その割合は、導入したいアプリケーション サービスについて大きな意味を持っていました。 これらのアプリケーション サービスの一部 (負荷分散、キャッシュ、高速化など) は、インフラストラクチャとしてだけでなく、アプリケーション自体の一部としても導入されることがよくあります。 TCP 最適化と WAF は、ほとんどの場合、インフラストラクチャ サービスであり、アプリケーション (モノリスまたはマイクロサービス) の前のアップストリーム (データ パス) にデプロイされます。

これらすべてのアプリケーション サービスには価値があります。 リスクの軽減、パフォーマンスの向上、スケーラビリティ。 しかし、これらはアプリケーションとビジネス上のメリットであり、アプリケーションを本番環境に配信した後の開発者にメリットをもたらします。 開発ライフサイクルの一部としてのインフラストラクチャの事前提供のメリットを見つけることは難しく、ましてや明確に表現することは困難です。

しかし、コンテナとマイクロサービスを採用し続けると、インフラストラクチャの提供前と提供後の価値がより明らかになります。

ほとんどの新興テクノロジーと同様に、新しいアプリケーション アーキテクチャの初期段階では、インフラストラクチャはほとんど導入されません。 アプリケーション アーキテクチャがアプリケーション サービス インフラストラクチャを大きく形作るということを知ったら、開発者は驚くかもしれません。 3 層の Web ベース アプリへの移行により、スケーラビリティ (負荷分散) が実現しました。 レスポンシブなプレゼンテーション層を備えた Web 2.0 の採用により、フロントエンドのアクセラレーション インフラストラクチャが生まれました。 モバイルの登場とあらゆる業界のデジタル化の進展により、インフラストラクチャは WAF、DDoS、ボット防御などのセキュリティ サービスに対応するようになりました。

つまり、現在起こっていることは、開発者がアプリケーション内にインフラストラクチャ サービスの機能をコード化しているということです。 開発者は、従来はアップストリーム サービスが担当していたものをコードに組み込んでいます。 ロード バランサーからの再試行。プラットフォームまたはプロキシからの mTLS。 正当なクライアントとの通信を制限するアクセス制御。

これらは、コンテナ フレームワークがまだ初期段階にあり、導入率が急速だったため、開発者が担ってきたインフラストラクチャの責任です。

しかし、これまでもそうであったように、状況は変わりつつあります。 これまでのアプリ アーキテクチャがネットワーク インフラストラクチャでの応答を促進してきたのと同様に、コンテナーとマイクロサービスも同様です。 ただ、今回の変更は新しいボックスの形で行われるわけではありません。 現在起こっているのは、開発者が必要とするアプリケーション サービスをコンテナ環境統合する動きです。 ここでサービス メッシュが登場し、開発者に実際の定量化可能な価値を直接提供します。

Aspen Meshの主任アーキテクトである Andrew Jenkins 氏は、 Linux.com とのインタビューで次のように説明しています。

「今日では、Web サービスの作成を開始するのがいかに簡単であるかは驚くべきことです。  コードをツイートに収めることができます。 ただし、これは実際の Web サービスではありません。  回復力と拡張性を高めるには、アプリのデータ プレーンにいくつかの機能を追加する必要があります。TLS を実行し、失敗を再試行し、このサービスからのリクエストのみを受け入れ、他のサービスからのリクエストは受け入れないようにし、ユーザーの認証をチェックするなどが必要です。  サービス メッシュを使用すると、アプリにコードを追加しなくてもデータ プレーンの機能を実現できます。」 

 

事前配信の価値は、コンテナ環境内で基本的なセキュリティとスケールを処理するために必要な反復的なコードの範囲の縮小と排除にあります。 サービス メッシュにはさまざまな優れた機能がありますが、その利点は主に、監視可能性、説明責任、スケールといった運用面にあります。 開発者にとって最も重要な価値は、コードの排除(およびそれによる技術的およびアーキテクチャ的負債の削減)にあります。

サービス メッシュを使用して、コンテナ環境にデプロイされたアプリを拡張、保護、監視すると、インフラストラクチャで処理されるべきコードの作成の負担が軽減されますが、この作業は最近まで開発者に委任されていました。 サービス メッシュは、開発者の負担を軽減し、ビジネスに価値をもたらすサービスやアプリの開発に使える貴重な時間を開発者に返す 1 つの方法です。