LoginSignup
0
0

More than 3 years have passed since last update.

API Gateway パターンに関する図(PlantUML)

Posted at

API Gateway パターンに関する図を PlantUML で作成しました。
この図を含んだブログ記事も記載しているので、興味あるかたは以下からどうぞ。

すごいよ、API Gateway パターン! 〜 マイクロサービスアーキテクチャの設計パターン 〜 - ふじやまエッグの日々

API Gateway パターン

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

APIゲートウェイがある場合

APIゲートウェイが外部からのリクエストを一手に引き受けます。

apigateway.png


コード

@startuml
title APIゲートウェイがある場合
skinparam agent {
  roundCorner 20
}
skinparam rectangle {
  roundCorner 20
}
agent クライアントアプリ as client
rectangle バックエンド as backend {
  agent APIゲートウェイ as gateway
  agent サービスA as serviceA
  agent サービスB as serviceB
  agent サービスC as serviceC
}
client -right-> gateway
gateway-down-> serviceA
gateway-down-> serviceB
gateway-down-> serviceC
@enduml

APIゲートウェイがない場合

APIゲートウェイがない場合は、以下のように外部からのエントリポイントが複数に分散します。これは、外部からの攻撃ポイントも複数に分散することにもつながり、セキュリティリスクを高めることになります。

noapigateway.png


コード

@startuml
title APIゲートウェイがない場合
skinparam agent {
  roundCorner 20
}
skinparam rectangle {
  roundCorner 20
}
agent クライアントアプリ as client
rectangle バックエンド as backend {
  agent サービスA as serviceA
  agent サービスB as serviceB
  agent サービスC as serviceC
}
client -down-> serviceA
client -down-> serviceB
client -down-> serviceC
@enduml

API Gateway シーケンス図

APIゲートウェイを経由しない場合

APIゲートウェイを経由しない場合は、クライアントから複数のサービスから必要な情報を取得するようになります。シーケンス図は、以下のようになります。

seq_noapigate.png


コード

@startuml
title APIゲートウェイを経由しない場合
participant “ECサイト注文画面” as ecsite
participant “商品カタログサービス” as catalog
participant “レビューサービス” as review
participant “レコメンデーションサービス” as recomendation
ecsite -> catalog: 商品情報取得()
activate catalog
catalog-> ecsite : 商品情報
deactivate catalog
ecsite -> review: レビューリスト取得()
activate review
review -> ecsite : レビューリスト
deactivate review
ecsite -> recomendation: レコメンデーションリスト取得()
activate recomendation
recomendation -> ecsite : レコメンデーションリスト
deactivate recomendation
@enduml

APIゲートウェイを経由する場合

APIゲートウェイを経由する場合は、クライアントとのやりとりを最小限におさえることができます。

seq_apigate.png


コード

@startuml
title APIゲートウェイを経由する場合
participant “ECサイト注文画面” as ecsite
participant “APIゲートウェイ” as apigateway
participant “商品カタログサービス” as catalog
participant “レビューサービス” as review
participant “レコメンデーションサービス” as recomendation
ecsite -> apigateway: 注文画面用情報取得()
activate apigateway
apigateway-> catalog: 商品情報取得()
activate catalog
catalog-> apigateway: 商品情報
deactivate catalog
apigateway-> review: レビューリスト取得()
activate review
review -> apigateway: レビューリスト
deactivate review
apigateway-> recomendation: レコメンデーションリスト取得()
activate recomendation
recomendation -> apigateway: レコメンデーションリスト
deactivate recomendation
apigateway -> ecsite : 注文画面用情報
deactivate apigateway
@enduml

最後に

APIゲートウェイは、マイクロサービスアーキテクチャにおける玄関口の役割を担います。そんなAPIゲートウェイに関して以下の記事にまとめているので、興味あるかたはぜひどうぞ。

すごいよ、API Gateway パターン! 〜 マイクロサービスアーキテクチャの設計パターン 〜 - ふじやまエッグの日々

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0