ポイント: マイクロサービスは、通信にAPIを利用し、ソフトウェア管理とスケーラビリティを向上させる個別のサービスです。彼らは、アプリケーションがより小さく、焦点を絞ったコンポーネントを通じて機能することを可能にし、APIはこれらのサービスのインターフェースとして機能し、相互作用とアクセス性を可能にします。
- マイクロサービスは、機能を分散化することによってソフトウェア設計を向上させます。
- APIは、マイクロサービスが効果的に相互作用するために不可欠です。
マイクロサービスは、企業が提供する小さな単一のサービスです。これは、多くの小さなサービスを接続する分散コンピューティングアーキテクチャに由来し、大きなサービスを持つのではなく、小さなサービスを結び付けるものです。マイクロサービスは、アプリケーションプログラミングインターフェース(API)を通じて提供されることができます。APIは、リクエスターとホスト間の通信手段であり、最も一般的にはIPアドレスを介してアクセス可能です。APIは、ユーザーに対して以下のような複数の情報を伝達することができます:
- 共有したいデータ
- 提供したい機能
要するに、マイクロサービスについての話はソフトウェアのアーキテクチャに関するものであり、APIはマイクロサービスを消費者にどのように公開するかに関するものです。
マイクロサービスの動作
マイクロサービスは、企業が大きな単一のサービスを提供するというアイデアから派生しています。マイクロサービスは個々の機能として登場します。もしMicrosoft Wordがマイクロサービスに分割されるとしたら、空白の紙として提供されるもの、スペルチェッカーとして提供されるもの、フォーマッティングツールとして提供されるものがあるでしょう。Kubernetesは、コンピュータソフトウェアが適応できるようにしました。Kubernetesには独自の利点がありますが、それはまた、ソフトウェアデザインを単一のモノリスのサービスから、より多くの小さなサービスが協力して動作する組み合わせに向けて推進しました。それはKubernetesのデザインのためです。
- サーバー上の単一コンテナの使用を効率的にオーケストレーションする
- システムの信頼性とスケーラビリティを向上させる
- 関連する管理およびリソースコストを削減する
マイクロサービスの例
マイクロサービスは非常にシンプルです。シンプルさは主要な目標です。企業の役割として考えることができます;一つのマイクロサービスは非常に特定の役割を果たし、ただ一つの仕事を持っています。DZoneは、Uberが提供するさまざまなマイクロサービスの優れたグラフをまとめ、APIを介して互いに通信し、異なるタスクを実行しています。Uberは各タスクのために異なるサービスを構築します:
- 乗客管理
- 乗客ウェブUI
- 請求
- ドライバー管理
- ドライバーウェブUI
- 支払い
- 旅行管理
- 通知
(ソース)
マイクロサービスは、グラフを通じても示されることがあります。一つのマイクロサービスは、APIを介して別のサービスと通信する単一のノードです。アーキテクチャは、システムに追加されるサービスが増えるにつれて成長し続けることができます。大企業のグラフは、想像するに、小さな都市のように広範囲にわたることがあります。ここでは、AmazonとNetflixの仮想グラフを示します:
(ソース)
マイクロサービスはAPIに依存する
APIは通信ツールです-それは一つのサービスが別のサービスと相互作用することを可能にします。API自体は何もできません、それは何かに接続されて初めて機能します。携帯電話のようにただそこに座っているものです。APIは、サービスやマイクロサービスに接続されると有用になります。
- Function as a Service
- 機械学習 as a Service
- Software as a Service
APIは、マイクロサービスをユーザーに配布する方法です。ソフトウェアをダウンロードしたり、ディスクを挿入する代わりに、APIがサービスを配布します。APIは、マイクロサービスアーキテクチャが機能するために必要です。なぜなら、APIはそのサービス間の通信ツールだからです。APIがなければ、多くの切り離されたマイクロサービスが存在することになります。技術的には、マイクロサービスは再びモノリスになるだけです。
APIの動作
APIは非常に多用途です。次のことができます:
- 任意のコンテナ化されたサービス上にAPIを作成する
- 様々な言語を使用することができます-Java、Python、Goなどを含む
- 任意の主要なクラウドプロバイダにAPIをデプロイする
APIは、サービスの使いやすさと露出を高めることができます。配布がはるかに簡単になると、より小さなサービスを提供できます。(結局、全体のAdobeスイートを構築して実行可能性を証明する必要はありません)。多くのAPIはRESTfulで、HTTPエンドポイントのようなエンドポイントを介して公開されます。これは、APIから情報にアクセスすることがURLをpingするほど簡単であることを意味します。GET、POST、PUT、DELETEコマンドは、URLと組み合わせて期待通りに機能し、データを取得したりAPIにデータを提供したりします。REST APIは現代のWebアプリケーションで最も一般的ですが、他の選択肢には次のものがあります:
- SOAP
- RPC
- GraphQL
製品として、APIエンドポイントは通常、開発者ポータルと一緒に提供され、開発者がそれを使用する方法を説明し、開発者にAPIキーを割り当てます。もしマイクロサービスの目的が、特定の郡に登録された車両に関するデータを提供することであれば、開発者ポータルは次のことを説明します:
- サービスが何をするか
- データの構造(すなわち、データスキーマ)
- 開発者がAPIを使用するために必要なもの
マイクロサービスとAPI
ほとんどの良いマイクロサービスには何らかのAPIタイプがあります。マイクロサービスを使用してもらいたい場合は、APIを作成します。APIは、開発者にとって、アーティストやクリエイターにとってのソーシャルメディアアカウントのようなものです。使用してもらいたいなら、APIを使用して人々がそれを受け取れるようにします。
関連する読み物
これらの投稿は私自身の意見であり、BMCの立場、戦略、または意見を必ずしも代表するものではありません。