テクノロジー 開発 非公開: 5 分以内で説明する API アーキテクチャ

5 分以内で説明する API アーキテクチャ

API またはアプリケーション プログラミング インターフェイスは、ほとんどのソフトウェア アーキテクチャの不可欠なコンポーネントです。これにより、さまざまなソフトウェアやサービスが効率的に相互に通信できるようになります。

API は、必要な機能を多数公開し、機密データやプライベート データを抽象化することで、抽象化の感覚を提供します。認証と認可により、不正なアクセスやデータの改ざんから API を保護できます。

ソフトウェア開発者はさまざまな API を活用して、構造化された方法でソフトウェア システムを構築、テスト、最適化します。これにより、事前定義されたルールまたはプロトコルのセットを通じてソフトウェア システムと対話できるようになります。

APIゲートウェイとは何ですか?

ソフトウェア システムでは、ほとんどの場合、ソフトウェアが提供するすべてのサービスを処理する API が 1 つだけあるわけではありません。むしろ、クライアントにデータを送信するために相互に連携して通信する多数の API があります。

API ゲートウェイは、名前が示すように、さまざまな API リクエストのエントリ ポイントとして機能し、リクエストを特定の API サービスまたはマイクロサービスにルーティングします。これにより、複数の API リクエストをクライアントから API ゲートウェイに送信する負荷が転送され、クライアントのパフォーマンスが向上します。

たとえば、食品配達アプリケーションには、レストラン、ユーザー、ベンダー評価、配達パートナー評価、ルーティング アルゴリズム、地図サービスなどのための多数のマイクロサービスがあります。したがって、クライアント、つまりエンド ユーザー アプリケーションが単一の API をリクエストし、その API ゲートウェイがリクエストを関連するマイクロサービスにルーティングする方がはるかに合理的です。

API ゲートウェイを実装することで得られるもう 1 つの大きな利点はセキュリティです。複数の認証および認可システムをセットアップして、攻撃者によるリソースの悪用を防ぐことができます。

API アーキテクチャの構成要素

API アーキテクチャにはいくつかの構成要素があり、その一部をここにリストします。

#1. APIインターフェース

API インターフェイスは、実装の詳細を明かさずにアクセスできるメソッドや機能を明確に定義します。これは、リソースを取得または変更するために使用する必要がある一連のルールと方法論を定義します。

たとえば、RESTful API には、リソースと対話するための GET、PUT、POST、DELETE などの HTTP メソッドがあります。

#2. ルートコントローラー

コントローラーは、複数のクライアントからのすべての API トラフィックを処理し、関連する API サービスにルーティングするため、API ゲートウェイで重要な役割を果たします。

それに加えて、コントローラーはリクエストの検証、レスポンスの処理、認証などを実行することもできます。

#3. データアクセスモデル

データベース内のすべてのリソースには特定のタイプの構造または形状があるため、検証の目的でその構造を事前に定義することをお勧めします。スキーマとも呼ばれます。クライアントからのペイロードはスキーマに対して検証され、データベースに追加されます。

これにより、無効なデータや改ざんされたデータがデータベースに入るのを防ぎます。

API アーキテクチャのコンポーネント

  • API サービス : これらは、特定のリソースまたは一連のリソースへのアクセスを提供するサービスです。大規模なアプリケーションでは複数の API サービスが必要です。これらのサービスは相互に分離されており、リソースを独立して管理します。
  • ドキュメント : API ドキュメントは、開発者が API と API が公開するメソッドの効果的な使用法を理解するために必要です。ドキュメントには、エンドポイントのリスト、ベスト プラクティス、リクエスト形式、エラー処理などが含まれる場合があります。
  • 分析とモニタリング : 分析ダッシュボードは、API トラフィック、エラー率、パフォーマンスなどの多くの洞察を提供するため、重要なコンポーネントです。

一般的に使用される API 設計アーキテクチャ

REST – 表現状態の転送

REST は、HTTP プロトコルを使用し、クライアントとサーバー間のステートレス通信を可能にする API アーキテクチャ スタイルです。

REST では、リソースは URL によって識別され、リソースごとに特定のエンドポイントがあります。 REST は GET, PUT, POST, などの HTTP メソッドに依存してリソースを変更および作成します。 REST アーキテクチャを実装する API は、RESTful API と呼ばれます。

SOAP – シンプル オブジェクト アクセス プロトコル

SOAP は、XML に基づくメッセージング プロトコルです。 SOAP のメッセージは XML ドキュメントにエンコードされ、SOAP 送信者から SOAP 受信者に転送できます。メッセージが受信者に到達する前に通過できるサービスが 1 つ以上存在する場合があります。

SOAP と REST の主な違いは、REST は HTTP に依存するアーキテクチャ設計であるのに対し、SOAP 自体は HTTP、SMTP などのさまざまな基礎となるプロトコルを使用できるプロトコルであることです。SOAP の応答データ形式は XML です。

gRPC – Google リモート プロシージャ コール

リモート プロシージャ コール (RPC) は、リモート サーバー上の関数がローカルに呼び出されたかのようにクライアントによって呼び出される手法です。 gRPC は、Google によって開発されたオープンソース フレームワークです。これは、言語に依存しない構造化データの書き込みおよびエンコード方法であるプロトコル バッファー (プロトコル バッファー) を使用します。

プロトバッファ内のデータは gRPC コンパイラによってコンパイルされ、相互運用可能になります。たとえば、クライアント コードが Java で記述され、サーバー コードが Go で記述されている場合、プロトバッファに指定されたデータは両方の言語と互換性があります。

グラフQL

GraphQL は、API を構築するためのオープンソースのクエリ言語およびランタイムです。これにより、クライアントは単一のエントリ ポイントまたはエンドポイントにアクセスすることで複数のリソースにアクセスできるようになります。特定のリソースは特定のエンドポイントに関連付けられていません。リクエストクエリで指定した内容が取得されます。

特定のクエリに対して厳密に型指定されたスキーマと、そのクエリに対して実行されるリゾルバー関数を定義する必要があります。リソースを変更するには、GraphQL で指定する必要があるミューテーション クエリがあります。

API アーキテクチャの導入 – ベスト プラクティス

API アーキテクチャをどれほど適切に設計したとしても、実稼働環境で障害が発生すれば意味がありません。現実世界のシナリオに従って提供する必要があります。 API アーキテクチャを本番環境で使用できるようにするための重要なプラクティスをいくつか示します。

✅ APIゲートウェイを使用する

API ゲートウェイは、API クエリの効果的なルーティングを支援します。 API ゲートウェイはセキュリティと検証も処理できます。

✅ APIテストを実行する

リリース前に、API が包括的な機能、統合、パフォーマンスのテストを受けていることを確認してください。自動テストのフレームワークは、この手順の合理化に役立ちます。

✅ スケーラビリティに重点を置く

増大するトラフィック需要を管理できるスケーラブルな API アーキテクチャを作成します。需要に基づいて API インスタンスの数を動的に変更するには、自動スケーリング技術の採用を検討してください。

✅ ホスティングを賢く選択する

増加するトラフィックと顧客の需要に対処するためのスケーラブルなソリューションを提供するホスティング プロバイダーを検討してください。負荷分散、自動スケーリング、必要に応じてより多くのリソースを割り当てる柔軟性などの機能に注目してください。

特に需要が高い時期には、ホスティング プロバイダーが API のパフォーマンス仕様に適合していることを確認してください。また、ビジネス ニーズに合う場合は、サーバーレス オプションを検討してください。

適切な API アーキテクチャを選択するには?

API アーキテクチャの選択は、次の考慮事項によって決まります。

  • ビジネス要件 : API を使用して達成する必要があるビジネス目標を分析し、アプリケーション フローを理解します。
  • ユースケース : そもそもなぜ API が必要なのかという質問をすることは、非常に役立ちます。さまざまなユースケースを理解すると、API アーキテクチャの設計や選択を改善するのに役立ちます。
  • スケーラビリティ : 繰り返しになりますが、ビジネス要件とユースケースを理解することは、パフォーマンスを備えたスケーラブルな API アーキテクチャを設計するのに役立ちます。
  • 開発者エクスペリエンス : API アーキテクチャが理解しやすいものであることを確認し、新しくオンボーディングされた開発者が手間をかけずに簡単に理解できるようにします。
  • セキュリティ : API アーキテクチャの最も重要な側面はおそらくセキュリティです。 API アーキテクチャが十分に安全であり、プライバシー法に準拠していることを確認してください。

次に、API アーキテクチャの設計スキルを向上させるための学習リソースを検討します。

学習リソース

#1. API アーキテクチャの習得: API ベースのシステムの設計、運用、進化

この本は、API の基礎を学び、API を設計、構築、テストする実践的な方法を探るのに役立ちます。

プレビュー 製品 評価 価格
API アーキテクチャの習得: API ベースのシステムの設計、運用、進化 API アーキテクチャの習得: API ベースのシステムの設計、運用、進化 $39.99

また、API システムの操作、構成、デプロイ方法についても説明します。この本では、API ゲートウェイ、サービス メッシュ、セキュリティ、TLS、OAuth2 から進化する既存システムに至るまで、あらゆるものをカバーしています。

#2. ソフトウェア アーキテクチャ: REST API 設計 – 完全ガイド

「ソフトウェアアーキテクチャ: REST API 設計 - 完全ガイド」 - REST API udemy コース
「ソフトウェアアーキテクチャ: REST API 設計 – 完全ガイド」 – REST API udemy コース

RESTful API とその設計方法について学ぶことに興味がある場合は、 ソフトウェア アーキテクチャに関するこのコース が最適です。

認証、認可、REST API の文書化、API 設計をさらに最適化するためのさまざまなパフォーマンス手法について説明します。これの優れている点は、HTTP の基本と Postman API テスト ツールをカバーしていることです。

#3. REST APIの設計、開発、管理

「REST APIの設計、開発、管理」 - REST API Udemyコース
「REST APIの設計、開発、管理」 – REST API Udemyコース

Swagger、Apigee、Mulesoft などのさまざまな API 管理プラットフォームに関するチュートリアルが、この コース の主なハイライトです。このコースは、REST API のアプリケーションを検討し、その設計に興味がある人を対象としています。

#4. RESTful API の設計: API の設計をゼロから学ぶ

RESTful APIの設計: APIをゼロから設計する方法を学ぶ - REST API Udemyコース
RESTful APIの設計: APIをゼロから設計する方法を学ぶ – REST API Udemyコース

REST API を最初から作成することは、 RESTful API の設計に関するこのコース で得られる内容です。リクエスト、レスポンス、API 設計、操作など、役立つトピックがいくつか取り上げられています。まだ REST の基礎を学んでいる初心者であれば、それを選択するべきだと思います。

最後の言葉

統合のニーズ、パフォーマンスの考慮事項、セキュリティ要件、将来のスケーラビリティと拡張性を考慮して、ビジネス目標と技術目標に従って最適な API アーキテクチャを選択できます。

次に、これらのコースとリソースを利用してソフトウェア テストのキャリアをスタートさせましょう。

「 5 分以内で説明する API アーキテクチャ」についてわかりやすく解説!絶対に観るべきベスト2動画

DroidKaigi 2022 – アプリ アーキテクチャ ガイドの解説 | Saryong Kang [JA]
APIとは?|仕組みやどんなAPIあるのかなど、図解を使って3分でわかりやすく解説します

API またはアプリケーション プログラミング インターフェイスは、ほとんどのソフトウェア アーキテクチャの不可欠なコンポーネントです。これにより、さまざまなソフトウェアやサービスが効率的に相互に通信できるようになります。

API は、必要な機能を多数公開し、機密データやプライベート データを抽象化することで、抽象化の感覚を提供します。認証と認可により、不正なアクセスやデータの改ざんから API を保護できます。

ソフトウェア開発者はさまざまな API を活用して、構造化された方法でソフトウェア システムを構築、テスト、最適化します。これにより、事前定義されたルールまたはプロトコルのセットを通じてソフトウェア システムと対話できるようになります。

APIゲートウェイとは何ですか?

ソフトウェア システムでは、ほとんどの場合、ソフトウェアが提供するすべてのサービスを処理する API が 1 つだけあるわけではありません。むしろ、クライアントにデータを送信するために相互に連携して通信する多数の API があります。

API ゲートウェイは、名前が示すように、さまざまな API リクエストのエントリ ポイントとして機能し、リクエストを特定の API サービスまたはマイクロサービスにルーティングします。これにより、複数の API リクエストをクライアントから API ゲートウェイに送信する負荷が転送され、クライアントのパフォーマンスが向上します。

たとえば、食品配達アプリケーションには、レストラン、ユーザー、ベンダー評価、配達パートナー評価、ルーティング アルゴリズム、地図サービスなどのための多数のマイクロサービスがあります。したがって、クライアント、つまりエンド ユーザー アプリケーションが単一の API をリクエストし、その API ゲートウェイがリクエストを関連するマイクロサービスにルーティングする方がはるかに合理的です。

API ゲートウェイを実装することで得られるもう 1 つの大きな利点はセキュリティです。複数の認証および認可システムをセットアップして、攻撃者によるリソースの悪用を防ぐことができます。

API アーキテクチャの構成要素

API アーキテクチャにはいくつかの構成要素があり、その一部をここにリストします。

#1. APIインターフェース

API インターフェイスは、実装の詳細を明かさずにアクセスできるメソッドや機能を明確に定義します。これは、リソースを取得または変更するために使用する必要がある一連のルールと方法論を定義します。

たとえば、RESTful API には、リソースと対話するための GET、PUT、POST、DELETE などの HTTP メソッドがあります。

#2. ルートコントローラー

コントローラーは、複数のクライアントからのすべての API トラフィックを処理し、関連する API サービスにルーティングするため、API ゲートウェイで重要な役割を果たします。

それに加えて、コントローラーはリクエストの検証、レスポンスの処理、認証などを実行することもできます。

#3. データアクセスモデル

データベース内のすべてのリソースには特定のタイプの構造または形状があるため、検証の目的でその構造を事前に定義することをお勧めします。スキーマとも呼ばれます。クライアントからのペイロードはスキーマに対して検証され、データベースに追加されます。

これにより、無効なデータや改ざんされたデータがデータベースに入るのを防ぎます。

API アーキテクチャのコンポーネント

  • API サービス : これらは、特定のリソースまたは一連のリソースへのアクセスを提供するサービスです。大規模なアプリケーションでは複数の API サービスが必要です。これらのサービスは相互に分離されており、リソースを独立して管理します。
  • ドキュメント : API ドキュメントは、開発者が API と API が公開するメソッドの効果的な使用法を理解するために必要です。ドキュメントには、エンドポイントのリスト、ベスト プラクティス、リクエスト形式、エラー処理などが含まれる場合があります。
  • 分析とモニタリング : 分析ダッシュボードは、API トラフィック、エラー率、パフォーマンスなどの多くの洞察を提供するため、重要なコンポーネントです。

一般的に使用される API 設計アーキテクチャ

REST – 表現状態の転送

REST は、HTTP プロトコルを使用し、クライアントとサーバー間のステートレス通信を可能にする API アーキテクチャ スタイルです。

REST では、リソースは URL によって識別され、リソースごとに特定のエンドポイントがあります。 REST は GET, PUT, POST, などの HTTP メソッドに依存してリソースを変更および作成します。 REST アーキテクチャを実装する API は、RESTful API と呼ばれます。

SOAP – シンプル オブジェクト アクセス プロトコル

SOAP は、XML に基づくメッセージング プロトコルです。 SOAP のメッセージは XML ドキュメントにエンコードされ、SOAP 送信者から SOAP 受信者に転送できます。メッセージが受信者に到達する前に通過できるサービスが 1 つ以上存在する場合があります。

SOAP と REST の主な違いは、REST は HTTP に依存するアーキテクチャ設計であるのに対し、SOAP 自体は HTTP、SMTP などのさまざまな基礎となるプロトコルを使用できるプロトコルであることです。SOAP の応答データ形式は XML です。

gRPC – Google リモート プロシージャ コール

リモート プロシージャ コール (RPC) は、リモート サーバー上の関数がローカルに呼び出されたかのようにクライアントによって呼び出される手法です。 gRPC は、Google によって開発されたオープンソース フレームワークです。これは、言語に依存しない構造化データの書き込みおよびエンコード方法であるプロトコル バッファー (プロトコル バッファー) を使用します。

プロトバッファ内のデータは gRPC コンパイラによってコンパイルされ、相互運用可能になります。たとえば、クライアント コードが Java で記述され、サーバー コードが Go で記述されている場合、プロトバッファに指定されたデータは両方の言語と互換性があります。

グラフQL

GraphQL は、API を構築するためのオープンソースのクエリ言語およびランタイムです。これにより、クライアントは単一のエントリ ポイントまたはエンドポイントにアクセスすることで複数のリソースにアクセスできるようになります。特定のリソースは特定のエンドポイントに関連付けられていません。リクエストクエリで指定した内容が取得されます。

特定のクエリに対して厳密に型指定されたスキーマと、そのクエリに対して実行されるリゾルバー関数を定義する必要があります。リソースを変更するには、GraphQL で指定する必要があるミューテーション クエリがあります。

API アーキテクチャの導入 – ベスト プラクティス

API アーキテクチャをどれほど適切に設計したとしても、実稼働環境で障害が発生すれば意味がありません。現実世界のシナリオに従って提供する必要があります。 API アーキテクチャを本番環境で使用できるようにするための重要なプラクティスをいくつか示します。

✅ APIゲートウェイを使用する

API ゲートウェイは、API クエリの効果的なルーティングを支援します。 API ゲートウェイはセキュリティと検証も処理できます。

✅ APIテストを実行する

リリース前に、API が包括的な機能、統合、パフォーマンスのテストを受けていることを確認してください。自動テストのフレームワークは、この手順の合理化に役立ちます。

✅ スケーラビリティに重点を置く

増大するトラフィック需要を管理できるスケーラブルな API アーキテクチャを作成します。需要に基づいて API インスタンスの数を動的に変更するには、自動スケーリング技術の採用を検討してください。

✅ ホスティングを賢く選択する

増加するトラフィックと顧客の需要に対処するためのスケーラブルなソリューションを提供するホスティング プロバイダーを検討してください。負荷分散、自動スケーリング、必要に応じてより多くのリソースを割り当てる柔軟性などの機能に注目してください。

特に需要が高い時期には、ホスティング プロバイダーが API のパフォーマンス仕様に適合していることを確認してください。また、ビジネス ニーズに合う場合は、サーバーレス オプションを検討してください。

適切な API アーキテクチャを選択するには?

API アーキテクチャの選択は、次の考慮事項によって決まります。

  • ビジネス要件 : API を使用して達成する必要があるビジネス目標を分析し、アプリケーション フローを理解します。
  • ユースケース : そもそもなぜ API が必要なのかという質問をすることは、非常に役立ちます。さまざまなユースケースを理解すると、API アーキテクチャの設計や選択を改善するのに役立ちます。
  • スケーラビリティ : 繰り返しになりますが、ビジネス要件とユースケースを理解することは、パフォーマンスを備えたスケーラブルな API アーキテクチャを設計するのに役立ちます。
  • 開発者エクスペリエンス : API アーキテクチャが理解しやすいものであることを確認し、新しくオンボーディングされた開発者が手間をかけずに簡単に理解できるようにします。
  • セキュリティ : API アーキテクチャの最も重要な側面はおそらくセキュリティです。 API アーキテクチャが十分に安全であり、プライバシー法に準拠していることを確認してください。

次に、API アーキテクチャの設計スキルを向上させるための学習リソースを検討します。

学習リソース

#1. API アーキテクチャの習得: API ベースのシステムの設計、運用、進化

この本は、API の基礎を学び、API を設計、構築、テストする実践的な方法を探るのに役立ちます。

プレビュー 製品 評価 価格
API アーキテクチャの習得: API ベースのシステムの設計、運用、進化 API アーキテクチャの習得: API ベースのシステムの設計、運用、進化 $39.99

また、API システムの操作、構成、デプロイ方法についても説明します。この本では、API ゲートウェイ、サービス メッシュ、セキュリティ、TLS、OAuth2 から進化する既存システムに至るまで、あらゆるものをカバーしています。

#2. ソフトウェア アーキテクチャ: REST API 設計 – 完全ガイド

「ソフトウェアアーキテクチャ: REST API 設計 - 完全ガイド」 - REST API udemy コース
「ソフトウェアアーキテクチャ: REST API 設計 – 完全ガイド」 – REST API udemy コース

RESTful API とその設計方法について学ぶことに興味がある場合は、 ソフトウェア アーキテクチャに関するこのコース が最適です。

認証、認可、REST API の文書化、API 設計をさらに最適化するためのさまざまなパフォーマンス手法について説明します。これの優れている点は、HTTP の基本と Postman API テスト ツールをカバーしていることです。

#3. REST APIの設計、開発、管理

「REST APIの設計、開発、管理」 - REST API Udemyコース
「REST APIの設計、開発、管理」 – REST API Udemyコース

Swagger、Apigee、Mulesoft などのさまざまな API 管理プラットフォームに関するチュートリアルが、この コース の主なハイライトです。このコースは、REST API のアプリケーションを検討し、その設計に興味がある人を対象としています。

#4. RESTful API の設計: API の設計をゼロから学ぶ

RESTful APIの設計: APIをゼロから設計する方法を学ぶ - REST API Udemyコース
RESTful APIの設計: APIをゼロから設計する方法を学ぶ – REST API Udemyコース

REST API を最初から作成することは、 RESTful API の設計に関するこのコース で得られる内容です。リクエスト、レスポンス、API 設計、操作など、役立つトピックがいくつか取り上げられています。まだ REST の基礎を学んでいる初心者であれば、それを選択するべきだと思います。

最後の言葉

統合のニーズ、パフォーマンスの考慮事項、セキュリティ要件、将来のスケーラビリティと拡張性を考慮して、ビジネス目標と技術目標に従って最適な API アーキテクチャを選択できます。

次に、これらのコースとリソースを利用してソフトウェア テストのキャリアをスタートさせましょう。

「 5 分以内で説明する API アーキテクチャ」についてわかりやすく解説!絶対に観るべきベスト2動画

DroidKaigi 2022 – アプリ アーキテクチャ ガイドの解説 | Saryong Kang [JA]
APIとは?|仕組みやどんなAPIあるのかなど、図解を使って3分でわかりやすく解説します