O’REILLY Learning「Mastering API Architecture」2〜5

https://learning.oreilly.com/library/view/mastering-api-architecture/9781492090625/

Chapter 2. Testing APIs

Test Quadrant
https://lisacrispin.com/2011/11/08/using-the-agile-testing-quadrants/

Test Pyramid
テストピラミッドは、実施すべきテストの割合の目安。

Contract Testing
Producer contracts
Consumer-driven contracts

Pact
https://pact.io/
Webアプリ、API、マイクロサービスを統合するための高速、簡単、信頼性の高いテスト

API Component Testing
API Integration Testing
End-to-End Testing

Part II. API Traffic Management

Chapter 3. API Gateways: Ingress Traffic Management

・プロキシサーバー
 複数のクライアントからのコンテンツ要求をインターネット上の異なるサーバーに転送する仲介サーバー。
・フォワードプロキシ
 クライアントを保護するために使用します。
・リバースプロキシサーバー
 通常プライベートネットワーク内のファイアウォールの後ろに置かれ、クライアント要求を適切なバックエンドサーバーに転送。
 リバースプロキシはサーバーの保護を目的としています。

APIゲートウェイは通常システムのエッジにデプロイされる。

APIゲートウェイの近現代史
1990年代以降:ハードウエアロードバランサー
2000年代前半以降ソフトウェアロードバランサー
2000年代半ばアプリケーションデリバリーコントローラー(ADC)
2010年代前半第一世代APIゲートウェイ
2015年オンワード第2世代APIゲートウェイ

Traditional Enterprise Gateways
Microservices/Micro Gateways
Service Mesh Gateways

Chapter 4. Service Mesh: Service-to-Service Traffic Management

「サービスメッシュ」とは、 分散型ソフトウェアシステム内のすべてのサービス間(またはアプリケーション間)通信を管理するためのパターン。
サービス間通信のトラフィック管理(ルーティング)、回復力、観測性、セキュリティの提供に重点を置いている。

コントロールプレーンとデータプレーンという2つのハイレベルな基本コンポーネント。

サービスメッシュ は、内部ネットワークやクラスタ内に配置される。

Part III. API Operations and Security

Chapter 5. Deploying and Releasing APIs

Thoughtworksテクノロジーレーダー2016
継続的デリバリーの導入は、多くの組織にとって引き続き課題であり、デプロイメントをリリースから切り離すなどの有用なテクニックを強調することが重要です。
アプリケーションコンポーネントやインフラストラクチャに変更を展開する行為を指す場合は、デプロイメントという用語を厳密に使用することをお勧めします。
リリースという用語は、機能変更がエンドユーザーにリリースされ、ビジネスへの影響がある場合に使用する必要があります。
フィーチャートグルやダークローンチなどのテクニックを使えば、機能をリリースすることなく、より頻繁に本番システムに変更をデプロイすることができます。
より頻繁にデプロイすることで、変更に伴うリスクを低減し、ビジネス利害関係者は、機能がエンドユーザーにリリースされるタイミングをコントロールすることができます。

APIライフサイクル(PayPal API標準より引用)
Planned
Beta
Live
Deprecated
Retired

URLでバージョンを追加すること
GET /v1/attendees

リリース戦略
・Canary Releases
・Traffic Mirroring
・Blue-Green

成功のためのモニタリングと失敗の特定
オブザーバビリティの3本柱
・Metrics
・Logs
・Traces

memoO'REILLY Learning

Posted by shi-n