すごいよ、API Gateway パターン! 〜 マイクロサービスアーキテクチャの設計パターン 〜

Tech

APIゲートウェイは、マイクロサービスアーキテクチャにおける玄関口をしっかりとガードしてくれる「関所」の役割を担ってくれます。また、「関所」機能以外にも、ユーザエクスペリエンスの向上にも寄与する役目も果たします。 本記事では、APIゲートウェイを設置する設計手法である、API Gateway パターンに関して、できるだけわかりやすく説明していきたいと思います。

API Gateway パターンとは?

API Gateway パターンの概要

クライアントとバックエンドのサービスの間に玄関口となるAPIゲートウェイを置くのが、API Gateway パターンです。

f:id:fujiyamaegg:20200702234303p:plainAPIゲートウェイ

API Gateway パターンの何がすごいのか?

APIゲートウェイが、システムの「関所」としての役割を一手に引き受ける

古今東西、交通の要所となる場所に「関所」が設置されてきました。人間が行き来できる道を限定的にすることで、検問、徴税などをより効果的に、より効率的に行うためです。 マイクロサービスアーキテクチャにおけるAPIゲートウェイも同じです。マイクロサービスへの玄関口(エントリポイント)をAPIゲートウェイが提供します。そして、APIゲートウェイが以下の役割を一手に引き受けることで、より効率的に、より効果的にセキュリティ等の役割を担うのです。

  • リクエストのルーティング
  • 認証・認可
  • モニタリング
  • 流量制限
  • 課金
  • プロトコル変換

もし、APIゲートウェイがなければ、どうなるでしょうか? 外部にさらされるエントリポイントが多くなり、攻撃者にも攻撃できる手数を増加させてしまい、セキュリティリスクが高まります。 また、エントリポイントごとに、セキュリティの対策が必要になり、開発者は、サービス本来の仕事に集中できなくなり、開発組織のアジリティもさげることになるでしょう。

f:id:fujiyamaegg:20200702234448p:plainAPIゲートウェイがない場合

APIゲートウェイ のエントリポイントの抽象化により、変更に強くなる

APIゲートウェイ のエントリポイントは、ラーメン屋のセットメニューのようです。 「味噌ラーメンでトッピングはネギとコーンとチャーシュー。あと餃子と半チャーハン」のように注文するのではなく「満腹味噌ラーメンセット」と注文すれば、すべてまとまってできあがってくるのです。

APIゲートウェイのエントリポイントは、そのような粒度の粗いリクエストを受け付けるようにするのです。 このことにより、バックエンド側の個々のサービスの詳細がカプセル化されているので、多少の変更では、クライアント側への影響が発生しづらくなります。 例えば、「満腹味噌ラーメンセット」のネギをバターに変更したとしても、「満腹味噌ラーメンセット」というメニューの名称は変えなくてもいいでしょう。 これと同じように、カプセル化により、バックエンド側の変更の影響がクライアント側に伝わりにくくなります。

ラウンドトリップ減少によるユーザエクスペリエンスの向上

APIゲートウェイ のエントリポイントを抽象化することで、ユーザエクスペリエンスも向上します。 もし、クライアントが各サービスから必要な情報を集めて、最終的にクライアントで情報を組み立てるようになるとどうでしょうか?比較的通信速度も遅くなるクライアントとバックエンド側とのやりとりが多くなり、それだけ、最終的にユーザへの応答の遅延が大きくなってしまいます。 f:id:fujiyamaegg:20200702235011p:plainシーケンス図 APIゲートウェイがない場合

しかし、クライアントとバックエンド側のやりとりを最小限にすることで、結果的にユーザへの応答が早くなり、ユーザエクスペリエンスの向上につながるのです。

f:id:fujiyamaegg:20200702234903p:plainシーケンス図 APIゲートウェイがある場合

上記を実現するために、APIゲートウェイでは、複数のサービスへのリクエストを集約する仕組みが必要になります。 その仕組みをAPI合成(API Composition)と呼びます。

APIゲートウェイの実装は

パブリッククラウドベンダー

各パブリッククラウドベンダーからAPIゲートウェイ製品が提供されています。

オープンソースパッケージ

オープンソースパッケージで、APIゲートウェイ製品が提供されています。

  • Kong
  • Traefik
  • Ocelot

フレームワーク

APIゲートウェイを自作するためのフレームワークには、以下のようなものがあります。

結局、APIゲートウェイとは?

APIゲートウェイとは、システムの表玄関である。つまり、関所としての役割を担う他に、ユーザに価値をもたらすレベルの公開サービスの陳列棚でもある。 マイクロサービスアーキテクチャが成長する中で、開発組織にアジリティをもたらしてくれる存在である。

参考

タイトルとURLをコピーしました