NGINX Full Version

APIファーストのアプローチによるマイクロサービス構築のメリット

APIは、クラウドネイティブアプリケーションの結合組織であり、アプリケーションのコンポーネントであるマイクロサービスが通信するための手段です。アプリケーションが成長および拡張すると、マイクロサービスやAPIの数も増えます。これは、ほとんどの場合、避けられない結果であり、最新アプリケーションの信頼性、スケーラビリティおよびセキュリティの確保を担当するPlatform Opsチームに対して大きな課題をもたらします。私たちはこの問題をAPIスプロールと呼び、以前のブログ記事でも触れています。

APIスプロールを解決しようとする組織が最初にすることは、APIの検出と修正の自動化のためのツールを実装してトップダウンのアプローチを試みることかもしれません。これは、短期的には効果的ですが、多くの場合、APIやマイクロサービスの構築と運用を担当するチームに過度の負担を強いることになります。これらのチームは、セキュリティとコンプライアンスの問題に対処するために、既存のマイクロサービスやAPIを作り直すか、あるいは必要な承認を得るために困難なレビュープロセスを実施しなければなりません。そのため、多くの大規模なソフトウェア組織は、適応型ガバナンスを使用する分散型アプローチを採用して、開発者に必要な自律性を与えています

土壇場で安全策を講じるよりも、ボトムアップのアプローチで問題に取り組む方が、長期的には効果的です。さまざまなマイクロサービスやアプリケーションのAPIを構築および運用するチームが必ず参加して、多くの場合、組織内のソフトウェア開発にAPIファーストのアプローチを採用することから始めます。

APIファーストとは

APIは何10年も前から存在しています。しかし、APIはもはや単なる「アプリケーションプログラミングインターフェイス」ではありません。APIの本質は、開発者インターフェイスです。他のユーザーインターフェイスと同様、APIにも計画、設計およびテストが必要です。APIファーストとは、APIを運用および使用するすべてのチームで接続性とシンプルさの重要性を認識し、それを優先することです。ほとんどの場合は開発者ですが、APIコンシューマにとってのコミュニケーション、再利用性および機能性が優先されます。

APIファーストへの道はたくさんありますが、APIファーストを目指すほとんどの企業にとっての最終目標は、設計主導によるソフトウェア開発アプローチです。実際、このアプローチは、実装前にAPIが完全に定義されていることを意味します。作業は、APIがどのように機能するかを設計および文書化することから始まります。チームは、一般的にAPIコントラクトと呼ばれる結果の成果物を頼りに、アプリケーションの機能をどのように実装するかを知らせます。

耐久性と柔軟性を兼ね備えたソフトウェア開発へのAPIファーストアプローチをサポートする設計技法については、NGINX提供のO’ReillyのeBook『Mastering API Architecture(APIアーキテクチャについて学ぶ)』の第1章をご覧ください。

組織におけるAPIファーストの価値

APIファースト戦略は、多くの場合、マイクロサービスアーキテクチャに理想的です。その理由は、アプリケーションエコシステムをモジュール式の再利用可能なシステムとして開始できるためです。APIファーストのソフトウェア開発モデルを採用することで、開発者と組織の双方に以下のような大きなメリットをもたらします。

全体として、APIファーストのアプローチを採用することは、企業がより柔軟で、スケーラブルかつ安全なマイクロサービスアーキテクチャを構築するために役立ちます。

API共通仕様の採用は何に役立つか

一般的な企業のマイクロサービスやAPI環境では、Platform Opsチームが通常では把握しきれないほどのコンポーネントが使用されています。標準の機械判読可能なAPI仕様を受け入れ、採用することで、チームはその環境で現在稼働しているAPIを理解および監視して、意思決定することができます。

また、API共通仕様を採用することで、APIの設計段階での利害関係者との連携を改善できます。APIコントラクトを作成し、それを標準仕様に形式化することで、すべての利害関係者が、APIがどのように機能するかについて共通の認識を持つことができます。また、再利用可能な定義や機能をチーム間で共有しやすくなります。

現在、以下の3つのAPI共通仕様があり、それぞれがほとんどの種類のAPIをサポートしています。

REST APIは現在の本番環境にあるAPIの大部分を構成しています。OpenAPI仕様は、REST APIのAPI定義を記述するための標準的な方法であり、特定のAPIがどのように機能するかを記述する、機械判読可能なAPIコントラクトを提供します。OpenAPI仕様は、NGINXを含むさまざまなAPI管理およびAPIゲートウェイツールにより広くサポートされています。このブログではここから、いくつかの重要なユースケースを達成するためにOpenAPI仕様をどのように使用できるかに焦点を当てます。

OpenAPI仕様は、JSONまたはYAMLでAPIを定義するためのオープンソースフォーマットです。以下の簡単なAPIの例で説明するように、幅広いAPI特性を含めることができます。この単純なHTTP GETリクエストは、架空の食料品リストの品目一覧を返します。

openapi: 3.0.0
info:
  version: 1.0.0
  title: Grocery List API
  description: An example API to illustrate the OpenAPI Specification

servers:
url: https://api.example.io/v1

paths:
  /list:
    get:
      description: Returns a list of stuff on your grocery list
      responses:
        '200':
          description: Successfully returned a list
          content:
            schema:
              type: array
              items:
                type: object
                properties:
                   item_name:
                      type: string

OpenAPI仕様に従った定義は、人間でも機械でも判読可能です。これは、各APIがどのように機能するかを文書化した単一の信頼できる情報源があることを意味していて、このことは、多くのチームでAPIを構築および運用する組織では特に重要です。もちろん、APIを大規模に管理、統制および保護するためには、APIゲートウェイ、開発者ポータル、高度なセキュリティなど、APIプラットフォームの残りのツールもOpenAPI仕様に対応している必要があります。

Mastering API Architecture(APIアーキテクチャについて学ぶ)』の第1章では、OpenAPI仕様を使ってREST APIを設計する方法について詳しく説明しています。

API共通仕様の採用によるメリット

OpenAPI仕様のようなAPI共通仕様を採用することには、以下のようないくつかのメリットがあります。

全体として、API共通仕様を使うことは、APIの相互運用性、文書化、テスト、セキュリティ、そして漸進的な進化の改善に役立ちます。

NGINXがAPIファーストのソフトウェア開発をサポートする方法

NGINXは、APIの大規模な運用、監視、統制、保護を簡単にする軽量のクラウドネイティブツールセットを提供します。たとえば、F5 NGINX Management Suiteの一部であるAPI Connectivity Managerは、API運用の一元管理機能を提供します。これにより、APIゲートウェイや開発者ポータルを構成および管理できます。すべての機能は、APIファーストのツール自体であるため、REST API経由でアクセスでき、DevOpsチームのCI/CDの自動化と統合が簡単になります。

OpenAPI仕様により、NGINX製品を使用して次のことが可能になります。

OpenAPI仕様を使用して、APIゲートウェイにAPIを公開し、開発者ポータルにドキュメントを公開して、CI/CDパイプラインまたはユーザーインターフェイス経由でWAFのセキュリティポリシーを設定します。

APIゲートウェイへのAPIの公開

API Connectivity Managerは、OpenAPI仕様を使用してAPIの公開と管理を合理化します。API開発者は、NGINX Management Suiteのユーザーインターフェイスまたは完全宣言型のREST APIのいずれかを使用して、APIゲートウェイにAPIを公開できます。APIは、APIプロキシとしてゲートウェイに追加されます。APIプロキシは、APIゲートウェイが受信APIリクエストをバックエンドのマイクロサービスに送るために必要なすべてのイングレス、バックエンドおよびルーティングの設定を含みます。REST APIを使用して、Ansibleなどのツールで簡単なCI/CD自動化スクリプトを作成することで、APIをコードとして導入および管理できます。

OpenAPI仕様を使用してAPIを公開する完全な手順については、API Connectivity Managerのドキュメントを参照してください。

開発者ポータル用のAPIドキュメントの生成

ドキュメントの保守は、APIチームの悩みの種となることがよくあります。しかし、開発者ポータル上の古くなったドキュメントは、APIスプロールの主要な症状でもあります。API Connectivity Managerは、OpenAPI仕様を使用して自動的にドキュメントを生成し、開発者ポータルに公開することで、API開発者の時間を節約し、APIコンシューマが必要なものを必ず発見できるようにします。OpenAPI仕様のファイルは、API Connectivity ManagerのユーザーインターフェイスまたはREST APIを介して直接アップロードできます。

APIドキュメントを開発者ポータルに公開する完全な手順については、API Connectivity Managerのドキュメントを参照してください。

ポジティブセキュリティの適用によるAPIエンドポイントの保護

OpenAPI仕様を使用して、NGINX Plus APIゲートウェイへのAPIリクエストがAPIのサポート内容に準拠していることを確認することもできます。ポジティブセキュリティ(許可するものを定義し、それ以外をブロックするセキュリティモデル)を適用することで、悪意のあるリクエストがバックエンドサービスの潜在的な脆弱性を調査できないように防ぐことができます。

この記事の作成時点では、API Connectivity Managerを使用してNGINX App Protect WAFを設定することはできませんが、この機能は2023年後半に利用可能となる予定です。しかし、Instance Manager(別のNGINX Management Suiteモジュール)とOpenAPI仕様を使用して、WAFのカスタムポリシーを記述することができます。詳しくは、NGINX App Protect WAFおよびInstance Managerのドキュメントを参照してください。

APIセキュリティと脅威のモデル化、およびAPIゲートウェイで認証と認可を適用する方法については、『Mastering API Architecture(APIアーキテクチャについて学ぶ)』の第7章で詳しく説明されています。

まとめ

マイクロサービスやアプリケーションを構築するためのAPIファーストのアプローチは、多くの点で組織のメリットとなります。チームでOpenAPI仕様(または人間でも機械でも判読できる他のAPI共通仕様)を共有することで、チーム間のコラボレーション、コミュニケーション、運用が簡単になります。

最新アプリケーションは、複雑なクラウドネイティブ環境で動作しています。API運用におけるAPIファーストのアプローチを可能にするツールを採用することは、APIファースト戦略を実現するための重要なステップです。NGINXでは、OpenAPI仕様を使用することで、分散したチームや環境全体でAPIを大規模に管理できます。

NGINX Management Suiteの30日間無料トライアルを今すぐ始めましょう。API Connectivity Manager、APIゲートウェイとしてのNGINX Plus、APIを保護するNGINX App Protectを利用できます。