サードパーティとの連携 - APIとファイルのどちらを使うべきか
ユースケースに応じて適切な判断ができるように、『API を使ったサードパーティとの統合』と、『安全なファイル交換』を比較してみました。
サードパーティアプリとの統合は 自動的に相互作用ためにAPI(アプリケーションプログラミングインターフェース)を駆使した複数のアプリの関わりが典型的が形である。この API によって、2つのアプリ間でデータ交換が可能になり、最終的にユーザーの時間を画期な節約ができます。ただ、このような統合の構築には、避けられない代価があって、ベンダー、顧客、パートナーなど、サードパーティーなどの依存レイヤーが追加される事です。
少なくとも2つの当事者がインターフェースについて合意し、API や API を使うクライアントコードを開発、デプロイし、アプリに抜け穴がないか安全性の確認が必要になります。それに加えて、統合を維持するために、両方のアプリに更新やアップグレードの度に、毎回確実に動作するようにする必要があります。
『API プロバイダ』と『APIコンシューマ』の関係におけるあなたの役割によっては、インターフェース、データ構造、サイバーセキュリティ、各種規制法への準拠など、相手が要求するあらゆる種類の標準を遵守することが求められるかもしれません。
レガシーシステムの運用企業との取引では、データ交換に最新の REST APIではなく、安全なファイル共有の使用が求められるケースもあります。
というわけで本記事では、API を介したサードパーティーの統合と、安全なファイル交換を比較してみましょう。
スピードとバルク操作
ほとんどの API は単一アイテムレベルで動作します:確かに、オブジェクトのリストを取得することはできますが、項目の作成、更新、削除などのアクションは、一般的にレコード単位の操作で行われます。これはAPI はレコードレベルでのリアルタイムな統合に適するという意味です。ただ、バルク操作に関してはAPIは一般的には対応していません。バルク操作には、クライアントがレコードを反復処理し、レコードごとに実行が必要で、必然的にバルク操作のAPIは長時間の実行とリスクが高いです。APIは整合性を担保するトランザクション操作(つまり「0か100か」)の概念にほとんど対応していないので、結局は作業は業務時間外に終わるかもしれません。
ファイル交換は、バルクレベルの統合を利用する場合に最も効果的です。例えば他のアプリで処理される新規または更新されたレコードのファイルを毎晩取得がそれです。最新のファイル交換では、ファイルがアップロードされたときに Webhook 通知が設定できるため、大量のデータにしろ1 つのレコードにしろファイル交換によるリアルタイムの統合は実現できます。
安全性
APIのセキュリティの確保には以下が必要です:
- 認証の仕組みを実装:認証の仕組みを利用しようとする利用者が、必ず本人である事を明確にする。
- 承認仕組みの実装:利用者が行いたい事、またはアクセスしたい項目に対して必ずその権限を持っている事を明確にする。
- 中間者(man-in-the-middle)の不意打ちを回避するために、クライアントとサーバー間で送信データは確実に暗号化されている。
認証には OAuth、認可には API スコープ、暗号化には HTTPS など、多くの規準があります。しかし、それらの実装には学習費用と技術的な負担があります。VPN、インバウンド ネットワーク ルールの要件、静的 IP (アウトバウンド ネットワーク ルールの設定に使用) などのその他のセキュリティ対策によって、アーキテクチャとデプロイプロセスに複雑さが加わります。
SFTP や FTPSなどの一般的なファイル交換プロトコルは、以下のようにプロトコル内にセキュリティ対策が組み込まれています:
- 認証は、ユーザーがフォルダーやファイルにアクセスするための権限という形で行われる。
- 公開鍵認証は、非常に安全であると考えられていますが、パスワード認証も使用できる。
- 有線でのデータ暗号化はプロトコルの一部であり、データの保護のために様々な強力な暗号が使われている。
- VPN、固定IPアドレス、ファイル交換に関わるインバウンドネットワークルールの追加は、非常に簡単である。
さらに、このようなプロトコルはずっと(20年以上)存在しているので、ほとんどすべての著名な CISO や IT 担当者はそれらに精通していると言ってもよく、(カスタムAPIとは異なり)確実に侵入できないようにするための大規模なセキュリティテストを必要としないでしょう。
相互運用性
定義上、HTTP ベースの API で相互運用性の発生が可能になります。つまり、さまざまな OS やプログラミング言語から API にアクセスできるであろうということです。ただAPI は、標準的なWebページで見つけた場合とは異なる動作をし、人が消費することを想定していません。
SFTPファイル交換は、どの OS からのアクセスも可能です。また、SFTPプロトコルを使ってリモートサーバー上のファイルにアクセスおよび管理するためのあらゆるプログラミング言語に利用可能なプログラミングライブラリもあります。また、CLI(コマンドラインインターフェース)を利用することで、一行のコードも書かずに処理を自動化できるため、上級者はこのようなデータ交換ポイントの利用を自動化することも可能です。最後に、API とは対照的に、FileZilla、WinSCP、Cyberduckなどの GUI(グラフィカルユーザーインターフェース)のクライアントでは、何かの問題やバグ発生の場合などの必要に応じて権限を持った人間もファイルにアクセスすることができるようになっています。
スケーラビリティ
多数の同時 API リクエストへの対応が必要な場合、どうなるでしょうか。APIサーバーのスケールアウトは、NLB(ネットワークロードバランサー)でサーバー間のトラフィックを分散させながら、より多くのウェブサーバーを投入で済ませることからかなり簡単に思えるかもしれません。しかし、これは通常の同時リクエスト打撃を受ける最初の層に過ぎません。一般的にAPI はデータベースに直接問い合わせたり更新したりするので、これが次のボトルネックになる可能性があります。さらに、1分あたり、1時間あたり、1日あたりのリクエスト数など、API の回数制限の管理は簡単ではありませんが、API に大量のリクエストが殺到してダウンするのを防ぐには必須の作業です。
通常のファイルサーバーではスケールアウトがより大変であり、NLBと相性が悪いことで別のネットワークエンドポイントに割り当てることになります。SFTP To Go のような最新のクラウドベースのソリューションだと、処理する同時セッション数に応じてスケールアップやダウンを行います。ストレージ自体には全サーバーから同時にアクセスできるため、実際にはサーバーレスソリューションとして扱うことができます。ちなみに、SFTP To Go は数百万の同時リクエストを処理可能なデザインではありませんが、数千の同時セッションの処理には問題ないため、Webフック通知と合わせたファイルベースのリクエストをタイムリーに消費・処理することが可能です。
コストとメンテナス
APIの開発や維持には、正しく安全に機能させるための定期的なメンテナンスのみならず専門的なプログラミングの知識が必要なため、コストがかかります。
ファイル交換は問題を完全に解決するわけではありません ー あなたに代わってデータを処理することはありませんが、サードパーティーとアプリの間で信頼性の高い非同期のデータ交換ポイントとして機能します。
設定も非常に簡単で、ほとんど何も設定する必要がありません。また、メンテナンスについても、マネージドサービスを利用することであなたが行う作業はほとんどありません。自分で導入する場合は、DIYとマネージドサービスの長所と短所を比較検討するようにしましょう。
柔軟性
ファイル交換とは異なり、API ではある種のインターフェースの実装が必要です。つまり、APIエンドポイントがどのような引数を入力として受け取り、何を返すかを確定することでインターフェースを厳格に定義するということです。一方、実装は完全にデベロッパーに委ねているため、提供機能は非常に柔軟です。
当事者間で交換の基本単位であるファイルのアップロード、ダウンロード、管理にはファイル交換がお役に立ちます。ファイルは、ユーザーやデータの種類ごとに指定したフォルダに格納されます。しかし、実際に格納されるファイルの内容には制限がなく、CSV、JSON、XML、テキスト、画像、動画など様々です。ファイルをダウンロードして処理し、合意された形式に準拠したデータが含まれていることを確認するのは当事者次第です。
SFTP To Goのご紹介
SFTP To Go は、高度なクラウドインフラを活用した安全なクラウドファイル保管・共有サービスで、データが通信中も保存中も確実に安全、かつ壊れません。
SFTP To Go のWeb UIとAPIを使って、認証情報とストレージへのアクセスを管理し、それによってあなたや周りのユーザーが SFTP、FTPS、S3、HTTPSなどの一般的なプロトコルを使ってファイルに安全にアクセスできます。
ファイルシステムの変更をトリガーとするWebフック通知を使えば、費用対効果の高いファイルベースのリアルタイムデータ統合を実現できます。
SFTP To Goでどのようにデータを簡単に統合できるかをご覧になりませんか?無料トライアルに サインアップ するか、または 弊社チームにご連絡いただき、ビジネスニーズと目標についてご相談ください。