6 種類の API アーキテクチャとその仕組み
サーバーと通信してデータを取得し、タスクを実行するさまざまな方法を学びましょう。
API は、明確なプロトコルとアーキテクチャを通じてアプリケーションを接続します。 API アーキテクチャは、ソフトウェア インターフェイスを作成するためのルールのフレームワークです。ルールは、ユーザーにサーバー機能を提供する方法を決定します。アーキテクチャのタイプによって、API を管理するルールと構造が決まります。
API アーキテクチャには、REST から RPC まで、さまざまな種類があります。それらの構造と構成について学ぶと、用途に合わせて選択するのに役立ちます。
1. 休息
REST API は最新であり、開発者が使用する最も人気のある API アーキテクチャです。 REST (表現状態転送) は、クライアント/サーバー アプリケーションの設計に使用されるアーキテクチャです。これはプロトコルや標準ではないため、さまざまな方法で実装できます。この側面により、開発者としての柔軟性が向上します。
REST を使用すると、データベースに保存されている要求されたデータにアクセスできます。 REST API を使用してコア CRUD 機能を実行できます。クライアントが RESTful API 経由でコンテンツをリクエストする場合、正しいヘッダーとパラメーターを使用する必要があります。ヘッダーには、ステータス コードや承認など、リソースを識別するための有用なメタデータが含まれています。
HTTP 経由で転送される情報は、JSON、HTML、XML、またはプレーン テキストのいずれかになります。 JSON は、REST API で最も一般的に使用されるファイル形式です。 JSON は言語に依存せず、人間が読み取ることができます。
2. 石鹸
Simple Object Access Protocol (SOAP) は、公式の API プロトコルです。 World Wide Web Consortium (W3C) は、最も初期の API アーキテクチャの 1 つである SOAP プロトコルを維持しています。その設計により、異なる言語やプラットフォームで構築されたアプリケーション間の通信が容易になります。
SOAP 形式は、Web サービス記述言語 (WSDL) を使用して API を記述します。これは、拡張マークアップ言語 (XML) で記述されています。この形式には、セキュリティ、一貫性、分離性、耐久性を高める組み込みのコンプライアンス標準が課せられます。これらのプロパティにより、SOAP が企業開発に適した信頼性の高いデータベース トランザクションが保証されます。
ユーザーが SOAP API を通じてコンテンツをリクエストすると、標準層プロトコルを通過します。応答は XML 形式であり、人間と機械が読み取ることができます。 REST API と同様に、SOAP API は情報をキャッシュ/ストアしません。後でデータが必要な場合は、別のリクエストを行う必要があります。
SOAP はステートフルとステートレスの両方のデータ交換をサポートします。
3. グラフQL
GraphQL は API のクエリ言語です。これは、定義されたデータのセットに基づいてクエリを実行するサーバー側のランタイムです。 GraphQL には特定の使用例があります。そのアーキテクチャにより、必要な特定の情報を宣言できます。
HTTP がクライアントのリクエストと応答を処理する REST アーキテクチャとは異なり、GraphQL はクエリでデータをリクエストします。 GraphQL サービスは、型とその型のフィールドを定義し、各フィールドと型に関数を提供します。
サービスは、検証して実行するための GraphQL クエリを受け取ります。まず、クエリをチェックして、定義されたタイプと定義されたフィールドを参照していることを確認します。次に、関連する関数を実行して、目的の結果を生成します。
GraphQL は、複数のソースからデータを取得するなどの特定のユースケースに最適です。データの取得を制御し、小型デバイスの帯域幅を調整することもできます。
4. アパッチカフカ
Apache Kafka は、イベント ストリーミングをサポートする分散プラットフォームです。イベント ストリーミングは、ソースからリアルタイムでデータをキャプチャするプロセスです。ソースには、データベース、サーバー、またはソフトウェア アプリケーションを使用できます。 Kafka システムはサーバーとクライアントで構成されます。通信は TCP ネットワーク プロトコルを通じて行われます。
システムはハードウェア、仮想マシン、コンテナ上にデプロイできます。これはオンプレミス環境でもクラウド環境でも実行できます。 Apache Kafka システムは、データをキャプチャし、リアルタイムで処理し、それに反応します。また、データをリアルタイムで希望の宛先にルーティングすることもできます。 Kafka は、後で取得して使用できるデータをシステムにキャプチャして保存します。
Kafka は、データの継続的なフローと統合をサポートします。これにより、情報が適切な場所に、適切なタイミングで確実に提供されます。イベント ストリーミングは、ライブ データ ストリームを必要とする多くのユースケースに適用できます。これらには、金融機関、医療、政府、運輸業界、コンピューター ソフトウェア会社が含まれます。
5. 非同期API
AsyncAPI は、イベント駆動型アーキテクチャの構築と維持を支援するオープンソースの取り組みです。その仕様には、OpenAPI 仕様と多くの共通点があります。 AsyncAPI は基本的に OpenAPI 仕様を適応および改良したものですが、いくつかの違いがあります。
AsyncAPI アーキテクチャは、REST API とイベント駆動型 API を組み合わせたものです。リクエストとレスポンスを処理するためのスキーマは、イベント API のスキーマと似ています。 AsyncAPI は、非同期アプリケーションを機械可読形式で記述および文書化するための仕様を提供します。ユーザーが実装を容易にするコードジェネレーターなどのツールも提供します。
AsyncAPI は、イベント駆動型アーキテクチャ (EDA) の現状を改善します。目標は、REST API と同様に EDA の操作を容易にすることです。 AsyncAPI イニシアティブは、イベント管理をサポートするドキュメントとコードを提供します。 REST API で使用されるプロセスの大部分は、イベント駆動型/非同期 API に適用されます。
AsyncAPI 仕様を使用してイベント駆動型システムを文書化することが重要です。イベント駆動型プロジェクトに取り組むチーム全体の一貫性と効率を管理し、維持します。
6. リモート プロシージャ コール (RPC)
RPC は、ネットワーク上の異なるプログラム間の通信を可能にするソフトウェア通信プロトコルです。たとえば、プログラムはネットワーク上の別のコンピュータに情報を要求できます。ネットワーク プロトコルに準拠する必要はありません。 RPC を使用すると、ローカル システムと同じようにリモート システム上のプロセスを呼び出すことができます。
RPC はクライアント/サーバー モデルで動作します。クライアント プログラムが要求し、サーバー プログラムがサービスで応答します。 RPC は同期して動作します。プログラムがリクエストを送信すると、サーバーから応答を受信するまで中断されたままになります。
RPC は分散システムに最適です。これらはコマンドベースのシステムに最適であり、パフォーマンスを向上させる軽量のペイロードを備えています。
適切な API アーキテクチャを選択する方法
適切な API アーキテクチャはユースケースによって異なります。アーキテクチャによって、API を開発する方法とその実行方法が決まります。 API のアーキテクチャ設計は、そのコンポーネントと対話を定義します。
API を設計および開発する前に、アーキテクチャに関する決定を下します。 API、層、ライフサイクル管理、およびセキュリティの技術要件を決定します。 API アーキテクチャ設計には構造レイヤーが含まれます。レイヤーは開発をガイドし、作成された API が意図した目的を確実に果たせるようにします。