ブログ | NGINX

マイクロサービスと Kubernetes: ソフトウェアエコシステムのガーデニングガイド

NGINX-F5 水平黒タイプ RGB の一部
ジェン・ギル サムネイル
ジェン・ガイル
2023年3月30日公開

ガーデニングと同様に、ソフトウェア開発では、さまざまな要素がどのように連携して美しく生産性の高いエコシステムを構築するかを理解する必要があります。 これが、今年のMicroservices Marchプログラムにガーデニングのテーマを選んだきっかけでした。 どの庭でも同じですが、会話の中に問題のある雑草が 1 つ忍び込んできます。マイクロサービスと Kubernetes の違いは何でしょうか?

植物は庭の生態系の主な要素です。 これらはあなたの庭を構成し、その美しさと機能性に貢献する生きた有機体です。 同様に、マイクロサービス現代のソフトウェア アプリケーションの主要な構成要素です。 これらは、特定の機能を実行し、連携してより大規模で複雑なアプリケーションを作成する個々のサービスです。

植物と同様に、マイクロサービスもサイズ、形状、目的が異なります。 中には、1 つの操作だけを担当する小型で特殊なものもあります。 その他のものはより大規模で、動作がより一般化されており、またはより小さなコンポーネントのクラスターで構成されています。 たとえば、イチゴの植物は小さく、イチゴだけを生成します。 これは、クレジットカード取引(小規模で特殊)のみを処理するマイクロサービスに似ています。 コリアンダーのようなより一般的な植物は、サルサやワカモレに使用される葉物野菜だけでなく、コリアンダーの種子も生産します。 この種のプラントは、ユーザー認証 (より大規模で一般的なプロセス) を処理するサービスに似ています。

ほとんどの植物は、栄養分と水分を吸収できるように土に植える必要があります。根をむき出しのままにしておくと、枯れてしまいます。 地面に直接植えてもまったく問題ありませんが、多くの園芸家は、土壌をカスタマイズしたり、害虫からよりよく守ったり、植物を庭のあちこちに移動させたり(冬は屋内に置いたり)できるため、鉢を使ったコンテナガーデニングを選択します。 同様に、マイクロサービスを配置する場所についても複数のオプションがありますが、最も一般的なのは「コンテナ」に配置することです。 コンテナ化されたマイクロサービスには、アプリの実行に必要なものがすべて含まれており、ランタイム環境間で簡単に移植できます。

コンテナ (ポット) 内にマイクロサービス (植物) を配置しましたが、これをどのように展開、維持、拡張すればよいのでしょうか? ツール付き! Kubernetesの登場です。 Kubernetes は、マイクロサービスの管理と保守を容易にする多くの機能とアドオンを提供しており、コンテナ オーケストレーションの事実上のツールと見なされています。 たとえば、Kubernetes は、自動化された負荷分散、サービス検出、自己修復機能 (開発者の負担を軽減するメンテナンスと監視の作業の一部) を提供します。 そして、誰もがあなたのマイクロサービス(プラント)にもっと生産してもらいたいと思ったらどうしますか? Kubernetes は、マイクロサービス アプリケーションをスムーズに実行し続けるために、自動スケーリングとローリング アップデートをサポートします。

注記: Docker SwarmHashiCorp Nomadなどの Kubernetes の代替品は、ほぼ同じ機能を提供します。

私たちは、Kubernetes を使用してマイクロサービスを管理し、アプリケーションが暴走して制御不能になるのを防ぐという利点を確立しました。 しかし、Kubernetes とコンテナは必ずしも必要ではありません。 アプリケーションの複雑さに応じて、自動化ツールを使用してデプロイまたはプロビジョニングできる従来の仮想マシン (または物理マシン) プラットフォームの使用を選択することもできます。 これらのツールは Kubernetes と同じレベルの自動化とスケーラビリティを提供しませんが、それほど複雑ではないアプリや重要でないアプリの場合は、そのトレードオフでも問題ないかもしれません。 もう 1 つのオプションは、基盤となるインフラストラクチャを気にせずに、イベントに応じてマイクロサービス コードを実行できるサーバーレス コンピューティング プラットフォーム ( AWS Lambdaなど) を使用することです。

このセクションのタイトルのバナー - Kubernetes のすべてがマイクロサービスというわけではない

経験豊富な園芸家は、トマトと一緒にマリーゴールドを植えるなどのコンパニオンプランツが資源をより有効に活用し、より健康的な庭づくりに貢献することを知っています。 同様に、Kubernetes は、マイクロサービス管理以外にも役立つ幅広い機能とアドオンを提供します。 たとえば、Kubernetes はマイクロサービス以外のアプリ (機械学習モデルやモノリスなど) にも使用できます。 多くのお客様が Kubernetes を使用してマイクロサービスやその他のアプリケーションを管理しており、Kubernetes 内に仮想マシン (VM) をデプロイしているお客様もいます。 これは、従来のモノリシック アプリをマイクロサービス指向のアーキテクチャに移行している組織にとって最適なオプションとなります。

問題の根源に迫る

この投稿から、次の 2 つのことを学び取っていただければ幸いです (地元の苗床を訪れたいという気持ち以外に)。

  • Kubernetes にデプロイされるものすべてがマイクロサービスというわけではありません。 Kubernetes が提供する機能とアドオンにより、Kubernetes はさまざまなエコシステムで役立つツールになります。
  • マイクロサービスは必ずしも Kubernetes で管理する必要はありません。 一部のアプリケーションは、代替ツールと「ワイルドガーデン」アプローチによって繁栄します。

マイクロサービスの基礎の詳細については、次のリソースを参照してください。


「このブログ投稿には、入手できなくなった製品やサポートされなくなった製品が参照されている場合があります。 利用可能な F5 NGINX 製品およびソリューションに関する最新情報については、 NGINX 製品ファミリーをご覧ください。 NGINX は現在 F5 の一部です。 以前の NGINX.com リンクはすべて、F5.com の同様の NGINX コンテンツにリダイレクトされます。"