API Architecture
-
Ambassador Edge Stack
-
gRPC-Gateway
#Network #API Architecture #REST gRPCにおいて、gRPC serviceをRESTful APIとして提供するためのライブラリ。HTTP+JSONのインターフェースでリバースプロキシサーバーを生成する HTTP仕様はProtocol Buffers上において google.api.http のような HttpRule によって記述する 同リポジトリにはprotoc-gen-openapiv2プラグインも含まれておりOpen API仕様を出力できる gRPC-Gateway | gRPC-Gateway Documentation Website
-
Open API
-
Elastic Load Balancing
#Cloud Native #API Architecture AWSが提供するロードバランシングコンポーネント リソースごとに以下のような種別がある Application Load Balancer Network Load Balancer Gateway Load Balancer What is Elastic Load Balancing? - Elastic Load Balancing
-
Istio
-
レートリミット
#Security #API Architecture 以下のような目的でAPIの使用回数を制限する、制限を超過した時はHTTPの場合一般に429エラーを返す処理 STRIDEにあるようなDenial of Service(サービス拒否)からアプリケーションを保護する カスケード障害の可能性を制限する リソースの使用量を測定し従量課金に利用できる レートリミットの実装アルゴリズムには以下のようなものがある 固定ウインドウ(Fixed window) 固定期間内の制限 スライディングウインドウ(Sliding window) 直近の期間内の制限 トークンバケット方式(Token bucket) 総リクエスト数(トークンのバケツ)を定義しリクエストごとにトークンが利用される。バケツは定期的に充填される リーキーバケット方式(Leaky bucket) リクエストが処理される速度は固定で、バケツから溢れ出るリクエストを漏れ(リーキー)として扱う APIゲートウェイを利用している場合、ゲートウェイに配置するとよい
-
マスタリングAPIアーキテクチャ
-
適応度関数
Fitness Function #API Architecture システムの品質特性を数量化可能な指標で評価する、システムの目標を一貫して保証するためにビルドパイプラインに組み込まれる それぞれの特性は以下のようにカテゴライズされる コード品質(Code Quality) レジリエンス(Resiliency) オブザーバビリティ(Observability) パフォーマンス(Performance) コンプライアンス(Compliance) セキュリティ(Security) 運用操作性(Operability) Fitness function-driven development | Thoughtworks
-
RPC
Remote Procedure Call #Network #API Architecture リモート上のリクエスト発行をプログラミング言語の関数呼び出しのように利用できるよう抽象化したもの。 ただし実際に関数呼び出しと同等に利用できるわけではなく、ネットワーク上の様々な不測の事態を考慮する必要がある。
-
APIゲートウェイ
#API Architecture #Network 外部トラフィックに対してリバースプロキシ・ロードバランシングが持つようなネットワークのルーティング・セキュリティと可用性の向上に加え、以下のような機能横断的な要件を扱う役割 認証 認可 レートリミット リトライ サーキットブレーカー etc.
-
gRPC
-
ロードバランシング
#API Architecture #Network 外部からの大量トラフィックを捌けるよう用意された重複データを持つ多数のリソースサーバー群が均等に使用されるよう制御する役割 アプリケーションの可用性を高め、リバースプロキシと同様にサーバーを保護するセキュリティ機能が組み込まる ロードバランシングとは? - ロードバランシングアルゴリズムの説明 - AWS
-
OAuth徹底入門 セキュアな認可システムを適用するための原則と実践
-
OAuth2
#Security #API Architecture RFC6749によって定義された認可フレームワーク 主に以下の定義を利用する リソースオーナー(Resource Owner) 保護されたリソースへのアクセス許可を行うエンドユーザー リソースサーバー(Resource Server) 保護されたリソースを所有するサーバー、アクセストークンを受け取り検証する クライアント(Client) リソースオーナーによる認可の委譲先、アクセストークンを使ってリソースサーバーへリクエスト可能 認可サーバー(Authorization Server) リソースオーナーの認証・アクセス許可時に認可グランドを返却したのち、クライアントにアクセストークンを発行する 初回アクセストークン利用までのプロトコルの流れは以下 Protocol Flow リソースオーナーによるアクセス許可時に認可サーバーが返す認可グランドは、認可コードが利用されることが多い RFC 6749 - The OAuth 2.0 Authorization Framework
-
サービスメッシュ
#Network #Observability #Security #API Architecture マイクロサービスで行われるようなサービス間通信をルーティング、監視、保護する機能を提供する Kubernetesにおいてはクラスタ単位でサービスメッシュを構築する サービスメッシュはクラスタ内の全てのサービス間通信を制御するコントロールプレーンとコントロールプレーンで指定された作業が実行されるデータプレーン(サービス)の2つの基本要素を持つ。
-
Pact
-
リチャードソン成熟度モデル
#API Architecture Leonard RechardsonによるREST APIの観点からAPI実装の成熟度をレベルに分類したもの 各レベルのタイトルは以下 レベル0 HTTP/RPC レベル1 リソース レベル2 動詞(メソッド) レベル3 ハイパーメディアコントロール QCon 2008での発表は以下 Justice Will Take Us Millions Of Intricate Moves
-
マイクロサービス
#Software Design #API Architecture DDDにおける境界付けられたコンテキストに対応する形でサービスを用意し、サービス間通信を行う設計パターン マイクロという名前の通り、サービスインターフェースが小さく疎結合になっていて各サービスの責務が凝集されていることが望ましい
-
リバースプロキシ
#API Architecture #Network 外部トラフィックに対して単一のサーバーへルーティングを行い、サーバーの保護や負荷分散を行う役割
-
Protocol Buffers
Protobuf #API Architecture Googleによって開発されたインターフェース定義によるバイナリエンコーディングライブラリ。 フィールド名のエイリアスとして扱うフィールドタグ(数値)によってバイトを節約している。 フィールドタグによる互換性に関する仕様の要点は以下。 フィールドの追加 未使用のタグ番号を割り当てることで前方互換あり 必須でなければ後方互換あり フィールドの変更 フィールド名の変更は前方・後方互換あり フィールドの削除 追加時の前方・後方と逆 またProtocol Buffersはフィールド制約である optional と repeated 間の互換性にも対応している。これはバイナリ上でフィールド情報を単純に複数回並べているため。 Protocol Buffers Documentation
-
Kubernetes Gateway API
#API Architecture #Cloud Native #Network OSI参照モデルのL4/L7を扱うKubernetes公式のAPIゲートウェイ GatewayClass Gateway HTTPRoute の3つを定義し実装する GatewayClassはGKEのようなクラウドサービスが用意するケースがあり、外部or内部を選択できる Introduction - Kubernetes Gateway API
-
REST
Representational State Transfer #API Architecture HTTPを基礎とするアーキテクチャ上の制約、定義 Architectural Styles and the Design of Network-based Software ArchitecturesにRESTfulとみなされるための定義が書かれている 第一にサービス提供者と利用者のやり取りがモデル化されていること、が定義となる
-
Swagger
-
GraphQL