JP2023540150A - 自動アプリケーションプログラミングインターフェース評価および移行のためのシステムおよび方法 - Google Patents

自動アプリケーションプログラミングインターフェース評価および移行のためのシステムおよび方法 Download PDF

Info

Publication number
JP2023540150A
JP2023540150A JP2021531922A JP2021531922A JP2023540150A JP 2023540150 A JP2023540150 A JP 2023540150A JP 2021531922 A JP2021531922 A JP 2021531922A JP 2021531922 A JP2021531922 A JP 2021531922A JP 2023540150 A JP2023540150 A JP 2023540150A
Authority
JP
Japan
Prior art keywords
api
group
metrics
manager
client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021531922A
Other languages
English (en)
Inventor
ウォン チョ,ナム
Original Assignee
クーパン コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by クーパン コーポレイション filed Critical クーパン コーポレイション
Publication of JP2023540150A publication Critical patent/JP2023540150A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3612Software analysis for verifying properties of programs by runtime analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/425Lexical analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/76Adapting program code to run in a different environment; Porting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • G06F9/44526Plug-ins; Add-ons
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/485Task life-cycle, e.g. stopping, restarting, resuming execution
    • G06F9/4856Task life-cycle, e.g. stopping, restarting, resuming execution resumption being on a different machine, e.g. task migration, virtual machine migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5072Grid computing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0893Assignment of logical groups to network elements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/12Network monitoring probes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/133Protocols for remote procedure calls [RPC]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45591Monitoring or debugging support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0894Policy-based network configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Mathematical Physics (AREA)
  • Computer Security & Cryptography (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Human Computer Interaction (AREA)
  • Debugging And Monitoring (AREA)

Abstract

API移行のためのコンピュータ化されたシステム。システムは、命令を記憶するメモリと、命令を実行して動作を実施するように構成されたプロセッサとを含み、動作は、クライアントアカウントを3つのグループに分離することと、第1のグループと通信するために第1のAPI、および、第2のグループと通信するために第2のAPIを割り当てることと、第3のグループの第1の部分と通信するために第1のAPI、および、第3のグループの第2の部分と通信するために第2のAPIを割り当てることとを含む。動作はまた、グループから通信を収集し、各グループに関連付けられたメトリックを生成することと、比較レポートおよび適合性レポートを生成することとを含むことができる。動作はまた、比較レポートおよび適合性レポートに基づいて警告またはレコメンドのうちの少なくとも1つを送信することを含むこともできる。

Description

本開示は、一般に、クラウド環境においてアプリケーションプログラミングインターフェース(API)をアップグレードまたは移行するためのコンピュータ化されたシステムおよび方法に関する。特に、本開示の実施形態は、APIの変更、アップグレード、または移行中のバケットまたはスプリットラン試験を使用したAPI性能の自動比較評価のためのシステムおよび方法に関する。
APIは、インタラクションのための方法を定義することによって、言語またはプラットフォームにかかわらず、異なる技術およびアプリケーション間の通信が協働することを可能にするコンピューティングインターフェースである。APIは、データの通信、情報へのアクセス、およびアプリケーションの構築を可能にするルーチンおよびプロトコルのセットを指定する。APIは、クライアントとデータプロバイダとの間のインタラクションの主要なポイントになっているため、現在クラウドコンピューティング環境において重要である。特に、APIは、顧客が安定した、組織化された、安全な方法で、必要に応じてビジネスシステムからの情報にアクセスすることを可能にしてきた。実際、APIは、カスタマイズされた安全なインタラクションを可能にするため、企業のクラウド環境への移行において非常に有益であった。例えば、APIを通じて、ビジネスリソースのセキュリティを管理し、インタラクションを監視および分析しながら、サーバを外部クライアントと通信させることが可能である。全体として、APIクラウドサービスを使用すると、通信ブリッジを作成し、異なる種類のクライアントにサービスを提供するアーキテクチャを開発することができる。
APIが配備されると、システムのクライアントはAPIを使用して情報へのアクセスおよび/またはサービスプロバイダとの通信を行う。しかしながら、状況によっては、APIを修正、更新、またはアップグレードすることが望ましい場合がある。例えば、サービスプロバイダは、クラス、関数、および特性がどのように機能するかを改善するために、API内の関数またはプロトコルを変更することを決定することができる。これらの変更は、通信の効率を改善する(例えば、ネットワーク輻輳を最小化する)ために、またはエラーを防止するために導入され得る。あるAPIから別のAPIへの、またはAPIの異なるバージョン間の遷移または移行は、クライアントシステムが更新済みAPIに適応できない可能性があるため、またはAPIの挙動が異なり、遅延もしくは予期しない結果を引き起こすため、問題を引き起こす可能性がある。例えば、更新済みAPIでは、クライアントが使用するスクリプトコマンドの一部が修正または削除される場合がある。これらの変更は、API移行中に適合性エラーを引き起こす可能性がある。また、特定のAPIの複雑さ、および、クライアントとサーバとの間に存在し得る複雑なインタラクションを考慮すると、不適合性を識別して補正することは困難であり得る。
API移行のための開示されているシステムおよび方法は、上記の問題および/または従来技術における他の問題のうちの1つまたは複数に対処する。
本開示の一態様は、API移行のためのコンピュータ化されたシステムに関する。システムは、命令を記憶する少なくとも1つのメモリと、動作を実施するための命令を実行するように構成された少なくとも1つのプロセッサとを含むことができる。動作は、クライアントアカウントを第1のグループ、第2のグループ、および第3のグループ(各グループは別個のメンバを有する)に分離することと、第1のグループと通信するために第1のAPI、および、第2のグループと通信するために第2のAPIを割り当てることと、第3のグループの第1の部分と通信するために第1のAPI、および、第3のグループの第2の部分と通信するために第2のAPIを割り当てることとを含むことができる。動作はまた、第1のグループ、第2のグループ、および第3のグループから(一定の時間間隔中に)通信を収集することと、各グループに関連付けられたメトリックを生成することとを含むことができる。さらに、動作はまた、第1のグループに関連付けられたメトリックと第2のグループに関連付けられたメトリックとを比較する比較レポートを生成することと、第3のグループに関連付けられたメトリックに基づいて適合性レポートを生成することとを含むこともできる。いくつかの実施形態では、動作はまた、比較レポートおよび適合性レポートに基づいて警告またはレコメンドのうちの少なくとも1つを送信することを含むこともできる。
本開示の別の態様は、API移行のためのコンピュータ実施方法に関する。方法は、クライアントアカウントを第1のグループ、第2のグループ、および第3のグループ(各グループは別個のメンバを有する)に分離することと、第1のグループと通信するために第1のAPI、および、第2のグループと通信するために第2のAPIを割り当てることと、第3のグループの第1の部分と通信するために第1のAPI、および、第3のグループの第2の部分と通信するために第2のAPIを割り当てることとを含むことができる。方法はまた、第1のグループ、第2のグループ、および第3のグループから(一定の時間間隔中に)通信を収集することと、各グループに関連付けられたメトリックを生成することとを含むことができる。さらに、方法はまた、第1のグループに関連付けられたメトリックと第2のグループに関連付けられたメトリックとを比較する比較レポートを生成することと、第3のグループに関連付けられたメトリックに基づいて適合性レポートを生成することとを含むこともできる。いくつかの実施形態では、方法はまた、比較レポートおよび適合性レポートに基づいて警告またはレコメンドのうちの少なくとも1つを送信することを含むこともできる。
本開示のさらに別の態様は、1つまたは複数のプロセッサと、命令を記憶する1つまたは複数のメモリデバイスとを含むシステムに関する。1つまたは複数のプロセッサによって実行されると、命令は、クライアントアカウントを第1のグループ、第2のグループ、および第3のグループ(各グループは別個のメンバを有する)に分離することと、第1のグループと通信するために第1のAPI、および、第2のグループと通信するために第2のAPIを割り当てることと、(第1のAPIはレガシAPIであり、第2のAPIは更新済みAPIである)とを行うように、1つまたは複数のプロセッサを構成し、第1のAPIおよび第2のAPIは、オンラインショップを電子商取引データセンタと接続する統合拡張機能を含む。命令はまた、第3のグループの第1の部分と通信するために第1のAPI、および、第3のグループの第2の部分と通信するための第2のAPIを割り当てることと、第1のグループ、第2のグループ、および第3のグループから(一定の時間間隔中に)通信を収集することとを行うように1つまたは複数のプロセッサを構成することもできる。命令はまた、プロセッサに、各グループに関連付けられたAPIメトリックを生成することと、第1のグループに関連付けられたAPIメトリックと第2のグループに関連付けられたAPIメトリックとを比較する比較レポート(比較レポートは、第1のグループに関連付けられたAPIメトリックと第2のグループに関連付けられたAPIメトリックとの間の差を含む)を生成することと、第3のグループに関連付けられたAPIメトリックに基づいて適合性レポートを生成することとを行うようにプロセッサを構成することもできる。さらに、命令はまた、差が実行可能性閾値を下回っているか否かを判定することと、第3のグループに関連付けられたAPIメトリックが適合性閾値を下回っているか否かを判定することと、差が実行可能性閾値を下回っており、第3のグループに関連付けられたAPIメトリックが適合性閾値を上回っているという判定に応答して、更新済みAPIマップテーブルおよび移行APIプラグインを含むレコメンドを送信することとを行うようにプロセッサを構成することもできる。
開示されている実施形態と一致する、出荷、輸送、および物流動作を可能にする通信のためのコンピュータ化されたシステムを備えるネットワークの例示的な実施形態を示す概略ブロック図である。 開示されている実施形態と矛盾しない、インタラクティブなユーザインターフェース要素と共に、検索要求を満たす1つまたは複数の検索結果を含むページ(SRP)を含む例示的な検索結果を示す。 開示されている実施形態と一致する、インタラクト型ユーザインターフェース要素と共に製品および製品に関する情報を含む例示的な単一ディスプレイページ(SDP)を示す図である。 開示されている実施形態に一致する、対話型ユーザインターフェース要素と共に仮想ショッピングカート内のアイテムを含む例示的なカートページを示す。 開示されている実施形態と一致する、対話型ユーザインターフェース要素と共に、購入および出荷に関する情報と共に仮想ショッピングカートからのアイテムを含む例示的な注文ページを示す。 開示されている実施形態と一致する、開示されているコンピュータ化されたシステムを利用するように構成された例示的なフルフィルメントセンタの概略図である。 開示されている実施形態と一致する、例示的なシステムの概略ブロック図である。 開示されている実施形態と一致する、例示的なクライアントデバイスのブロック図である。 開示されている実施形態と一致する、例示的なデータベースのブロック図である。 開示されている実施形態と一致する、例示的なAPI移行システムのブロック図である。 開示されている実施形態と一致する、例示的なAPIルーティングシステムのブロック図である。 開示されている実施形態と一致する、例示的なAPIコールプロセスフローのブロック図である。 開示されている実施形態と一致する、APIコールの分析および比較のための例示的なシステムのブロック図である。 開示されている実施形態と一致する、API移行のための例示的なスプリットラン試験システムのブロック図である。 開示されている実施形態と一致する、スプリットラン試験のための例示的なAPIマップテーブルである。 開示されている実施形態と一致する、例示的なAPI移行試験プロセスの流れ図である。 開示されている実施形態と一致する、例示的なAPI差分評価プロセスの流れ図である。 開示されている実施形態と一致する、APIメトリックを判定するための例示的なプロセスの流れ図である。 開示されている実施形態と一致する、API移行のレコメンドを実行するための例示的なプロセスの流れ図である。 開示されている実施形態と一致する、API評価中に生成される警告および/または通知の例示的なグラフィカルユーザインターフェースを示す図である。
以下の詳細な説明は、添付の図面を参照する。可能な限り、図面および以下の説明では、同一または類似の部分を参照するために、同一の参照番号が使用される。いくつかの例示的な実施形態が本明細書で説明されるが、修正、適応、および他の実装が可能である。例えば、置換、追加、または変更が図面に示された構成要素およびステップに行われてもよく、本明細書に記載された例示的な方法は、開示されている方法にステップを置換、並べ替え、除去、または追加することによって変更されてもよい。したがって、以下の詳細な説明は、開示されている実施形態および実施例に限定されない。むしろ、本発明の適切な範囲は、添付の特許請求の範囲によって定義される。
本開示の実施形態は、APIの変更、アップグレード、および/または更新を含み得るAPI移行を促進および/または自動化するためのシステムおよび方法に関する。特に、開示されているシステムおよび方法は、複数のAPIのバケットまたはスプリットラン試験を実行して、それらの性能を評価し、移行中の問題および/または不適合性を特定するためのツールを提供することができる。いくつかの実施形態では、開示されているシステムおよび方法は、異なるAPIシステム間での機能の自動検証または変換のためのツールを提供することによって、ウェブサイトのメンテナンスおよび更新の技術分野を改善することができる。例えば、開示されているシステムおよび方法は、自動比較API試験を実行するためのツールを提供することによって、API移行中のウェブサイトデバッグを改善することができる。さらに、開示されているシステムおよび方法は、APIマッピングテーブルおよびフローパスの維持管理を自動化することによってウェブサイトのメンテナンスの分野を改善することができる。
さらに、開示されているシステムおよび方法は、APIの自動バケットまたはスプリットラン試験のためのツールを提供することによって、ウェブサイトデバッグの技術分野を改善することができる。そのようなツールは、比較分析を用いてAPIの不適合性および不十分な性能を識別し、APIシステムの自動的な再構成および/または通知の生成を行うことができる。例えば、開示されているシステムおよび方法は、APIスクリプトにおける旧式のコードまたはレガシコードの使用の検出、変更の提案、および/またはそれらの自動的な更新を行うように構成することができる。さらに、開示されているシステムおよび方法は、難点を指摘する比較レポートを生成することによってAPIバージョン制御を促進することができる。さらに、不適合性の問題を評価することに加えて、開示されているシステムおよび方法は、API性能に基づいて比較メトリックを生成することによって定量的性能評価を可能にすることができる。
さらに、開示されているシステムおよび方法は、API関数を使用して監視機能をトリガすることによってネットワーク監視動作を改善することができる。例えば、本開示のいくつかの実施形態では、システムは、API関数またはルーチンを含むネットワーク通信の部分のみを監視することができる。例えば、開示されているシステムおよび方法は、APIの部分として、関心のあるインタラクションをフィルタリングし、API性能の分析を促進するためにデータ収集ツールにおけるパケットキャプチャを開始および停止する特定の関数をプログラミングすることによって、API遷移中のネットワーク管理を改善することができる。
ここで、開示されている実施形態を詳細に参照し、その例は添付の図面に示されている。
図1Aは、出荷、輸送、および物流動作を可能にする通信のためのコンピュータ化されたシステムを含むシステムの例示的な実施形態を示す、システム100の概略ブロック図を示す。図1Aに示すように、システム100は様々なシステムを含むことができ、その各々は、1つまたは複数のネットワークを介して互いに接続することができる。システムはまた、例えばケーブルを使用して、直接接続を介して互いに接続されてもよい。図示のシステムは、出荷権限技術(SAT)システム101、外部フロントエンドシステム103、内部フロントエンドシステム105、輸送システム107、モバイルデバイス107A、107B、107C、販売者ポータル109、出荷および注文追跡(SOT)システム111、フルフィルメント最適化(FO)システム113、フルフィルメントメッセージングゲートウェイ(FMG)115、サプライチェーン管理(SCM)システム117、労働力管理システム119、モバイルデバイス119A、119B、119C(フルフィルメントセンタ(FC)200の内部にあるものとして図示)、第三者フルフィルメントシステム121A、121B、121C、フルフィルメントセンタ認証システム(FC認証)123、労務管理システム(LMS)125を含む。
SATシステム101は、いくつかの実施形態では注文状態および配送状態を監視するコンピュータシステムとして実装されてもよい。例えば、SATシステム101は注文がその約束配送日(PDD)を過ぎているか否かを判定し、新しい注文を開始すること、配送されていない注文でアイテムを再出荷すること、配送されていない注文をキャンセルすること、注文顧客とのコンタクトを開始することなどを含む適切な処置をとることができる。SATシステム101は、出力(特定の期間中に出荷された荷物の数など)および入力(出荷に使用するために受け取った空のボール紙箱の数など)を含む他のデータを監視することもできる。また、SATシステム101はシステム100内の異なるデバイス間のゲートウェイとして機能し、外部フロントエンドシステム103およびFOシステム113などのデバイス間の通信(例えば、ストアアンドフォワードまたは他の技術を使用する)を可能にしてもよい。
いくつかの実施形態では、外部フロントエンドシステム103が外部ユーザがシステム100内の1つまたは複数のシステムとインタラクトすることを可能にするコンピュータシステムとして実装することができる。例えば、システム100がシステムの提示を可能にして、ユーザがアイテムのための注文を配置することを可能にする実施形態では、外部フロントエンドシステム103が検索要求を受信し、アイテムページを提示し、支払い情報を要請するウェブサーバとして実装されてもよい。例えば、外部フロントエンドシステム103は、アパッチHTTPサーバ、マイクロソフトインターネットインフォメーションサービス(IIS)、NGINX等のソフトウェアを実行する1つまたは複数のコンピュータとして実施することができる。他の実施形態では、外部フロントエンドシステム103が外部デバイス(例えば、モバイルデバイス102Aまたはコンピュータ102B)からの要求を受信および処理し、それらの要求に基づいてデータベースおよび他のデータストアから情報を取得し、取得した情報に基づいて受信した要求に対する応答を提供するように設計されたカスタムウェブサーバソフトウェアを実行することができる。
いくつかの実施形態では、外部フロントエンドシステム103がウェブキャッシングシステム、データベース、検索システム、または支払いシステムのうちの1つまたは複数を含むことができる。一態様では外部フロントエンドシステム103がこれらのシステムのうちの1つまたは複数を含むことができ、別の態様では外部フロントエンドシステム103がこれらのシステムのうちの1つまたは複数に接続されたインターフェース(例えば、サーバ間、データベース間、または他のネットワーク接続)を含むことができる。
図1B、図1C、図1D、および図1Eによって示されるステップの例示的な組は、外部フロントエンドシステム103のいくつかの動作を説明するのに役立つ。外部フロントエンドシステム103は提示および/またはディスプレイのために、システム100内のシステムまたはデバイスから情報を受け取ることができる。例えば、外部フロントエンドシステム103は、検索結果ページ(SRP)(例えば、図1B)、単一ディスプレイページ(SDP)(例えば、図1C)、カートページ(例えば、図1D)、または注文ページ(例えば、図1E)を含む、1つまたは複数のウェブページをホスティングまたは提供することができる。ユーザデバイス(例えば、モバイルデバイス102Aまたはコンピュータ102Bを使用する)は外部フロントエンドシステム103にナビゲートし、検索ボックスに情報を入力することによって検索を要求することができる。外部フロントエンドシステム103は、システム100内の1つまたは複数のシステムから情報を要求することができる。例えば、外部フロントエンドシステム103は、検索要求を満たす情報をFOシステム113に要求してもよい。また、外部フロントエンドシステム103は検索結果に含まれる商品ごとに、約束配送日または「PDD」を(FOシステム113から)要求し、受信することもできる。PDDはいくつかの実施形態では、特定の期間内に、例えば、その日の最後(午後11時59分)までに注文された場合、製品を含む荷物が、いつユーザの所望の場所に到着するか、または製品がユーザの所望の場所に配送されることを約束される日付かのいずれかの推定値を表すことができる(PDDはFOシステム113に関して以下でさらに説明される)。
外部フロントエンドシステム103がその情報に基づいてSRP(例えば、図1B)を準備することができる。SRPは、検索要求を満たす情報を含むことができる。例えば、これは、検索要求を満たす製品の写真を含むことができる。SRPはまた、各製品についてのそれぞれの価格、または各製品についての強化された配送オプション、PDD、重み、規模、オファー、割引などに関する情報を含んでもよい。いくつかの実施形態では、SRPはまた、配信オプション、配信オプションの締め切り時間、および/またはユーザ入力を要求するハイパーメディア要素を含むことができる。外部フロントエンドシステム103は(例えば、ネットワークを介して)要求側ユーザデバイスにSRPを送信することができる。
次いで、ユーザデバイスは例えば、ユーザインターフェースをクリックもしくはタップすることによって、または別の入力デバイスを使用して、SRPから製品を選択して、SRP上に表される製品を選択し得る。ユーザデバイスは選択された製品に関する情報への要求を作成し、それを外部フロントエンドシステム103に送ることができる。これに応じて、外部フロントエンドシステム103は、選択された商品に関する情報を要求することができる。例えば、情報は、それぞれのSRP上の製品について提示される情報を超える追加の情報を含むことができる。これには、例えば、貯蔵寿命、原産国、体重、大きさ、荷物中のアイテムの個数、取扱説明書、夜明け配送もしくは初回配送の締め切り時間、または製品に関する他の情報が含まれ得る。また、情報は(例えば、この製品および少なくとも1つの他の製品を購入した顧客のビッグデータおよび/または機械学習分析に基づく)類似の製品に対するレコメンド、頻繁に質問される質問に対する回答、顧客からのレビュー、製造業者情報、写真などを含むことができる。
外部フロントエンドシステム103は、受信した製品情報、顧客デバイスの位置、および配送オプションの利用可能性に基づいて、SDP(単一ディスプレイページ)(例えば、図1C)を準備することができる。SDPはまた、「今すぐ買う」ボタン、「カートに追加する」ボタン、数量欄、アイテムの写真等のような他の対話型要素を含んでもよい。SDPは、製品を提供する販売者のリストをさらに含むことができる。リストは各販売者が提供する価格に基づいて注文されてもよく、その結果、最低価格で製品を販売することを提案する販売者は最上位にリストされてもよい。リストは最高ランクの販売者が最上位にリストされるように、販売者ランキングに基づいて注文されてもよい。販売者ランキングは例えば、約束されたPDDを満たす販売者の過去の実績を含む、複数の要因に基づいて定式化されてもよい。外部フロントエンドシステム103は(例えば、ネットワークを介して)要求側ユーザデバイスにSDPを配信することができる。
要求側ユーザデバイスは、商品情報を記載したSDPを受け取る場合がある。SDPを受信すると、ユーザデバイスはSDPとインタラクトすることができる。例えば、要求側ユーザデバイスのユーザは、SDP上の「カートに入れる」ボタンをクリックするか、あるいは他の方法でインタラクトすることができる。これは、ユーザに関連付けられたショッピングカートに製品を追加する。代替的に、または付加的に、ユーザは、配送に関する指示を提供することによってSDPとインタラクトすることができる。ユーザデバイスはこの要求を送信して、商品をショッピングカートに追加し、外部フロントエンドシステム103に送ることができる。
外部フロントエンドシステム103はカートページ(例えば、図1D)を生成することができる。カートページは、いくつかの実施形態では、ユーザが仮想の「ショッピングカート」に追加した製品を一覧表示する。ユーザデバイスは、SRP、SDP、または他のページ上のアイコンをクリックするか、または他の様態でインタラクトすることにより、カートページを要求することができる。いくつかの実施形態では、カートページは、ユーザがショッピングカートに追加したすべての製品、ならびに各製品の数量、各製品のアイテム当たりの価格、関連する数量に基づく各製品の価格、PDDに関する情報、配送方法、出荷費用、ショッピングカート内の製品を変更するためのユーザインターフェース要素(例えば、数量の削除または変更)、他の製品を注文するかまたは製品の定期的な配送を設定するためのオプション、利息支払いを設定するためのオプション、購入を進めるためのユーザインターフェース要素などのカート内の製品に関する情報を一覧表示することができる。ユーザデバイスのユーザはショッピングカート内の製品の購入を開始するために、ユーザインターフェース要素(例えば、「今すぐ買う」と読むボタン)をクリックするか、または他の様態でユーザインターフェース要素とインタラクトすることができる。そうすると、ユーザデバイスは、この要求を送信して、外部フロントエンドシステム103への購入を開始することができる。いくつかの実施形態では、カートページは、各製品配送に関するテキストボックス入力、対話型アイコン、またはレコメンドメッセージを含むことができる。
外部フロントエンドシステム103は購入を開始するための要求の受信に応じて、注文ページ(例えば、図1E)を発生することができる。注文ページはいくつかの実施形態ではショッピングカートからのアイテムを再リストし、支払いおよび出荷情報に関する入力を要求する。例えば、注文ページはショッピングカート内のアイテムの購入者に関する情報(例えば、名前、住所、電子メールアドレス、電話番号)、受取人に関する情報(例えば、名前、住所、電話番号、配送情報)、出荷情報(例えば、配送および/または集荷の速度/方法)、支払い情報(例えば、クレジットカード、銀行振込、小切手、記憶クレジット)、現金受領を要求するためのユーザインターフェース要素(例えば、税務目的のための)などを要求するセクションを含むことができる。外部フロントエンドシステム103は、注文ページをユーザデバイスへ送信することが可能である。
ユーザデバイスは注文ページに情報を入力し、その情報を外部フロントエンドシステム103に送信するユーザインターフェース要素をクリックするか、または他の方法でインタラクトすることができる。そこから、外部フロントエンドシステム103はショッピングカート内の製品との新しい注文の作成および加工を可能にするために、システム100内の様々なシステムに情報を送信することができる。いくつかの実施形態では、外部フロントエンドシステム103が販売者が注文に関する情報を送受信することを可能にするようにさらに構成されてもよい。
内部フロントエンドシステム105はいくつかの実施形態では内部ユーザ(例えば、システム100を所有し、運営し、またはリースする団体の従業員)がシステム100内の1つまたは複数のシステムとインタラクトすることを可能にするコンピュータシステムとして実装することができる。例えば、SATシステム101がシステムの提示を可能にして、ユーザがアイテムのための注文を配置できるようにする実施形態では、内部フロントエンドシステム105を、内部ユーザが注文に関する診断および統計情報を見たり、アイテム情報を変更したり、または注文に関する統計を見直したりできるようにするウェブサーバとして実装することができる。例えば、内部フロントエンドシステム105は、アパッチHTTPサーバ、マイクロソフトインターネットインフォメーションサービス(IIS)、NGINX等のソフトウェアを実行する1つまたは複数のコンピュータとして実現することができる。他の実施形態では、内部フロントエンドシステム105がシステム100に示されるシステムまたはデバイス(ならびに図示されない他のデバイス)からの要求を受信および処理し、それらの要求に基づいてデータベースおよび他のデータストアから情報を取得し、取得された情報に基づいて受信された要求への応答を提供するように設計されたカスタムウェブサーバソフトウェアを実行することができる。
いくつかの実施形態では、内部フロントエンドシステム105がウェブキャッシングシステム、データベース、検索システム、支払いシステム、分析システム、注文監視システムなどのうちの1つまたは複数を含むことができる。一態様では、内部フロントエンドシステム105がこれらのシステムのうちの1つまたは複数を含むことができ、別の態様では内部フロントエンドシステム105がこれらのシステムのうちの1つまたは複数に接続されたインターフェース(例えば、サーバ間、データベース間、または他のネットワーク接続)を含むことができる。
輸送システム107は、いくつかの実施形態ではシステム100内のシステムまたはデバイスとモバイルデバイス107A~107Cとの間の通信を可能にするコンピュータシステムとして実施することができる。いくつかの実施形態では、輸送システム107が1つまたは複数のモバイルデバイス107A~107C(例えば、携帯電話、スマートフォン、PDAなど)から受信することができる。例えば、いくつかの実施形態では、モバイルデバイス107A~107Cが配送作業員によって操作されるデバイスを含んでもよい。配送作業員は、正社員、臨時社員、または交替社員であってもよく、モバイルデバイス107A~107Cを利用して、ユーザによって注文された製品を含む荷物の配送を行うことができる。例えば、荷物を配送するために、配送作業員は、どの荷物を配送すべきか、およびそれをどこに配送すべきかを示す通知をモバイルデバイス上で受信することができる。配送位置に到着すると、配送作業員は荷物を(例えば、トラックの後ろに、または荷物の箱に)配置し、モバイルデバイスを使用して荷物上の識別子に関連するデータ(例えば、バーコード、イメージ、文字列、RFIDタグなど)を走査または他の方法でキャプチャし、荷物を(例えば、前扉に置いたままにし、警備員に預けたままにし、受信者に渡すなどによって)配送することができる。いくつかの実施形態では、配送作業員が荷物の写真(複数可)をキャプチャすることができ、および/またはモバイルデバイスを使用してサインを取得することができる。モバイルデバイスは例えば、時刻、日付、GPS位置、写真(複数可)、配送作業員に関連付けられた識別子、モバイルデバイスに関連付けられた識別子などを含む配送に関する情報を含む情報を輸送システム107に送信することができる。輸送システム107はシステム100内の他のシステムによるアクセスのために、この情報をデータベース(図示せず)に格納することができる。輸送システム107はいくつかの実施形態ではこの情報を使用して、特定の荷物の位置を示す追跡データを準備し、他のシステムに送信することができる。
いくつかの実施形態ではあるユーザが1つの種類のモバイルデバイスを使用することができる(例えば、常勤作業員はバーコードスキャナ、スタイラス、および他のデバイスなどのカスタムハードウェアと共に専用のPDAを使用することができる)が他のユーザは他の種類のモバイルデバイスを使用することができる(例えば、臨時または交替作業員は既製の携帯電話および/またはスマートフォンを利用することができる)。
いくつかの実施形態では、輸送システム107がユーザをそれぞれのデバイスに関連付けることができる。例えば、輸送システム107はユーザ(例えば、ユーザ識別子、従業員識別子、または電話番号)とモバイルデバイス(例えば、国際移動デバイスアイデンティティ(IMEI)、国際移動加入識別子(IMSI)、電話番号、汎用一意識別子(UUID)、またはグローバル一意(GUID)によって表される)との間の関連を記憶することができる。輸送システム107はこの関連付けを、配送時に受信されたデータと併せて使用して、とりわけ、作業員の位置、作業員の有効性、または作業員のスピードを決定するために、注文内のデータベースに格納されたデータを分析することができる。
販売者ポータル109は、いくつかの実施形態では販売者または他の外部エンティティがシステム100内の1つまたは複数のシステムと電子的に通信することを可能にするコンピュータシステムとして実装され得る。例えば、販売者は、コンピュータシステム(図示せず)を利用して、販売者が販売者ポータル109を使用してシステム100を通して売りたい製品について、製品情報、注文情報、連絡先情報などをアップロードまたは提供することができる。
出荷および注文追跡システム111はいくつかの実施形態では(例えば、デバイス102A~102Bを使用するユーザによって)顧客によって注文された製品を含む荷物の位置に関する情報を受信し、記憶し、転送するコンピュータシステムとして実装されてもよい。いくつかの実施形態では、出荷および注文追跡システム111は顧客が注文した製品を含む荷物を配送する出荷会社によって運営されるウェブサーバ(図示せず)からの情報を要求または記憶することができる。
いくつかの実施形態では、出荷および注文追跡システム111がシステム100に示されたシステムからの情報を要求し、記憶することができる。例えば、出荷および注文追跡システム111は、輸送システム107に情報を要求することができる。上述のように、輸送システム107は1人もしくは複数のユーザ(例えば、配送作業員)または車両(例えば、配送トラック)に関連付けられた1つまたは複数のモバイルデバイス107A~107C(例えば、携帯電話、スマートフォン、PDAなど)から情報を受信することができる。いくつかの実施形態では、出荷および注文追跡システム111がフルフィルメントセンタ(例えば、フルフィルメントセンタ200)内の個々の製品の位置を決定するために、労働力管理システム(WMS)119に情報を要求することもできる。出荷および注文追跡システム111は輸送システム107またはWMS 119のうちの1つまたは複数からデータを要求し、それを処理し、要求に応じてそれをデバイス(例えば、ユーザデバイス102Aおよび102B)に提示することができる。
フルフィルメント最適化(FO)システム113はいくつかの実施形態では他のシステム(例えば、外部フロントエンドシステム103および/または出荷および注文追跡システム111)からのカスタマ注文のための情報を記憶するコンピュータシステムとして実装されてもよい。また、FOシステム113は、特定のアイテムがどこに保持されているか、またはどこに記憶されているかを記述する情報を記憶することもできる。例えば、特定のアイテムは1つのフルフィルメントセンタにのみ格納でき、他の特定のアイテムは複数のフルフィルメントセンタに格納できる。さらに他の実施形態では、特定のフルフィルメントセンタが特定の組のアイテム(例えば、生鮮食品または冷凍食品)のみを格納するように設計されてもよい。FOシステム113はこの情報ならびに関連する情報(例えば、数量、サイズ、受領日、有効期限など)を格納する。
また、FOシステム113は、商品ごとに対応するPDD(約束配送日)を計算してもよい。PDDは、いくつかの実施形態では1つまたは複数のファクタに基づくことができる。例えば、FOシステム113は製品に対する過去の需要(例えば、その製品がある期間中に何回注文されたか)、製品に対する予想需要(例えば、来るべき期間中にその製品を注文するために何人の顧客が予測されるか)、ある期間中にいくつの製品が注文されたかを示すネットワーク全体の過去の需要、来るべき期間中にいくつの製品が注文されることが予想されるかを示すネットワーク全体の予想需要、各製品を格納する各フルフィルメントセンタ200に格納された製品の1つまたは複数のカウント、予想または現行注文などに基づいて、製品に対するPDDを計算することができる。
フルフィルメントメッセージングゲートウェイ115はいくつかの実施形態ではFOシステム113などのシステム100内の1つまたは複数のシステムから1つのフォーマットまたはプロトコルで要求または応答を受信し、それを別のフォーマットまたはプロトコルに変換し、変換されたフォーマットまたはプロトコルで、WMS 119または第三者フルフィルメントシステム121A、121B、または121Cなどの他のシステムに転送し、逆も同様であるコンピュータシステムとして実装することができる。
サプライチェーン管理(SCM)システム117は、いくつかの実施形態では予測機能を実行するコンピュータシステムとして実装することができる。例えば、SCMシステム117は例えば、製品に対する過去の需要、製品に対する予想される需要、ネットワーク全体の過去の需要、ネットワーク全体の予想される需要、各フルフィルメントセンタ200に格納された計数製品、各製品に対する予想または現行注文などに基づいて、特定の製品に対する需要の水準を予測することができる。この予測された水準およびすべてのフルフィルメントセンタにわたるそれぞれの製品の量に応じて、SCMシステム117は特定の製品に対する予測された需要を満たすのに充分な量を購入し、ストックするための1つまたは複数の購入注文を生成することができる。
労働力管理システム(WMS)119は、いくつかの実施形態ではワークフローを監視するコンピュータシステムとして実装されてもよい。例えば、WMS 119は個別イベントを示す個別デバイス(例えば、デバイス107A~107Cまたは119A~119C)からイベントデータを受信することができる。例えば、WMS 119は、荷物を走査するためにこれらのデバイスの1つの使用を示すイベントデータを受信してもよい。フルフィルメントセンタ200および図2に関して以下で論じるように、フルフィルメントプロセス中に、荷物識別子(例えば、バーコードまたはRFIDタグデータ)は特定の段階での機械(例えば、自動またはハンドヘルドバーコードスキャナ、RFIDリーダ、高速カメラ、タブレット119A、モバイルデバイス/PDA 119B、コンピュータ119Cなどのデバイス)によって走査または読み取ることができる。WMS 119は荷物識別子、時刻、日時、位置、ユーザ識別子、または他の情報と共に、荷物識別子の走査または読取りを示す各々の事象を対応するデータベース(図示せず)に記憶することができ、この情報を他のシステム(例えば、出荷および注文追跡システム111)に提供することができる。
WMS 119はいくつかの実施形態では1つまたは複数のデバイス(例えば、デバイス107A~107Cまたは119A~119C)を、システム100に関連付けられた1つまたは複数のユーザに関連付ける情報を記憶してもよい。例えば、いくつかの状況では、ユーザ(パートまたはフルタイムの従業員など)は、ユーザがモバイルデバイスを所有する(例えば、モバイルデバイスはスマートフォンである)という点で、モバイルデバイスに関連付けられてもよい。他の状況では、ユーザは、ユーザが一時的にモバイルデバイスの管理下にある(例えば、ユーザは日の始めにモバイルデバイスを借り、日中にそれを使用し、日の終わりにそれを返す)という点で、モバイルデバイスに関連付けられてもよい。
WMS 119は、いくつかの実施形態ではシステム100に関連する各ユーザの作業ログを維持することができる。例えば、WMS 119は任意の割り当てられたプロセス(例えば、トラックの荷下ろし、ピックゾーンからのアイテムのピッキング、リビン(rebin)ウォールワーク、アイテムの荷造り)、ユーザ識別子、位置(例えば、フルフィルメントセンタ200内のフロアまたはゾーン)、従業員によってシステム内を移動されたユニットの数(例えば、ピックされたアイテムの数、パックされたアイテムの数)、デバイスに関連付けられた識別子(例えば、デバイス119A~119C)などを含む、各従業員に関連付けられた情報を記憶することができる。いくつかの実施形態では、WMS 119がデバイス119A~119C上で動作するタイムキーピングシステムなどのタイムキーピングシステムからチェックインおよびチェックアウト情報を受信することができる。
第三者フルフィルメント(3PL)システム121A~121Cは、いくつかの実施形態ではロジスティクスおよび製品のサードパーティプロバイダに関連するコンピュータシステムを表す。例えば、(図2に関して以下で説明するように)一部の製品がフルフィルメントセンタ200に保管されている間、他の製品はオフサイトに保管されてもよく、オンデマンドで生産されてもよく、またはそうでなければフルフィルメントセンタ200に保管するために利用できなくてもよい。3PLシステム121A~121Cは、FOシステム113(例えば、FMG 115を通じて、)から注文を受信するように構成されてもよく、製品および/またはサービス(例えば、送達または設置)を顧客に直接提供してもよい。いくつかの実施形態では3PLシステム121A~121Cのうちの1つまたは複数がシステム100の一部とすることができ、他の実施形態では3PLシステム121A~121Cのうちの1つまたは複数がシステム100の外部(例えば、サードパーティプロバイダによって所有または運営される)とすることができる。
フルフィルメントセンタ認証システム(FC認証)123は、いくつかの実施形態では様々な機能を有するコンピュータシステムとして実装され得る。例えば、いくつかの実施形態では、FC認証123がシステム100内の1つまたは複数の他のシステムのためのシングルサインオン(SSO)サービスとして動作することができる。例えば、FC認証123はユーザが内部フロントエンドシステム105を介してログインすることを可能にし、ユーザが出荷および注文追跡システム111においてリソースにアクセスするための同様の特権を有していることを決定し、ユーザが2回目のログイン処理を必要とせずにそれらの特権にアクセスすることを可能にしてもよい。他の実施形態では、FC認証123は、ユーザ(例えば、従業員)が自分自身を特定の作業に関連付けることを可能にしてもよい。例えば、従業員の中には、電子デバイス(デバイス119A~119Cなど)を持たない者もいれば、その代わりに、1日の過程中に、フルフィルメントセンタ200内でタスクからタスクへ、およびゾーンからゾーンへ移動してもよい。FC認証123は、それらの従業員は、彼らがどの仕事をしているか、および彼らが様々な時刻にどの区域にいるかを示すことを可能にするように構成されてもよい。
労務管理システム(LMS)125は、いくつかの実施形態では従業員(フルタイムおよびパートタイムの従業員を含む)のための出勤および残業を記憶するコンピュータシステムとして実装されてもよい。例えば、LMS 125は、FC認証123、WMA 119、デバイス119A~119C、輸送システム107、および/またはデバイス107A~107Cから情報を受信することができる。
図1Aに示される特定の構成は単なる例である。例えば、図1AはFOシステム113に接続されたFC認証システム123を示すが、すべての実施形態がこの特定の構成を必要とするわけではない。実際、いくつかの実施形態では、システム100内のシステムがインターネット、イントラネット、WAN(ワイドエリアネットワーク)、MAN(メトロポリタンエリアネットワーク)、IEEE 802.11a/b/g/n規格に準拠する無線ネットワーク、専用線などを含む1つまたは複数の公衆またはプライベートネットワークを通じて互いに接続され得る。いくつかの実施形態では、システム100内のシステムのうちの1つまたは複数がデータセンタ、サーバファームなどに実装された1つまたは複数の仮想サーバとして実装されてもよい。
図2は、フルフィルメントセンタ200を示す。フルフィルメントセンタ200は、注文時に顧客に出荷するためのアイテムを格納する物理的な場所の実例である。フルフィルメントセンタ(FC)200は多数のゾーンまたは位置に分割することができ、その各々を図2に示す。これらの「ゾーン」はいくつかの実施形態ではアイテムを受け取り、アイテムを保管し、アイテムを取り出し、アイテムを出荷する処理の様々な段階の間の仮想分割と考えることができる。したがって、「ゾーン」は図2に示されているが、ゾーンの他の分割も可能であり、いくつかの実施形態では図2のゾーンを省略、複製、および/または修正することができる。
インバウンドゾーン203は、システム100(図1A)を使用して製品を販売しようとする販売者からアイテムを受け取るFC 200の領域を表す。例えば、販売者は、トラック201を使用してアイテム202Aおよび202Bを配送することができる。アイテム202Aはそれ自体の出荷パレットを占有するのに十分な大きさの単一のアイテムを表すことができ、アイテム202Bは、空間を節約するために同じパレット上にともに積み重ねられたアイテムのセットを表すことができる。
作業員はインバウンドゾーン203でアイテムを受信し、コンピュータシステム(図示せず)を使用して、アイテムの破損および正当性を任意選択で検査することができる。例えば、作業員は、コンピュータシステムを使用して、アイテム202Aおよび202Bの数量をアイテムの注文数量と比較することができる。数量が一致しない場合、その作業員は、アイテム202Aまたは202Bのうちの1つまたは複数を拒否することができる。数量が一致すれば、作業員はそれらのアイテムをバッファゾーン205まで(例えば、台車、ハンドトラック、フォークリフトを使用して、または手動で)移動させることができる。バッファゾーン205は例えば、予測される需要を満たすのに十分な量のアイテムがピッキングゾーンにあるため、ピッキングゾーンで現在必要とされていないアイテムのための一時保管領域であってもよい。いくつかの実施形態では、フォークリフト206がバッファゾーン205の周り、およびインバウンドゾーン203とドロップゾーン207との間でアイテムを移動させるように動作する。ピッキングゾーンにアイテム202Aまたは202Bが必要な場合(例えば、予測される需要のため)、フォークリフトは、アイテム202Aまたは202Bをドロップゾーン207に移動させることができる。
ドロップゾーン207は、アイテムがピッキングゾーン209に移動される前にそれらを保管するFC 200の領域であってもよい。ピッキングタスクに割り当てられた作業員(「ピッカー」)はピッキングゾーン内のアイテム202Aおよび202Bに接近し、ピッキングゾーンのバーコードを走査し、モバイルデバイス(例えば、デバイス119B)を使用してアイテム202Aおよび202Bに関連するバーコードを走査することができる。次いで、ピッカーはアイテムをピッキングゾーン209まで(例えば、それをカート上に置くか、またはそれを運ぶことによって)取り込むことができる。
ピッキングゾーン209は、アイテム208が保管ユニット210に保管されるFC 200の領域であってもよい。いくつかの実施形態では、保管ユニット210が物理的な棚、本棚、箱、運搬箱、冷蔵庫、冷凍庫、冷蔵倉庫などのうちの1つまたは複数を含むことができる。いくつかの実施形態では、ピッキングゾーン209が複数のフロアに編成されてもよい。いくつかの実施形態では、作業員または機械が例えば、フォークリフト、エレベータ、コンベアベルト、カート、ハンドトラック、台車、自動ロボットもしくはデバイス、または手動を含む多数の方法で、ピッキングゾーン209内にアイテムを移動させることができる。例えば、ピッカーは、アイテム202Aおよび202Bをドロップゾーン207のハンドトラックまたはカートに載せ、アイテム202Aおよび202Bをピッキングゾーン209まで歩いて持っていくことができる。
ピッカーは、保管ユニット210上の特定の空間のようなピッキングゾーン209内の特定のスポットにアイテムを配置する(または「収納する」)命令を受け取ることができる。例えば、ピッカーはモバイルデバイス(例えば、デバイス119B)を使用してアイテム202Aを走査することができる。デバイスは例えば、通路、棚、および位置を示すシステムを使用して、ピッカーがアイテム202Aを収納すべき場所を示すことができる。次に、デバイスはアイテム202Aをその位置に格納する前に、その位置でバーコードを走査するようにピッカーを促すことができる。デバイスは(例えば、無線ネットワークを介して)図1AのWMS 119のようなコンピュータシステムにデータを送信し、アイテム202Aがデバイス119Bを使用してユーザによってその位置に格納されたことを示すことができる。
ユーザが注文すると、ピッカーは、保管ユニット210から1つまたは複数のアイテム208を取り出すための命令をデバイス119B上で受け取ることができる。ピッカーはアイテム208を取り出し、アイテム208上のバーコードを走査し、それを輸送機構214上に置くことができる。輸送機構214はスライドとして表されているが、いくつかの実施形態では輸送機構がコンベアベルト、エレベータ、カート、フォークリフト、ハンドトラック、台車、カートなどのうちの1つまたは複数として実施することができる。次いで、アイテム208は、パッキングゾーン211に到達することができる。
パッキングゾーン211は、アイテムがピッキングゾーン209から受け取られ、最終的に顧客に出荷するために箱または袋にパッキングされる、FC 200の領域であってもよい。パッキングゾーン211において、アイテムの受け取りに割り当てられた作業員(「リビン(rebin)作業員」)はピッキングゾーン209からアイテム208を受け取り、それがどの注文に対応するかを決定する。例えば、リビン(rebin)作業員はアイテム208上のバーコードを走査するために、コンピュータ119Cなどのデバイスを使用することができる。コンピュータ119Cはどの注文アイテム208が関連付けられているかを視覚的に示すことができる。これは例えば、注文に対応する壁面216上の空間または「セル」を含むことができる。注文が完了すると(例えば、セルが注文のためのすべてのアイテムを含むため)、リビン(rebin)作業員は、注文が完了したことをパッキング作業員(または「パッカー」)に示すことができる。パッカーはセルからアイテムを回収し、輸送のために箱または袋に入れることができる。その後、パッカーは例えば、フォークリフト、カート、台車、ハンドトラック、コンベアベルトを介して、または他の方法で、箱または袋をハブゾーン213に送ることができる。
ハブゾーン213は、パッキングゾーン211からすべての箱または袋(「荷物」)を受け取るFC 200の領域であってもよい。ハブゾーン213内の作業員および/または機械は荷物218を検索し、それぞれの荷物が行こうとする配送領域の一部を決定し、荷物を適切なキャンプゾーン215にルーティングすることができる。例えば、配送領域が2つのより小さいサブ領域を有する場合、荷物は2つのキャンプゾーン215のうちの1つに進む。いくつかの実施形態では、作業員または機械が(例えば、デバイス119A~119Cのうちの1つを使用して)荷物を走査して、その最終的な宛先を決定することができる。荷物をキャンプゾーン215にルーティングすることは、例えば、荷物が向けられている地理的領域の一部を(例えば、郵便番号に基づいて)決定することと、地理的領域の一部に関連付けられたキャンプゾーン215を決定することとを含むことができる。
キャンプゾーン215はいくつかの実施形態では1つまたは複数の建物、1つまたは複数の物理的な空間、または1つまたは複数の領域を含むことができ、荷物は、ルートおよび/またはサブルートに分類するためにハブゾーン213から受け取られる。いくつかの実施形態ではキャンプゾーン215がFC 200から物理的に分離されているが、他の実施形態ではキャンプゾーン215がFC 200の一部を形成することができる。
キャンプゾーン215内の作業員および/または機械は例えば、目的地と現存するルートおよび/またはサブルートとの照合、ルートおよび/またはサブルートごとの作業負荷の算出、時刻、出荷方法、荷物220を出荷する費用、荷物220内のアイテムに関連付けられたPDDなどに基づいて、荷物220がどのルートおよび/またはサブルートに関連付けられるべきかを決定することができる。いくつかの実施形態では、作業員または機械が(例えば、デバイス119A~119Cのうちの1つを使用して)荷物を走査して、その最終的な宛先を決定することができる。荷物220が特定のルートおよび/またはサブルートに割り当てられると、作業員および/または機械は、出荷される荷物220を移動させることができる。例示的な図2において、キャンプゾーン215は、トラック222、自動車226、および配送作業員224Aおよび224Bを含む。いくつかの実施形態では、トラック222が配送作業員224Aによって運転されてもよく、配送作業員224AはFC 200の荷物を配送する常勤の従業員であり、トラック222はFC 200を所有し、リースし、または運営する同じ企業によって所有され、リースされ、または運営される。いくつかの実施形態では、自動車226が配送作業員224Bによって運転されてもよく、ここで、配送作業員224Bは必要に応じて(例えば、季節を限って)送達する「フレックス」または臨時の作業員である。自動車226は、配送作業員224Bによって所有され、リースされ、または操作され得る。
図3は、開示されている実施形態と一致する、例示的なシステム300のブロック図である。システム300において、APIマネージャ320は、リアルタイムのクライアントデバイスのデータストリームからの情報要求を処理するように構成されたサーバ、コンピュータモジュール、および/またはデータ処理センタを含むことができる。例えば、APIマネージャ320は、外部通信からの要求(例えば、APIマネージャ320は外部フロントエンドシステム103の一部であってもよい)、システム内の他の部門からの内部要求(例えば、APIマネージャ320は内部フロントエンドシステム103の一部であってもよい)、システム100の異なる部分間の通信(例えば、APIマネージャ320は、WMS 119およびFMG 115とインターフェースすることができる)を処理することができる。これらの複数のシナリオでは、APIマネージャ320はAPIコールを処理し、クライアント要求を解決することができる。APIマネージャ320はまた、情報またはバックエンドシステムとのインタラクションを要求することができるクライアントおよび/または第三者(例えば、3PLシステム121A~121Cを通じて)と結合することもできる。さらに、APIマネージャ320は、データベース内の情報または動作に対するクライアント要求を解決するための情報を提供することができる。
いくつかの実施形態では、APIマネージャ320はまた、異なるクライアントとインターフェースするために使用されるAPIを更新または移行するための動作を実行することもできる。例えば、APIマネージャ320は、異なるAPI間でクライアント集団を分離し、移行または試験中にAPI割り当てを行うための動作を実行することができる。例えば、図12に関連してさらに説明されるように、APIマネージャ320は、異なるAPI間の比較および適合性試験を実行し、結果に基づいてAPI割り当てを実施するための動作を実行することができる。いくつかの実施形態では、APIマネージャ320は、APIの性能を評価し、APIメトリックを計算するネットワーク分析器を含み得る。
代替的に、または付加的に、いくつかの実施形態では、APIマネージャ320は、システム100(図1A)の構成要素のうちの1つまたは複数によって実装されてもよい。例えば、APIマネージャ320は、SATシステム101、外部フロントエンドシステム103、FOシステム113、SCMシステム117、および/またはWMS 119(図1A)の一部であってもよい。他の実施形態では、APIマネージャ320は、クライアントデバイスにコンテンツを提供するための動作、および/またはクライアントデバイス350のウェブページを生成するための動作を実行するように構成された、1つまたは複数の独立したサーバによって実装されてもよい。
システム300は、APIマネージャ320に加えて、オンラインリソース340、クライアントデバイス350、第三者システム360、およびデータベース380を含むことができる。いくつかの実施形態では、図3に示すように、システム300の構成要素は、ネットワーク370に接続されてもよい。しかしながら、他の実施形態では、システム300の構成要素は、ネットワーク370なしで互いに直接接続されてもよい。例えば、データベース380は、APIマネージャ320に直接結合されてもよい。
オンラインリソース340は、ウェブページホスティング、ネットワーキング、クラウド、またはバックアップサービスのプロバイダなどのエンティティによって提供される1つまたは複数のサーバまたはストレージサービスを含むことができる。いくつかの実施形態では、オンラインリソース340は、認証サービス、ドメイン名システム(DNS)、またはランディングページのためのウェブページを格納するホスティングサービスまたはサーバに関連付けられ得る。他の実施形態では、オンラインリソース340は、クラウドコンピューティングサービスに関連付けられてもよい。さらに他の実施形態では、オンラインリソース340は、例えば、Apple Push Notification Service、Azure Mobile Services、またはGoogle Cloud Messagingなどのメッセージングサービスに関連付けることができる。そのような実施形態では、オンラインリソース340は、デジタル著作権管理の処理など、開示されている実施形態の機能に関連するメッセージおよび通知の配信を処理することができる。
クライアントデバイス350は、開示されている実施形態と一致する1つまたは複数の動作を実行するように構成された1つまたは複数のコンピューティングデバイスを含むことができる。例えば、クライアントデバイス350は、デスクトップコンピュータ、ラップトップ、サーバ、モバイルデバイス(例えば、タブレット、スマートフォンなど)、セットトップボックス、ゲーミングデバイス、ウェアラブルコンピューティングデバイス、または他の種類のコンピューティングデバイスを含むことができる。いくつかの実施形態では、クライアントデバイス350は、ユーザデバイス102(図1A)を含むことができ、システム100の一部として動作することができる。しかしながら、他の実施形態では、クライアントデバイス350は、システム100から独立していてもよい。クライアントデバイス350は、クライアントデバイス350に含まれるメモリなどのメモリに記憶されたソフトウェア命令を実行して、後述する機能を実施するための動作を実行するように構成された1つまたは複数のプロセッサを含むことができる。例えば、クライアントデバイス350は、ウェブページの表示またはクライアント要求の送信のための情報を要求するためにAPIマネージャ320と通信するように構成され得る。さらに、クライアントデバイス350は、コールバックスクリプトまたは関数など、APIマネージャ320によって送信される命令に従って動作を実行するように構成され得る。さらに、クライアントデバイス350は、有線および/または無線通信向けに構成することができ、プロセッサによって実行されるとインターネット関連通信(例えば、TCP/IP)およびコンテンツ表示プロセスを実行するソフトウェアを含むことができる。例えば、クライアントデバイス350は、製品情報を有するインターフェースを生成して表示するブラウザソフトウェアを実行することができる。したがって、クライアントデバイス350は、クライアントデバイス350がネットワーク370を介してコンポーネントと通信し、クライアントデバイス350に含まれる表示デバイスを介してインターフェース内にコンテンツを表示することを可能にするアプリケーションを実行することができる。
いくつかの実施形態では、図4に関連して以下でさらに説明するように、クライアントデバイス350は、APIマネージャ320とインタラクトするように特に構成されたアプリケーションを実行することができる。また、クライアントデバイス350は、1つまたは複数のアカウントを記憶することができる。例えば、クライアントデバイス350は、API交換中の認証のために、顧客の配送選好、顧客の位置、顧客アカウント、および顧客識別に関する情報を格納することができる。
開示されている実施形態は、クライアントデバイス350のいかなる特定の構成にも限定されない。例えば、クライアントデバイス350は、APIマネージャ320および/またはオンラインリソース340によって提供される機能を提供する動作を実行するためにモバイルアプリケーションを格納および実行するモバイルデバイスであってもよい。特定の実施形態では、クライアントデバイス350は、GPS測位などの測位サービスに関するソフトウェア命令を実行するように構成することができる。例えば、クライアントデバイス350は、地理的位置を決定し、位置データおよび位置データに対応するタイムスタンプデータを提供するように構成することができる。クライアントデバイス350は、図4に関連してさらに説明される。
データベース380は、顧客アカウント、API構成、メトリック(APIメトリックなど)、およびレポートのデータのAPIマネージャ320への提供と一致する動作を実行するように適切なソフトウェアによって構成された、1つまたは複数のコンピューティングデバイスを含むことができる。データベース380は、例えば、Oracle(商標)データベース、Sybase(商標)データベース、もしくは他のリレーショナルデータベース、またはHadoop(商標)シーケンスファイル、HBase(商標)、もしくはCassandra(商標)などの非リレーショナルデータベースを含んでもよい。データベース380はまた、データベース(複数可)のメモリデバイスに記憶されたデータに対する要求を受信および処理し、データベース(複数可)からデータを提供するように構成されたコンピューティング構成要素(例えば、データベース管理システム、データベースサーバなど)を含むこともできる。
データベース380は別個に示されているが、いくつかの実施形態では、データベース380は、APIマネージャ320またはオンラインリソース340に含まれてもよく、または他の様態で関連してもよい。
データベース380は、ユーザアカウントおよびAPI割り当てまたは記録された通信に関連するデータを収集および/または維持するように構成され得る。例えば、データベース380は、システム300のユーザのユーザプロファイルに関する情報を記憶することができる。さらに、データベース380は、特定のアドレスおよび/またはクライアントIDの配信方法を含む、アドレスおよびクライアントIDに関する情報を格納することができる。データベース380はまた、以前に生成されたAPIマッピングテーブルを記憶することができ、APIプラグインを記憶することができる。データベース380は、例えば、オンラインリソース340または第三者システム360を含む様々なソースからデータを収集することができる。さらに、データベース380は、クライアントデバイス350のオペレーティングシステムに関する情報を含むことができる。データベース380は、図5に関連して下記にさらに説明される。
いくつかの実施形態では、第三者システム360は、システム100の1つまたは複数の要素を含むことができる。例えば、第三者システム360は、3PLシステム121A~121C(図1)を含むことができる。付加的に、または代替的に、第三者システム360は、サービスプロバイダまたはフルフィルメントセンタなどのAPIマネージャ320に関連するエンティティによって提供される1つまたは複数のサーバまたはストレージサービスを含むことができる。第三者システム360はまた、ネットワーク370を介してシステム300に接続されてもよいが、他の実施形態では、第三者システム360は、システム300のいくつかの要素との直接接続を含んでもよい。例えば、遅延またはネットワーク輻輳を最小限に抑えるために、特定の第三者システム360は、プライベートネットワーク内でAPIマネージャ320と接続することができる。さらに、第三者システム360は、システム300の他の要素からの情報にアクセスするためにAPIマネージャ320からの情報を提供および/または要求するように構成され得る。いくつかの実施形態では、第三者システム360はネットワーク370に結合されてもよいが、それらはAPIマネージャ320のクライアントでなくてもよい。
ネットワーク370は、システム300の構成要素間の通信を提供するように構成された任意のタイプのネットワークであってもよい。例えば、ネットワーク370は、インターネット、ローカルエリアネットワーク、近距離無線通信(NFC)、またはシステム300の構成要素間の情報の送受信を可能にする他の適切な接続(複数可)など、通信の提供、情報の交換、および/または情報の交換の促進を行う任意の種類のネットワーク(インフラストラクチャを含む)であってもよい。他の実施形態では、システム300の1つまたは複数の構成要素は、専用通信リンク(複数可)を通じて直接通信することができる。さらに他の実施形態では、ネットワーク370は、例えば1つまたは複数のネットワークを編成する複数のネットワークを含むことができる。
システム300の機能的構成ブロックの構成および境界は、説明の便宜上、本明細書で定義されていることを理解されたい。指定された機能およびそれらの関係が適切に実行される限り、代替の境界を定義することができる。代替形態(本明細書に記載されたものの均等物、拡張、変形、逸脱などを含む)が諒解されよう。そのような代替形態は、開示されている実施形態の範囲内に含まれる。
ここで図4を参照すると、開示されている実施形態と一致する、例示的なクライアントデバイス350(図3)のブロック図が示されている。いくつかの実施形態では、クライアントデバイス350は、ユーザデバイス102A~B(図1A)を実装することができる。
一実施形態では、クライアントデバイス350は、1つまたは複数のプロセッサ402、1つまたは複数の入出力(I/O)デバイス404、および1つまたは複数のメモリ410を含むことができる。いくつかの実施形態では、クライアントデバイス350は、スマートフォンもしくはタブレット、汎用コンピュータ、またはこれらの構成要素の任意の組み合わせなどのモバイルコンピューティングデバイスの形態をとることができる。代替的に、クライアントデバイス350(またはクライアントデバイス350を含むシステム)は、開示されている実施形態と一致する1つまたは複数の動作を実行するソフトウェア命令の記憶、実行、および/または実装に基づいて、特定の装置、組み込みシステム、専用回路として構成されてもよい。いくつかの実施形態によれば、クライアントデバイス350は、開示されている実施形態と一致するウェブサイトにアクセスするウェブブラウザまたは同様のコンピューティングデバイスを含むことができる。
プロセッサ402は、lntel(商標)、NVIDIA(商標)によって製造されたモバイルデバイスマイクロプロセッサ、または他の製造業者からの様々なプロセッサなどの、1つまたは複数の既知の処理デバイスを含むことができる。開示されている実施形態は、クライアントデバイス350内に構成されたいかなる特定のタイプのプロセッサにも限定されない。
メモリ410は、開示されている実施形態に関連する機能を実行するためにプロセッサ402によって使用される命令を格納するように構成された1つまたは複数の記憶デバイスを含むことができる。例えば、メモリ410は、プロセッサ402によって実行されると動作を実行することができるプログラム412などの、1つまたは複数のソフトウェア命令によって構成することができる。開示されている実施形態は、専用のタスクを実施するように構成されている別個のプログラムまたはコンピュータに限定されない。例えば、メモリ410は、クライアントデバイス350の機能を実行する単一のプログラム412を含むことができ、またはプログラム412は複数のプログラムを含むことができる。メモリ410はまた、クライアントデバイス350を、システム300の他の要素と通信し、または、それらとインタラクトする動作を実行するように構成することができるクライアントアプリケーション414を含むことができる。例えば、クライアントアプリケーション414は、図7に関連してさらに説明するように、APIマネージャ320と通信する命令および/または製品情報要求を生成する命令を指定することができる。加えて、クライアントアプリケーション414は、クライアントデバイス350においてグラフィカルユーザインターフェース(GUI)を生成し、または表示されたGUIを修正するための命令を解釈することができる。メモリ410はまた、情報のクラスタを生成し維持するためにAPIマネージャ320によって使用され得るデータ416を格納することができる。
特定の実施形態では、メモリ410は、APIマネージャ320にアクセスし、または、これに要求を送信するための命令を格納することができる。例えば、メモリ410は、TCP/IPを介してAPIマネージャ320と通信するアプリケーションを含んでよい。さらに、他のソフトウェア構成要素は、APIマネージャ320から情報を要求し、またはクライアントデバイス350の位置を決定するように構成されてもよい。例えば、これらのソフトウェア命令は、プロセッサ(複数可)402によって実行されると、APIを使用してデータベース380からの情報の要求、および/または情報更新の要求を行うことができる。ソフトウェア命令はまた、クライアントデバイス350に表示されているウェブページを修正するためのスクリプトを実装することができる。
I/Oデバイス404は、クライアントデバイス350によってデータが受信および/または送信されることを可能にし、クライアントデバイス350がシステム300の他の構成要素などの他の機械およびデバイスと通信することを可能にするように構成された1つまたは複数のデバイスを含むことができる。例えば、I/Oデバイス404は、荷物の配送を確認し、または、ユーザに情報を提供するための画面を含んでもよい。I/Oデバイス404はまた、NFC通信のための構成要素を含むことができる。I/Oデバイス404はまた、タッチセンサ領域、ボタン、またはマイクロフォンなどの、ユーザがクライアントデバイス350とインタラクトすることを可能にする1つまたは複数のデジタルおよび/またはアナログデバイスを含むことができる。I/Oデバイス404はまた、クライアントデバイス350の向きおよび慣性を検出するための1つまたは複数の加速度計を含むことができる。I/Oデバイス404はまた、APIマネージャ320とインタラクトするための当該技術分野において知られている他の構成要素を含むことができる。
いくつかの実施形態では、クライアントデバイス350はまた、画像をキャプチャするカメラ420を含むことができ、ユーザが所望する製品の識別に使用することができる。そのような識別は、表示のためのコンテンツ情報に対する要求をトリガすることができる。付加的に、または代替的に、クライアントデバイス350は、ユーザがクライアントデバイス350のロックを解除してアカウントにアクセスし、情報に対する要求を送信し、アイテムを購入することを可能にする指紋センサ430を含むことができる。カメラ420および指紋センサ430の両方は、プロセッサ402によって動作することができ、暗号化セキュリティを使用して、ユーザが指紋またはカメラ情報に外部からアクセスすることを不可能にすることができる。
クライアントデバイス350の構成要素は、当業者には明らかなように、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの両方の組み合わせにおいて実装されてもよい。
ここで図5を参照すると、開示されている実施形態と一致する、例示的なデータベース380(図3)のブロック図が示されている。いくつかの実施形態では、データベース380は、システム100の要素に含まれてもよい。例えば、データベース380は、外部フロントエンドシステム103またはWMS 119(図1A)の一部であってもよい。
データベース380は、通信デバイス502と、1つまたは複数のデータベースプロセッサ504と、1つまたは複数のデータベースプログラム512およびデータ514を含むデータベースメモリ510とを含むことができる。データベース380は、HBase、MongoDB(商標)またはCassandra(商標)などのNoSQLデータベースを含んでもよい。代替的に、データベース380は、Oracle、MySQL、Microsoft SQL Serverなどのリレーショナルデータベースを含んでもよい。
いくつかの実施形態では、データベース380は、サーバ、汎用コンピュータ、メインフレームコンピュータ、またはこれらの構成要素の任意の組み合わせであってもよい。いくつかの実施形態では、データベース380は、APIマネージャ320などのシステム300の他の要素内に含まれる。開示されている実施形態と一致する他の実施態様も可能である。
いくつかの実施形態では、データベース380は、非リレーショナルデータベースと組み込みデータベースの両方を含んでもよい。例えば、データベース380は、Hbaseなどの非リレーショナルデータベース、および、RocksDB(例えば、キーバリューストア型データベース)などの埋込みデータベースとを含むことができる。
通信デバイス502は、オンラインリソース340、APIマネージャ320、またはSCMシステム117など、システム300またはシステム100の1つまたは複数の構成要素と通信するように構成され得る。特に、通信デバイス502は、APIマネージャ320を通じてクライアントデバイス350またはシステム300の他の要素と通信するように構成され得る。
データベース380の構成要素は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの両方の組み合わせにおいて実装されてもよい。例えば、データベース380の1つまたは複数の構成要素は、コンピュータ処理命令モジュールとして実装されてもよいが、データベース380の機能の全部または一部は、代わりに専用の電子機器ハードウェアにおいて実装されてもよい。
データベースメモリ510は、レコードのクラスタの生成、および/または、クライアントデバイス350からの情報要求への応答を行うための命令を含むことができるプログラム512を含むことができる。さらに、データベースメモリ510は、システム300の要素間の通信のための命令を含むことができる。例えば、データベースメモリ510は、クライアントデバイス350とAPIマネージャ320との間の通信のための命令を含むことができる。さらに、プログラム512は、APIマネージャ320によって処理されるときにリアルタイムで情報を格納するための命令を含むことができる。
データ514はまた、オンラインリソース340の情報、またはクライアントデバイス350からのユーザアカウントなど、ウェブページに関連付けられたデータであってもよい。データ514は、例えば、API割り当てまたは通信選好に関する情報を含むことができる。
図6は、開示されている実施形態と一致する、例示的なAPI移行システム600のブロック図である。API移行システム600において、APIマネージャ320(図3)は、クライアントアカウント610、サーバ&データセンタ620、通信分析器640、およびレポート生成器660に接続することができる。
クライアントアカウント610は、APIマネージャ320を通じてシステム300の他の要素とインタラクトすることができる、システム300(図3)内のユーザを含むことができる。例えば、クライアントアカウント610は、クライアントデバイス350、第三者システム360、および/またはオンラインリソース340に関連付けられたアカウントを含み得る。いくつかの実施形態では、クライアントアカウントは、買い物客のアカウント、内部サービスのアカウント、およびオンライン小売業者の顧客を含むことができる。付加的に、または代替的に、クライアントアカウント610は、販売者(例えば、販売者ポータル109を通じて接続されたアカウント)、作業員(例えば、労務管理システム125において指定される)、またはフルフィルメントセンタ(例えば、FMG 115)に関連付けられたアカウントを含むことができる。図6に示すように、クライアントアカウントは複数のグループに分割することができる。APIマネージャ320は、クライアントアカウント610を異なるグループに分類して、特定の構成を有するグループの各々についてAPIを実装および管理することができる。例えば、クライアントアカウント610は、第1のグループ612、第2のグループ614、および第3のグループ616に分類されてもよい。いくつかの実施形態では、図6に示すように、グループの各々は、互いに独立していてもよく(すなわち、各グループが固有のアカウントを有する)、グループは、請求アカウント610の総数の一部をサンプリングする。しかしながら、他の実施形態では、第1のグループ612、第2のグループ614、および第3のグループ616は、いくつかのアカウントを共有すること、および/またはアカウントの総数を含むことを行ってもよい。
クライアントアカウント610の第1のグループ612、第2のグループ614、および第3のグループ616への分割は、グループセグメント化規則に基づいてもよい。そのような実施形態では、APIマネージャ320は、API試験のためにクライアントアカウント610を分割するためのグループセグメント化規則を実装することができる。グループセグメント化規則は、例えば、グループの各々が同じ数のアカウントを有するような、グループサイズ規則を含むことができる。セグメント化規則はまた、各グループに、内部APIコールに関連付けられた少なくとも1つのアカウント、外部APIコールに関連付けられた1つのアカウント、および/または周期的なコールを生成するアカウントを有するように要求することができるアカウント多様性規則を含むことができる。例えば、セグメント化規則は、各グループが少なくとも毎分の要求を有するアカウントを含むことを指定することができる。アカウントカテゴリはまた、新しいアカウントおよび返品アカウントを含むことができ、セグメント化規則は、各グループに、新しいアカウントと古いアカウントの両方を有するように要求することができる。グループセグメント化規則はまた、特定の数のアカウントを含むことができ(例えば、各グループが、少なくとも1000個のアカウントを含むものとする)、地理的セグメント化のための規則を含むことができる。さらに、いくつかの実施形態では、セグメント化規則は、発信元デバイスタイプに基づいてアカウントを分割することができ、各グループが、例えば、モバイルデバイスに関連するアカウント、サーバに関連するアカウント、およびデスクトップコンピュータに関連するアカウントを含むことを要求する。さらに、グループセグメント化規則は、例えば、第1のグループ612が第2のグループ614よりも大きいこと、および第3のグループが第1のグループ616よりも大きいことを要求する、異なるグループのサイズ間の関係を指定してもよい。このタイプのセグメント化は、APIシステム評価の統計的有意性を保証するために重要であり得る。
いくつかの実施形態では、グループセグメント化規則は、動的であり、アカウントの挙動に基づいて変化するように構成され得る。例えば、APIマネージャ320は、グループの各々におけるアカウントの活動を監視することができる。APIマネージャ320は、アカウントが非アクティブであると判定した場合、そのアカウントをグループ化されていないアカウントとは異なるアカウントに置き換えることができる。
いくつかの実施形態では、図6に示すように、第3のグループ616は、第1の部分616Aおよび第2の部分616Bに細分化されてもよい。図12に関連してさらに説明するように、第3のグループ616を細分化することにより、複数のAPIを同時に実行する分離されたグループにおいて適合性試験を実行することが可能になる。ユーザグループ内の異なるAPIの同時動作は、API性能の下にある不適合性または冗長性を明らかにし得る。
クライアントアカウント610は、APIゲートウェイを通じてAPIマネージャ320に接続することができる。いくつかの実施形態では、APIマネージャ320は、APIゲートウェイA 632およびAPIゲートウェイB 634などの複数のAPIゲートウェイを含み得る。APIゲートウェイA 632およびAPIゲートウェイB 634は、クライアントアカウント610と、APIマネージャ320によってインターフェースされるバックエンドサービスとの間に位置し得る。いくつかの実施形態では、APIゲートウェイA 632およびAPIゲートウェイB 634は、APIコールを受け入れ、それらを実行するために必要な様々なサービスを集約し、適切な結果を返すためのリバースプロキシとして機能することができる。さらに、APIゲートウェイA 632およびAPIゲートウェイB 634は、ユーザ認証、レート制限、および統計などのタスクを処理することができる。
いくつかの実施形態では、APIゲートウェイA 632およびAPIゲートウェイB 634は、クライアントインターフェースをバックエンド実装から切り離すように構成され得る。したがって、クライアントアカウント610の1つが要求を行うと、APIゲートウェイA 632およびAPIゲートウェイB 634は、要求を複数の要求に分割し、それらを正しいモジュールにルーティングし(図7に関連してさらに説明するように)、応答を生成し、追加のコールを追跡することができる。
いくつかの実施形態では、APIゲートウェイA 632およびAPIゲートウェイB 634は、異なるAPIグループまたはシステム専用であってもよく、異なるアカウントに割り当てられてもよく、同時に動作するように構成されてもよい。例えば、APIゲートウェイA 632が第1のグループ612からのコールを処理する一方、APIゲートウェイB 634は第2のグループ614からのコールを処理してもよい。さらに、APIゲートウェイA 632が、レガシAPIによって(以前に展開された関数および動作によって)処理するためのコールを行うことができる一方、APIゲートウェイB 634は、更新または変更されたAPIによって(新しい関数および動作によって)処理するためのコールを行うことができる。このように多様なAPIゲートウェイを有することにより、APIマネージャ320は、異なるAPIをクライアントアカウントの異なるグループに割り当てることによって、自動化されたアッセイにおいて異なるAPIの性能を試験および比較することができる。そのような構成は、APIマネージャ320が、2つ以上のAPIの性能および適合性を比較するための自動化された分割試験またはバケット試験を実行することを可能にすることができる。図6に示すように、いくつかの実施形態では、APIマネージャ320は、第1のグループ612および第1の部分616Aからの通信を処理するようにAPIゲートウェイA 632を構成し、第2のグループ614および第2の部分616Bからの通信を処理するようにAPIゲートウェイB 634を構成することができる。例えば、APIマネージャ320は、ユーザのグループおよび割り当てられたゲートウェイを指定するAPIマッピングテーブルを使用して、APIゲートウェイA 632およびAPIゲートウェイB 634を特定のアカウントに割り当てることができる。
ゲートウェイに加えて、APIマネージャ320はまた、APIゲートウェイA 632およびAPIゲートウェイB 634からのデータをログ記録することができるメタデータストレージ636を含むことができる。例えば、メタデータストレージ636は、ゲートウェイを通じてクライアントアカウント610から受信されるバケットアクセス制御、チャネル、デフォルトオブジェクト制御、通知、オブジェクト、キー、およびプロジェクトを記録することができる。いくつかの実施形態では、メタデータストレージに格納された情報は、図14に関連してさらに説明するように、APIメトリックの計算に使用することができる。
APIマネージャ320は、サーバ&データセンタ620と接続され、APIコールを処理した後に情報を要求することができる。例えば、APIマネージャ320は、クライアントアカウント610に関連付けられたクライアントデバイスからの要求を処理し、サーバ&データセンタ620からの情報を要求して、クライアント要求を解決することができる。いくつかの実施形態では、ユーザがAPIコールを通じてアイテム情報を要求すると、APIマネージャ320はその情報をサーバ&データセンタ620からフェッチしてクライアントに中継することができる。いくつかの実施形態では、サーバ&データセンタ620は、オンライン小売業者のサーバを含むことができる。代替的に、APIマネージャ320は、サーバ&データセンタ620とインタラクトするために、異なるシンタックス間で命令を変換することができるメソッドコンバータ625を介してサーバ&データセンタ620に接続されてもよい。例えば、APIコールがあるフォーマットで受信されたが、そのフォーマットがもはや使用可能または効率的ではないとAPIマネージャが判定した場合、APIマネージャ320は、命令を選択されたフォーマットに調整するようにメソッドコンバータ625に命令することができる。
サーバ&データセンタ620と結合されることに加えて、APIマネージャ320はまた、比較および適合性評価を実行するためにAPIマネージャ320を通じて入来する通信をキャプチャおよびソートすることができる通信分析器640に結合することができる。通信分析器640は、ネットワーク分析器642を含むことができる。ネットワーク分析器642は、クライアントアカウント610との間の通信パケットをフィルタリングしてキャプチャするように構成され得る。いくつかの実施形態では、APIマネージャ320は、ネットワーク分析器642によるフィルタリングまたはソートを促進するために、同時APIの各々によって処理される通信をラベル付けすることができる。さらに、通信分析器640は、分離されたグループの各々について通信からのパケットまたはデータを格納するように構成され得る専用メモリ644A~644Cを含み得る。各APIおよび各クライアントアカウントグループの性能の後の分析を促進するために、専用メモリ644A~644Cは、分離されたグループの1つに関連するデータを排他的に格納するように構成されてもよい。例えば、専用メモリ644Aは、第1のグループ612に関するデータを記憶してもよく、専用メモリ644Bは、第2のグループ614に関するデータを記憶してもよく、専用メモリ644Cは、第3のグループ616に関するデータを記憶してもよい。このデータの分離は、後のデータ処理を促進することができる。いくつかの実施形態では、ネットワーク分析器642は、(第1のグループ、第2のグループ、および第3のグループ内の)クライアントアカウントに関連付けられたクライアントデバイスから入来するパケットをキャプチャし、各グループからキャプチャしたパッケージを専用メモリ644A~644Cなどの独立したメモリ空間に格納するように構成されてもよい。
図6に示すように、通信分析器640は、メトリックを推定し、APIの性能およびそれらの適合性を評価することができるレガシ/更新分析器650に結合することができる。例えば、専用メモリ644A~644C内の情報に基づいて、レガシ/更新分析器650は、APIゲートウェイA 632およびAPIゲートウェイB 634によって処理されるAPIの性能を比較するために、インフラストラクチャAPIメトリック、アプリケーションAPIメトリック、およびAPI製品メトリックを決定することができる。さらに、レガシ/更新分析器650は、API適合性を判定し、例えば、HTTP応答コードの挙動を分析することができる。レガシ/更新分析器650は、図10に関連してさらに説明される。
レガシ/更新分析器650は、API性能についての適合性および/または比較レポートを生成することができるレポート生成器660に情報を提供することができる。例えば、レポート生成器660は、試験されているAPIの一方が他方よりも悪い性能を有する場合に警告を生成してもよく、または、いずれの機能もしくはプロセスが不適合性を引き起こしているかに関するレコメンドを提供してもよい。いくつかの実施形態では、レポート生成器660は、警告またはレコメンドをブロードキャストする電子メールまたはメッセージを管理者ネットワーク670に送信することができる。レポート生成器660はまた、APIマネージャ320に命令を送信するように構成されてもよい。例えば、いくつかの実施形態では、レガシ/更新分析器650は、更新済みまたは現在のAPIがレガシAPIよりも良好に機能していると結論付けることができる。さらなるレガシ/更新分析器650は、有意な比較可能性の問題がないと判定することができる。そのようなシナリオでは、レポート生成器660は、更新APIを優先してレガシAPIに割り当てられたアカウントを切り替えるための命令をAPIマネージャ320に送信することができる。いくつかの実施形態では、APIマネージャ320は、APIゲートウェイA 632をオフにし、更新済みAPIによって処理されるように、レガシAPIに関連付けられたクライアントアカウントを再割り当てすることができる。
図7は、開示されている実施形態と一致する、例示的なAPIルーティングシステム700のブロック図である。システム700は、異なるレベルおよびタイプのAPIを選択することによってクライアントデバイス350からのAPIコールを解決するために利用され得る。さらに、システム700において、クライアントデバイス350の各グループは、API動作全体の自動比較を可能にするために、異なるAPIグループおよび/または経路に割り当てられてもよい。
システム700において、注文ゲートウェイ704は、クライアントデバイス350から要求を受信することができる。いくつかの実施形態では、注文ゲートウェイ704は、図8に関連してさらに説明されるように、情報のストリームを収集し、それらをリアルタイムで処理するためのストリーム処理ソフトウェアを用いて実装されてもよい。注文ゲートウェイ704は、クライアント要求およびAPIコールを異なるAPIサービスにルーティングすることができるルータAPI 710に情報を提供することができる。例えば、ルータAPI 710は、要求が第1のグループ612に関連付けられたアカウントから入来していると識別したときにAPIコールをレガシAPIシステムにルーティングすることができ、一方で、要求が第2のグループ614に関連付けられたアカウントから入来していると判定したときにAPIコールを更新済みAPIシステムにルーティングすることができる。いくつかの実施形態では、ルータAPI 710は、APIマッピングテーブルおよび注文エントリ704によって抽出された情報に基づいて、要求を処理するためにAPIゲートウェイA 632またはAPIゲートウェイB 634の内の一方を選択することができる。
ルータAPI 710は、複数のレベルのAPIを含むことができる異なる内部APIを通じて要求を案内することができる。第1レベルAPIは、いくつかの他のAPIの内容、特徴、および機能を生成することができる。第1レベルAPIは、プロジェクトデータフォーマット、インタラクションタイミング、またはプロトコルを特定のチャネルおよびコンテキストに指定することができる。第1レベルAPIは、注文の提出722、注文の取得724、および注文ステータスの確認726の機能を含むことができる。
第1レベルAPIは、第2レベルAPIと通信することができる。第2レベルAPIは、データを組み合わせ、特定のタスクのために他のAPIを調整することができる。例えば、第2レベルAPIは、企業向け提供物のポートフォリオ(例えば、製品およびサービス)をサポートすることができる。第2レベルAPIは、注文ブロードキャスト732、内部注文734、および注文追跡736のための機能を含むことができる。これらの機能は、論理および組織化を可能にすることができる。他のレベルとは異なり、第2レベルAPIはエンドシステムと直接通信せず、代わりに第3レベルAPIに接続してデータを取得する。いくつかの実施形態では、第2レベルAPIは、複数のシステムからのデータを集約するために表現可能状態伝達関数(REST)を使用する。
第2レベルAPIは、クライアントデバイス350に情報を返すこと、および/またはクライアントデバイス350とバックエンドシステムとの間の直接インタラクションを可能にすることを行うように構成され得る第3レベルAPIと通信し得る。第3レベルAPIは、2つ以上のバリューストリームおよび/または企業能力をサポートすることができる。第3レベルAPIは、例えば、直接JavaコールまたはSAPコールを使用してシステムと通信するように構成され得る。第3レベルAPIは、システム固有の接続および設定を処理し、リソースおよび標準フォーマットを公開することができる。第3レベルAPIは、サービス交換742、注文キュー744、注文データベースアクセス746、および注文追跡のための機能を含むことができる。
レガシAPIおよび更新済みAPIは、第1~第3レベルAPIの各々を含むことができる。したがって、APIルーティングシステム700は、クライアントデバイス350からのAPIコールを解決するための例示的な経路構成を示しているが、異なるソースのコールを処理するために同様のプロセスを実行することができる。例えば、同様のアーキテクチャを利用して、情報に対する内部要求の処理、および/またはフルフィルメントセンタとの通信を行うことができる。
図8は、開示されている実施形態と一致する、例示的なAPIコールプロセスフロー800のブロック図である。プロセスフロー800は、APIマネージャ320がどのようにデータストリーム(例えば、クライアントデバイス350からのAPIコールのストリーム)を処理することができるかを表す。例えば、APIマネージャ320は、プロセスフロー800を使用して、比較または分割実行API試験のためにAPIコールのストリームを処理およびソートすることができる。いくつかの実施形態では、プロセスフロー800を通じて、APIマネージャ320は、APIコールのストリームを複数のAPIゲートウェイにルーティングすることができる。
プロセスフロー800において、イベントログ802は、入来するデータストリームを受信することができる。入来するデータストリームは、情報または動作を要求するクライアントデバイスおよびシステムのユーザからのAPIコールまたは要求のストリームを含むことができる。例えば、入来するデータストリームは、注文および/または追跡要求を含むことができる。いくつかの実施形態では、イベントログ802は、リアルタイムフィードの高スループット処理を提供するApache Kafkaなどのストリーム処理ソフトウェアによって実装することができる。例えば、イベントログ802は、Javaストリーム処理ライブラリを含み、ネットワークラウンドトリップのオーバーヘッドを低減するためにメッセージをともに自然にグループ化する「メッセージセット」抽象化に依存するバイナリTCPベースのプロトコルを使用することができる。
次いで、イベントログ802は、メッセージセットおよび/または処理されたデータストリームをクラスタイベントストリーム804に通信することができる。クラスタイベントストリーム804は、入来するデータコールのクラスタのグループを生成し、生成されたグループに基づいて、一般的な動作実行をサポートするために最適化されたエンジンを提供することができる。いくつかの実施形態では、クラスタイベントストリーム804は、間隔、地理、および/またはクライアントアカウント分類に基づいてデータストリームのバッチを作成することができる。このデータのクラスタリングは、同様の要求および/または通信経路に基づいてAPIコールをバッチ処理することによってAPIコールを最適化することができる。いくつかの実施形態では、クラスタイベントストリーム804は、Apache Sparkによって実装することができる。
クラスタ化されたイベントは、リアルタイム分析、データ統合、通知管理、および適応的意思決定などの使用事例のためのイベント駆動アプリケーションを含むことができるイベント統合プロセッサ806に送信することができる。イベント統合プロセッサ806は、多様なデータソースからイベントをキャプチャし、それらを処理および分析し、複数のサービスおよびデータストアと統合し、出力をリアルタイムで様々なエンドポイントに発行することができる。その後、統合イベントは、分散文書ストア808の非構造化文書に記憶され得る。分散文書ストア808は、アドホッククエリ、インデックス付け、複製、および負荷分散を可能にするNoSQLデータベースプログラムによって実装することができる。
マイクロサービスモジュール810は、分散文書ストア808内のデータを消費して、仮想化コアにおいてイベントを識別し、イベントを処理することができる。例えば、マイクロサービスモジュール810は、専用仮想コアにおいて実行される複数のイベント駆動アプリケーションフレームワークを利用することができる。マイクロサービスモジュール810は、(それらがAPI関数または構成の異なるバージョンを使用している場合でも)APIコールを処理およびフィルタリングし、例えばAPIマネージャ320による後の処理のためにそれらを正規化または変換することができる。
マイクロサービスモジュール810において、プロセスフロー800は、それらの識別およびルーティングを促進するために解析および正規化リアルタイムデータストリームを有することができる。この準備段階を実行することにより、バケット試験を実行するために、異なるAPIシステム(例えば、レガシ対現在)の下でのAPIコールの区別が可能になる。イベントログ802、クラスタイベントストリーム804、および、さらには統合プロセッサ806を通ることによって、後の評価および/または比較のために関連情報を収集しながら、グループを識別し、それらをAPIシステムのうちの1つに正しくルーティングすることが可能である。
マイクロサービスモジュール810は、処理されたAPIコールの有効性を検証することができる認証プロバイダ812、および、コールをAPIゲートウェイに供給するためにコールを編成することができるイベントバス814と通信することができる。認証プロバイダ812は、トークンに基づく認証を含むこと、および/またはマイクロサービスモジュール810内の各マイクロサービスにおいてセキュリティコンポーネントを実装することができる。イベントバス814は、サービス間通信を処理することができる。いくつかの実施形態では、イベントバス814は、非同期イベント駆動型通信のためのメディエータチャネルとして機能することができる。さらに、イベントバス814は、パブリッシュ/サブスクライブ、分散、ポイントツーポイント、および要求-応答メッセージングをサポートすることができる。いくつかの実施形態では、イベントバス814は、クライアントがイベントバス814を使用して対応するサーバノードと通信することを可能にすることができる。
認証プロバイダ812およびイベントバス814は、レガシAPIゲートウェイ818と更新APIゲートウェイ820の両方と通信することができる。例えば、認証プロバイダ812は、入来するデータストリームにおけるAPIコールの検証を提供することができ、一方、イベントバス814は、マイクロサービスモジュール810および/またはイベント統合プロセッサによって生成される特定の要求および関連するタグ付きメタデータに関する情報を提供することができる。いくつかの実施形態では、レガシAPIゲートウェイ818および更新APIゲートウェイ820は、APIゲートウェイA 632およびAPIゲートウェイB 634(図6)によって実装され得る。
図9は、開示されている実施形態と一致する、APIコールの分析および比較のための例示的なシステム900のブロック図である。いくつかの実施形態では、システム900は、システム600のサブシステムであってもよい。例えば、システム900は、APIマネージャ320がAPI性能のリアルタイム評価を行うことを目標とするときに、レガシ/更新分析器650を実装することができる。
システム900は、ネットワーク分析器および/またはクライアントアカウントのグループに関連する通信から情報を受信することができるデータストリームモジュール902を含むことができる。例えば、データストリームモジュール902は、APIマネージャ320を通じて行われる通信のパッケージまたは情報をキャプチャする際に、ネットワーク分析器642(図6)から情報を受信することができる。データストリームモジュール902は、データフィルタリング、識別、または正規化を実行することができるインジェストエンジン904にこの情報を送信することができる。例えば、インジェストエンジン904は、リアルタイムで分析することができるようにAPIコールを構造化および編成するためのデータ準備機能を用いて自動データ取り込みを実行することができる。インジェストエンジン904は、APIコールのバッチ取り込みおよびストリーミング取り込みの両方を実行することができる。
いくつかの実施形態では、インジェストエンジン904は、メモリ分離モジュール906を通じて、処理されたデータを専用メモリ644A~C(図6)などの専用メモリに格納することができる。付加的に、または代替的に、インジェストエンジン904は、2つ以上のAPIシステムからのデータをソートするキューモジュール908に情報を提供することができる。次いで、この編成されたデータは、ログパイプライン912を通じてリアルタイム分析モジュール914に送信され得る。リアルタイム分析は、各APIシステムで処理されたAPIコールのレコードに基づいてAPIメトリックを推定することができる。図14に関連してさらに説明されるように、リアルタイム分析モジュール914は、APIインタラクションのメトリックに基づいて性能を定量化することができる。例えば、リアルタイム分析モジュール914は、ログパイプライン912を通じて入来する情報に基づいて、レイテンシ、適合性、およびエラーメトリックなどのメトリックを決定することができる。さらに、いくつかの実施形態では、リアルタイム分析モジュール914は、2つ以上のAPIの追加の試験を実行することができる。例えば、リアルタイム分析モジュール914は、同一のGET、POST、およびPUT要求を複数のAPIに送信し、結果を比較することができる。
リアルタイム分析モジュール914からの出力は、コンパイラ916に送信することができ、コンパイラは、推定メトリックを集約し、適合性および比較レポータ918に中継される統計を決定することができ、適合性および比較レポータ918は、異なるAPIシステム間の適合性および比較レポートを生成することができる。適合性および比較レポータ918は、例えば、更新済みAPIがレガシAPIと適合性があるか否か、および/またはそれらが改善されたメトリックを有するか否かを判定するために、リアルタイム分析モジュール914によって生成されたメトリックを使用することができる。さらに、適合性および比較レポータ918は、不適合性を引き起こす機能またはルーチンを指定するレポートを生成することができる。そのような実施形態において、適合性および比較レポータ918は、ソース適合性(例えば、更新済みAPIに対してコンパイルできない、レガシAPIに対して書かれたコード)およびバイナリ適合性(例えば、更新APIライブラリに対してリンク/実行できない、レガシAPIに対してコンパイルされたコード)に関する問題を含み得る。さらに、適合性レポートは、レガシAPIと更新済みAPIとの間の通信エラーを表すワイヤ適合性、および予期しない結果を示す意味的適合性も含むことができる。
いくつかの実施形態では、適合性および比較レポータ918は、警告またはAPIの性能を比較するレポートを生成し得る。例えば、適合性および比較レポータ918は、オンライン比較器における被試験エンドポイントの入力および応答を詳述するオンラインJavaScript Object Notation(JSON)比較器から結果を生成し、すべてのエンドポイントについて繰り返すことができる。
図10は、開示されている実施形態と一致する、API移行のための例示的なスプリットラン試験システム1000のブロック図である。スプリットラン試験システム1000は、2つ以上のAPIの自動比較評価のためのレガシ/更新分析器650(図6)の構成を示す。
図10に示すように、レガシ/更新分析器650は、2つのAPIの性能を比較し、それらの適合性を判定するための複数のモジュールを含むことができる。モジュールは、メタデータ比較器1012、プロキシ比較器1014、クライアント比較器1016、および配分レコード1018を含むことができる。メタデータ比較器1012は、各APIの通信におけるメタデータを比較することができる。例えば、メタデータ比較器1012は、異なるAPIゲートウェイによって処理される各APIコールまたは通信からのアドレス、位置、および時間などの、通信におけるメタデータを検索および分析することができる。プロキシ比較器1014は、各APIの実行時間および計算リソースの使用を比較することができる。例えば、プロキシ比較器1014は、APIランタイム、バックエンドシステムとのインタラクションの数、およびAPIクライアントに返送された応答の数を比較することができる。さらに、プロキシ比較器1014は、セキュリティ対策間の差を判定することができる。プロキシ比較器1014は、バックエンド保護と認証の成功率とを比較することができる。
クライアント比較器1016は、APIシステムの各々を利用するAPIクライアントを比較することができる。例えば、クライアント比較器1016は、APIの各々を使用してAPI顧客を識別および評価することができる。例えば、クライアント比較器1016は、各APIに要求を送信するデバイスまたはアカウントを記憶することができる。クライアント比較器1016はまた、APIクライアントのインタラクション中に各APIクライアントによる使用レベルおよびソフトウェア開発キット(SDK)の使用を評価することができる。配分レコード1018は、表現可能状態伝達(REST)APIエンドポイントを通じて要求された各APIからの配分および取得要求をバックサーバと比較することができる。さらに、配分レコード1018は、レガシAPIおよび更新APIから渡されるコンテキストと比較される配分規則を実装することができる。配分レコード1018はまた、複数のAPIに関連付けられた要求に応答するために割り当てられたコンピューティングリソースの配分を記憶することができる。
レガシ/更新分析器650内のモジュールは、2つのAPIの性能の自動評価を可能にする。例えば、レガシ/更新分析器650は、メタデータ比較器1012、プロキシ比較器1014、クライアント比較器1016、および配分レコード1018を使用して、異なるAPIの自動評価および仮移行を可能にする比較および/または適合性メトリックを生成することができる。したがって、いくつかの実施形態では、レガシ/更新分析器650は、レガシAPIと更新済みAPIとの間の比較性能を反映することができる比較対象メトリック1022を出力することができる。
図10に示すように、レガシ/更新分析器650は、試験定義1020および冗長性フィルタ1006に結合することができる。試験定義1020は、例えば、管理者ネットワーク670(図6)によって定義することができ、APIコール収集の長さ、試験されるAPIシステムの数の指定、および/またはクライアントアカウントセグメント化規則の指定を行うことができる。冗長性フィルタ1006は、レガシAPI 1002および更新済みAPI 1004のシステムに結合することができる。例えば、レガシAPI 1002および更新済みAPI 1004は、それぞれAPIゲートウェイA 632およびAPIゲートウェイB 634に結合され得る。比較評価を促進し、比較分析中に使用されるリソースを最小限に抑えるために、冗長性フィルタ1006は、レガシAPIと更新済みAPIの両方で同じ特性を有するコールを除去することができる。レガシAPI 1002と更新済みAPI 1004との間で、いくつかの関数は変更されないままであり得る。例えば、特定の基本動作は、APIの1つのバージョンから他のバージョンまで存続し得る。特定の状況(例えば、適合性を評価する場合)では、2つのAPIシステム間の類似のまたは冗長なコールを追跡することは不要である可能性、および/または無関係な監視を引き起こす可能性がある。したがって、冗長性フィルタ1006は、冗長なコールを排除して、それらをスプリットラン分析から除去することができる。しかしながら、他の実施形態は、より一般的なアプローチを対象とし、各APIシステムの複数のコンポーネント間のインタラクションを評価するために冗長なコールさえも収集することができる。
図11は、開示されている実施形態と一致する、スプリットラン試験のための例示的なAPIマッピングテーブル1100である。APIマッピングテーブル1100は、ユーザグループまたはカテゴリ化を記述するAPIクライアント1102を含むことができる。例えば、APIマッピングテーブル1100において、行は、レガシグループ1110(例えば、第1のグループ612)、更新グループ1112(例えば、第2のグループ614)、適合性グループA(例えば、第1の部分616A)、および適合性グループB(例えば、第2の部分616B)などのクライアントアカウントグループを含むことができる。APIマッピングテーブル1100は、APIクライアント1102の各々について、割り当てられたAPIを指定することができる。図11に示すように、割り当てられたAPI 1104は、2つのオプション「API 1」および「API 2」のうちの1つから選択することができる。例えば、APIマッピングテーブル1100は、レガシグループ1110および適合性グループA 1112がレガシAPIを(例えば、図6のAPIゲートウェイA 632を通じて)使用し、一方、更新グループ1112および計算性グループBが更新済みAPIを(例えば、APIゲートウェイB 634を通じて)使用することを指定することができる。
APIマッピングテーブル1100はまた、APIに関連付けられる方法、および/またはAPIクライアント1102グループの各々によって許可される方法を指定することができる。いくつかの実施形態では、異なるAPIは同じ方法および機能を有し得る。他の実施形態では、図11に示すように、異なるAPIは、異なる方法を有すること、ならびに/または追加の方法および機能を含むことができる。
さらに、APIマッピングテーブル1100は、APIクライアント1102グループの各々について試験シナリオ1108を指定することができる。例えば、APIマッピングテーブル1100は、レガシ/更新分析器650が実行する分析のタイプを判定し、試験定義1020(図10)のパラメータを提供することができる。さらに、APIマッピングテーブル1100は、レガシ/更新分析器650がAPIクライアント1102グループの各々についてロード時間、応答時間、および/または書き込み時間を比較することになるか否かを指定することができる。
図12は、開示されている実施形態と一致する、例示的なAPI移行試験プロセス1200の流れ図である。いくつかの実施形態では、システム300の要素がプロセス1200を実行することができる。例えば、下記のステップの説明で開示されるように、APIマネージャ320がプロセス1200を実行することができる。代替的または付加的に、第三者システム360が、プロセス1200またはプロセス1200の一部を実行してもよい。さらに、他の実施形態では、システム100またはシステム100の一部が、プロセス1200を実行してもよい。例えば、外部フロントエンドシステム103、内部フロントエンドシステム105、および/またはFMG 115が、プロセス1200を実行してもよい。
ステップ1202において、APIマネージャ320は、グループセグメント化規則に従ってクライアントアカウントをグループに分離することができる。例えば、APIマネージャ320は、クライアントアカウント(図6のクライアントアカウント610など)の集団を取得し、それを第1のグループ612、第2のグループ614、および第3のグループ616などの3つ以上のグループ部分集団に分割して、API試験/評価を開始することができる。そのような分割のために、APIマネージャ320は、グループセグメント化規則を利用することができ、これは、部分集団の各々においてアカウントの数を同じにすること、部分集団の各々においてモバイルデバイスの数を同じにすること、および/または集団の各々におけるアカウントの多様性を最大化することを含むことができる。例えば、APIマネージャ320は、ユーザアカウントの少なくとも1つのカテゴリがある部分集団を生成することができ、ユーザアカウントは、外部小売業者、サードパーティ供給元、ユーザアカウント、および/または内部部門を含むことができる。代替的に、または付加的に、グループセグメント化規則は、クライアントアカウントグループの相対サイズを指定することができる。例えば、いくつかの実施形態では、APIマネージャ320は、第1のグループおよび第2のグループが第3のグループよりも多数のクライアントアカウントを含むようにグループを生成してもよい。
いくつかの実施形態では、図6に示すように、ステップ1202において、APIマネージャ320は、第1のグループ、第2のグループ、および第3のグループにクライアントアカウントを分離することができ、各グループは別個のメンバを有する。例えば、図6に関連して前述したように、APIマネージャ320は、クライアント集団を3つのグループに分割し、API適合性を評価するために使用され得るサブグループを生成することができる。
ステップ1204において、APIマネージャ320は、ステップ1202において生成されたグループと通信するためのAPIを割り当てることができる。通信のために選択されたAPIは、レガシAPIおよび更新APIを含むことができる。例えば、APIマネージャ320は、異なるグループからのAPIコールに応答するAPIゲートウェイを指定するAPIマッピングテーブルを構成することができる。付加的に、または代替的に、APIマネージャ320は、アドレスおよび/またはクライアントIDに基づいて異なるAPIシステムによってAPIコールを解決するために、ルータAPI 710(図7)などのAPIルータを構成することができる。いくつかの実施形態では、ステップ1204において、APIマネージャは、第1のグループと通信するための第1のAPI(例えば、レガシAPI)および第2のグループと通信するための第2のAPI(例えば、新しいAPIまたは変更されたAPI)を割り当ててもよい。ステップ1204において、APIマネージャは、第3のグループの第1の部分と通信するための第1のAPI、および、第3のグループの第2の部分と通信するための第2のAPIを割り当てる。
ステップ1206において、APIマネージャ320は、ネットワーク分析器642(図6)などのネットワーク分析器を使用して、グループの各々から通信を収集することができる。例えば、APIマネージャ320は、ステップ1202において形成されたグループの各々からのAPIコールに関連する通信をキャプチャするようにネットワーク分析器を構成することができる。いくつかの実施形態では、APIマネージャ320は、双方向通信(例えば、API要求および応答)を処理するためにルータポイントにおいて通信を収集し、有意なサンプルを提供する所定の間隔にわたるデータを収集するようにそれを構成することができる。収集は、統計的に有意なデータをもたらす十分な数のサンプルを収集するために、特定の時間間隔に対して定義されてもよく、またはデータストリームが到着するときにリアルタイムで実行されてもよい。例えば、APIマネージャ320は、数時間の予想される高トラフィック中に情報を収集して、豊富で多様な数のAPIコールを収集するようにネットワーク分析器を構成することができる。そのような実施形態では、ステップ1206において、APIマネージャ320は、一定の時間間隔中に第1のグループ、第2のグループ、および第3のグループから通信を収集し、各グループに関連付けられたメトリックを生成することができる。代替的または付加的に、APIマネージャ320は、例えば、データのストリームを処理および評価するためのプロセスフロー800を使用して、リアルタイムで通信収集を実行することができる。さらに、APIマネージャ320は、APIメトリックの処理および生成を促進するために、ステップ1206において通信をフィルタリングすることができる。例えば、ステップ1206において、APIマネージャ320は冗長性フィルタ1006を実装して、重複したAPIコールをフィルタリングし、または、レガシAPI 1002と更新API 1004との間で不変のままの挙動を識別することができる。
ステップ1208において、APIマネージャ320は、グループの各々についてAPIメトリックを計算および/または生成することができる。ステップ1202におけるグループの各々に関連付けられたAPIコールからの結果に基づいて、APIマネージャ320は、APIの性能を評価するために、インフラストラクチャ、アプリケーション、および/または製品メトリックなどのAPIメトリックを推定することができる。例えば、いくつかの実施形態では、APIマネージャ320は、レガシAPIおよび更新済みAPIのAPIメトリックを決定することができる。図14に関連してさらに説明するように、APIマネージャ320は、特定のAPIアプリケーションおよび/またはサンプルにおいてキャプチャされたコールに基づいてAPIメトリックを判定することができる。APIマネージャ320がシステム900を含む実施形態では、メトリックを生成することは、リアルタイム分析モジュール914(図9)を利用してメトリックを計算することを含み得る。代替的または付加的に、APIマネージャ320は、レガシ/更新分析器650と通信して、2つ以上のAPIの性能を推定し、比較対象メトリック1022を生成することができる。
ステップ1210において、APIマネージャ320は、ステップ1208のAPIメトリックを使用して適合性および比較レポートを生成することができる。例えば、APIマネージャ320は、不一致メトリック、一貫性のないコール、または不十分なインフラストラクチャ性能のレポートを生成することができる。図13に関連してさらに説明するように、APIマネージャ320は、適合性および比較レポートを生成するときに、APIメトリックおよび/またはスコアを閾値と比較することができる。いくつかの実施形態では、比較レポートは、レガシAPIの動作と更新済みAPIの動作との間でAPIメトリックを比較することができる。例えば、比較レポートは、レガシメトリックおよび更新済みメトリックにおけるコールに関連付けられたメトリックを含むことができる。さらに、適合性レポートは、レガシAPIと更新済みAPIの両方を動作させているグループ内のAPIメトリックを指定することができる。そのような実施形態では、適合性レポートは、2つのAPIを同時に動作させることがシステム全体に影響を及ぼす適合性の問題を生成するか否かを識別しようとするために、API間の不一致を識別することができる。いくつかの実施形態では、ステップ1210において、APIマネージャ320は、レポート生成器660(図6)から適合性および比較レポートを要求することができる。
適合性レポートは、APIマネージャ320が、ユーザに2つのAPIシステムを同時に動作させる効果を評価することを可能にすることができる。状況によっては、クライアントは、APIの変化または更新を考慮してシステムを更新することができない場合がある。したがって、両方のAPI(レガシおよび更新済み)を同時に動作させることが必要になる。適合性レポートは、同時API動作に関する問題を識別することができる。適合性レポートは、ソース適合性、バイナリ適合性、ワイヤ適合性、および意味的適合性を指定することができる。適合性レポートは、レガシAPIと更新APIとの間に、除去またはリネームされたサービス、HTTPバインディングの変更、フィールドのタイプの変更、またはリソースフォーマットの変更があるか否かを示すことができる。適合性レポートはまた、HTTP定義内のURLフォーマットを変更した特定のコールを指定することもできる。付加的に、または代替的に、適合性レポートは、API間のソース、バイナリ、および意味的適合性エラーを指定することができる。
さらに、特定の実施形態では、APIマネージャ320はまた、第1のグループに関連付けられたAPIメトリックと第2のグループに関連付けられたAPIメトリックとを比較する比較レポートを生成し、同時に、(両方のAPIによって動作している)第3のグループに関連付けられたAPIメトリックに基づいて適合性レポートを生成することもできる。そのような実施形態では、APIマネージャ320は、各APIが異なる要求または方法をどのように処理しているかを評価するために、JSONまたはGSON比較器を使用することができる。そのような実施形態では、APIマネージャ320は、各APIシステムにおける同様の通信のためにメタデータおよびキーを比較するJSONパス抽出ポストプロセッサを使用することができる。さらに、比較レポートは、第1のグループからのAPIコール間の不一致、および第1のグループに関連付けられたメトリックと第2のグループに関連付けられたメトリックとの間の差を指定することができる。
いくつかの実施形態では、比較および適合性レポートは、スコアを含んでもよい。APIマネージャ320は、比較レポートに基づいて比較スコアを決定し、適合性レポートに基づいて適合性スコアを決定することができる。APIマネージャ320は、単一の数で、2つのAPI間の性能の評価を提供する比較スコアを決定してもよい。例えば、レガシAPIに関連付けられたAPIメトリックが更新APIに関連付けられたメトリックよりも不良である場合、比較スコアは正であり、高くなり得る。対称的に、レガシAPIに関連付けられたAPIメトリックが更新APIに関連付けられたメトリックよりも良好である場合、比較スコアは負であること、および/または、低くなることがあり得る。比較レポートはまた、閾値比較を含んでもよい。
同様に、APIマネージャ320は、適合性レポートに基づいて適合性スコアを計算することができる。不適合性ではない多くの関数、またはレガシAPIおよび更新APIを同時に使用するグループから入来する通信において多くのエラーがある場合、APIマネージャ320は低い適合性および/または負の適合性のスコアを割り当てることができる。しかし、レガシおよび更新APIを同時に使用するグループからの不適合性およびエラー率が低い場合、APIマネージャ320は高いおよび/または正のスコアを割り当てることができる。
ステップ1212において、APIマネージャ320は、適合性および比較レポートに基づいて警告および/またはレコメンドを生成および送信することができる。例えば、比較レポートが、レガシAPIが更新済みAPIよりも良好な性能を有することを示す場合、APIマネージャ320は、更新済みAPIへ切り替え、および/またはAPIの変更の提案をしないレコメンドを生成することができる。さらに、ステップ1212において、APIマネージャ320は、ステップ1208のAPIメトリックのいずれかが閾値を下回ったとき、および/またはAPIマネージャ320が異なるコール間で構文不適合性などの不適合性を見つけたときに警告を生成することができる。したがって、ステップ1212において、APIマネージャ320は、比較レポートおよび適合性レポートに基づいて警告またはレコメンドのうちの少なくとも1つを送信することができる。図16に関連してさらに説明するように、警告および/またはレコメンドは、レコメンドを有するグラフィカルユーザインターフェースを表示するための命令を含むことができる。いくつかの実施形態では、APIの適合性および比較可能性に関する警告およびメッセージは、管理者ネットワーク670を通じて送信され得る。そのような実施形態では、警告またはレコメンドは不一致のAPIコールを含むことができ、APIマネージャ320は、管理者ネットワーク670内でメッセージを自動的にブロードキャストすることによって警告またはレコメンドを生成することができる。
いくつかの実施形態では、ステップ1212における警告およびレコメンドは、特定の情報を含むことができる。例えば、警告は、適合性閾値未満の第3のグループに関連付けられたメトリックを含むことができ、レコメンドは、更新済みAPIマップテーブルおよび移行APIプラグインのうちの少なくとも1つを含むことができる。更新済みAPIマッピングテーブルは、レコメンドまたは警告に基づいて修正された情報を有するAPIマッピングテーブル1100(図11)などのテーブルを含むことができる。移行APIプラグインは、API移行プロセスを通じて管理をガイドするステップバイステップのウィザードを含み得る。例えば、移行プラグインは、インストーラスクリプトと共にダウンロードできるAPI用の移行パッケージを作成することができる。移行プラグインはまた、ユーザが、インストーラのスクリプトをクラウド環境にアップロードし、APIコールおよびURLをサーバ&データセンタのインターフェース条件に準拠するように変換する移行ウィザードを実行することを可能にすることができる。例えば、移行プラグインは、メソッドコンバータ625にインストールされ、APIコールの構文をリネームまたは変更するためのツールを提供することができる。
ステップ1214において、APIマネージャ320は、APIマップテーブルを更新することおよび/またはAPI移行プラグインを利用することにより、選択されたグループのAPIを自動的に移行することができる。いくつかの実施形態では、移行は、ステップ1212のレコメンドまたは警告に基づくことができる。例えば、APIマネージャ320が、レガシシステムが更新APIを上回っていることを示す警告を生成すると、APIマネージャ320は、更新APIに割り当てられたクライアントアカウントをレガシAPIに自動的に移行することができる。この移行は、レガシAPIを使用してAPIコールを解決するようにAPIゲートウェイまたはルータを再構成することを含み得る。代替的または付加的に、レコメンドに基づいて、APIマネージャ320は、ステップ1210の適合性および比較スコアの両方が閾値を超えた場合に、レガシAPIに割り当てられたグループ内のクライアントアカウントを更新APIに自動的に移行することができる。例えば、APIマネージャ320が図6に示す構成によってバケット試験を実行すると、APIマネージャ320は、比較スコアおよび適合性スコアが閾値を上回っていると判定したことに応答して、第2の(更新)APIを第1のグループ612および第3のグループ616に割り当てることができる。
APIマネージャ320は、APIマッピングテーブル1100(図11)などのAPIマッピングテーブルを再構成することによって、またはAPI移行プラグインを実行することによって、自動移行を実行することができる。例えば、ステップ1212のレコメンドまたは警告に基づいて、APIマネージャ320は、コンテンツを特定のAPIにルーティングするようにAPIゲートウェイA 632およびAPIゲートウェイB 634(図6)をプログラムすることができる。さらに、いくつかの実施形態では、ステップ1214において、APIマネージャ320は、例えばレガシAPIからの関数を更新APIの関数に置き換えることによって、APIマッピング命令を自動的に調整することができる。例えば、APIマネージャ320は、API関数間の等価を確立し、更新済みシステム内の対応するAPI関数との関係を判定することができる。いくつかの実施形態では、自動移行は、クライアント命令または要求をレガシAPIフォーマットから現在のAPIまたは更新APIに変換するために変換関数またはコンパイルテーブルを適用することを含むことができる。これらの変換関数は、例えば、メソッドコンバータ625を使用してコールの構文を更新することを含むことができる。
図13は、開示されている実施形態と一致する、例示的なAPI差分評価プロセス1300の流れ図である。いくつかの実施形態では、システム300の要素がプロセス1200を実行することができる。例えば、下記のステップの説明で開示されるように、APIマネージャ320がプロセス1300を実行することができる。代替的または付加的に、第三者システム360および/またはデータベース380が、プロセス1300またはプロセス1300の一部を実行してもよい。さらに、他の実施形態では、システム100またはシステム100の一部が、プロセス1300を実行してもよい。例えば、内部フロントエンドシステム105および/またはFMG 115が、プロセス1300を実行してもよい。いくつかの実施形態では、プロセス1300はプロセス1200に後続してもよい。一方、他の実施形態では、プロセス1300はプロセス1200から独立していてもよい。
ステップ1302において、APIマネージャ320は、クライアントアカウントの各グループについてAPIメトリックを計算することができる。例えば、APIマネージャ320は、ネットワーク分析器642(図6)を利用して、クライアントアカウントの各グループに関連付けられた通信を収集し、通信ログに基づいてAPIメトリックを決定することができる。
ステップ1304において、APIマネージャ320は、比較スコアおよび/または適合性スコアを決定することができる。例えば、APIメトリックに基づいて、APIマネージャ320は、更新APIがより良好な性能を有し、レガシAPIが高い比較スコアを生成すると判定することができる。さらに、両方のAPIを動作させるクライアントのグループのAPIメトリックに基づいて、APIマネージャは、同時に動作するAPIに適合性の問題がないかを判定し、高い適合性スコアを生成することができる。
ステップ1306において、APIマネージャ320は、比較スコアが閾値を下回っているか否かを判定することができる。比較スコアが閾値を下回っているとAPIマネージャ320が判定した場合(ステップ1306の「はい」)、APIマネージャ320はステップ1308に進み、より低い性能を引き起こす不一致メトリックまたはコールを識別することができる。しかしながら、比較スコアが閾値を下回っていないとAPIマネージャ320が判定した場合(ステップ1306の「いいえ」)、適合性スコアはステップ1310に進むことができる。
ステップ1310において、APIマネージャ320は、適合性スコアが閾値を下回っているか否かを判定することができる。APIマネージャ320が、適合性スコアが閾値を下回っていると判定した場合(ステップ1310の「はい」)、APIマネージャ320はステップ1312に進み、不適合性タイプ、および、2つのAPI間または2つのAPIを同時に使用する集団のメンバ間の挙動の変化を識別することができる。ステップ1312および/またはステップ1308の後、APIマネージャ320は、ステップ1314において警告またはレコメンドを生成することができる。しかしながら、ステップ1310において、APIマネージャ320が、適合性スコアが閾値を下回っていないと判定した場合(ステップ1310の「いいえ」)、APIマネージャ320はステップ1316に進むことができる。
ステップ1316において、APIマネージャ320は、更新済みAPIマッピングテーブルを生成すること、および/または移行プラグインを生成することができる。例えば、APIマネージャ320は、APIマッピングテーブル1100を更新することができる。移行プラグインは、異なるAPI間でクライアントアカウントを転送するために使用することができる1つまたは複数の異なるプラグインを含み得る。いくつかの実施形態では、移行ウィザードに加えて、移行プラグインは、遷移機能を促進、識別、または構築するための非レコメンドの機能を含み得る。移行プラグインはまた、ダウンロード機能、機能の存在を判定するための動作、展開機能、および正規化機能を含み得る。
ステップ1318において、APIマネージャ320は、移行戦略およびレコメンドを生成することができる。例えば、適合性および比較スコアに基づいて、APIマネージャ320は、移行を開始するためのレコメンドおよびAPI移行をいつ開始するかを生成することができる。いくつかの実施形態では、図15に関連してさらに説明するように、レコメンドは、更新済みAPIへの移行戦略を含むことができる。
ステップ1320において、APIマネージャ320はレコメンドを送信することができる。例えば、APIマネージャ320は、ステップ1318のレコメンドをネットワークマネージャに関連付けられたデバイスに送信することができる。いくつかの実施形態では、レコメンドは、リアルタイムで、または適合性および比較スコアが推定されているときに送信されてもよい。
図14は、開示されている実施形態と一致する、APIメトリックを判定するための例示的なプロセス1400の流れ図である。いくつかの実施形態では、システム300の要素がプロセス1400を実行することができる。例えば、下記のステップの説明で開示されるように、APIマネージャ320がプロセス1400を実行することができる。代替的または付加的に、レガシ/更新分析器650が、プロセス1400またはプロセス1400の一部を実行してもよい。さらに、他の実施形態では、システム100またはシステム100の一部が、プロセス1400を実行してもよい。例えば、内部フロントエンドシステム105および/またはFMG 115が、プロセス1400を実行してもよい。いくつかの実施形態では、プロセス1400はプロセス1400の一部であってもよい。例えば、プロセス1400は、ステップ1208(図12)の一部として実行されてもよい。一方、他の実施形態では、プロセス1400はプロセス1300から独立していてもよい。
ステップ1402において、APIマネージャ320は、APIメトリックを計算するための命令を受信することができる。例えば、APIマネージャ320は、ネットワーク管理者から、2つのAPIの性能の比較分析を実行し、APIメトリックの計算を要求するための命令を受信することができる。しかしながら、他の実施形態では、要求は自動であってもよく、収集期間後におよび/またはネットワーク分析器構成に基づいて生成されてもよい。
ステップ1404において、APIマネージャ320は、収集されたAPIコールを用いてメモリグループを識別することができる。例えば、APIマネージャ320は、第1のグループ、第2のグループ、および第3のグループと関連付けられた通信が記憶されたメモリ空間を識別してもよい。ステップ1406において、APIマネージャ320は、インフラストラクチャAPIメトリックを推定する必要があるか否かを判定することができる。APIマネージャ320がインフラストラクチャAPIメトリックを推定する必要があると判定した場合(ステップ1406の「はい」)、APIマネージャ320はステップ1408に進むことができる。
ステップ1408において、APIマネージャ320は、アップタイムメトリック、CPU使用量メトリック、およびメモリ使用量メトリックを含むことができるインフラストラクチャAPIメトリックを推定することができる。アップタイムメトリックは、APIサービスの可用性を測定することができる。いくつかの実施形態では、アップタイムメトリックは、ダウンタイムの割合に基づくことができる。低いアップタイムメトリックは、APIが期待通りに応答しておらず、何らかの冗長性測定を必要とし得ることを示し得る。いくつかの実施形態では、APIマネージャ320は、APIコールの特定のシーケンスを評価することによってアップタイムメトリックを決定することができる。CPU使用量メトリックは、APIサーバCPU使用量を測定することができる。そのようなメトリックは、過度に多くのスピンロックなどの、相関した過加入および過負荷のアプリケーションであり得る。CPU使用量を測定するために、APIマネージャは、サーバ内で、および/または、CPUおよびメモリ使用量などのメトリックを取得するエージェントを含めることによって、コンピュータリソースのアクティビティを監視することができる。メモリ使用量メトリックもまた、CPU使用量と同様に、CPUおよびメモリ容量としてのリソース利用を測定する。APIマネージャ320は、メモリソースの可用性を監視するエージェントを使用してメモリ使用量を判定することができる。いくつかの実施形態では、メモリ使用量メトリックはまた、APIが特定のメモリユニットに過負荷をかけているか否かを評価するためにメモリ間のタスクの分布を測定することができる。
APIマネージャ320がインフラストラクチャAPIメトリックを推定する必要がないと判定した場合(ステップ1406の「いいえ」)、APIマネージャ320はステップ1408をスキップし、ステータス1410に進むことができる。ステップ1410において、APIマネージャ320は、アプリケーションメトリックを推定する必要があるか否かを判定する。APIマネージャ320がアプリケーションAPIメトリックを推定する必要があると判定した場合(ステップ1410の「はい」)、APIマネージャ320はステップ1412に進むことができる。
ステップ1412において、APIマネージャ320は、毎分の要求(例えば、毎分のAPIコール)、応答の最大レイテンシ、および毎分のエラーを含み得るアプリケーションメトリックを推定することができる。毎分の要求を計算するために、APIマネージャ320を使用して、データベースおよび/またはサーバの性能を評価することができる。APIマネージャは、APIが毎分予想される要求数よりも多い要求を有するか否かを識別し、例えば繰り返しコールを引き起こしている関連するバグがあるか否かを模索することができる。代替的または付加的に、毎分の要求は、APIコールを減らすために特定の関数を組み合わせる必要があることを示すことができる。さらに、APIマネージャ320は、クライアント要求に対する応答の遅延を追跡するためにレイテンシを推定することができる。いくつかの実施形態では、レイテンシの変化を追跡することは、新しいエンドポイントが追加され、スキーマが変化し、より多くの動作が停止することを示し得る。したがって、APIマネージャ320は、APIゲートウェイを通じたサーバとクライアントとの間の各通信を追跡して、各通信の平均レイテンシを決定することができる。APIマネージャ320は、RPS(毎秒の要求)およびQPS(毎秒のクエリ)などの他の同様のメトリックを推定してもよい。
ステップ1412はまた、APIおよび/または関連するグループの各々について毎分の誤差を推定することを含んでもよい。例えば、APIマネージャ320は、APIコール数に対するエラー数を判定することができる。そのようなメトリックは、APIのバグおよびエラー確率を推定することができる。いくつかの実施形態では、APIマネージャ320は、毎分のエラー数を判定するためにHTTPステータスコードを使用することができる。
APIマネージャ320がアプリケーションAPIメトリックを推定する必要がないと判定した場合(ステップ1410の「いいえ」)、APIマネージャ320はステップ1412をスキップし、ステータス1414に進むことができる。ステップ1414において、APIマネージャ320は、製品メトリックを推定する必要があるか否かを判定する。APIマネージャ320が製品APIメトリックを推定する必要があると判定した場合(ステップ1414の「はい」)、APIマネージャ320はステップ1416に進むことができる。
ステップ1416において、APIマネージャ320は、とりわけ、使用量増大、固有および/またはトップ消費者、API保持、Time To First Hello World(TTFHW)、取引当たりのコール、およびSDK利用などのメトリックを判定することができる。さらに、APIマネージャは、固有のAPIコンシューマの数および商取引ごとのコールを含む製品APIメトリックを決定することができる。
APIマネージャ320が製品APIメトリックを推定する必要がないと判定した場合(ステップ1414の「いいえ」)、APIマネージャ320はステップ1416をスキップし、ステータス1420に進むことができる。ステップ1420において、APIマネージャ320は、評価されたグループのうちの1つまたは複数に関連付けられたAPI動作のAPIメトリックを返すことができる。
図15は、開示されている実施形態と一致する、API移行のレコメンドを実行するための例示的なプロセス1500の流れ図である。いくつかの実施形態では、システム300の要素がプロセス1500を実行することができる。例えば、下記のステップの説明で開示されるように、APIマネージャ320がプロセス1500を実行することができる。代替的または付加的に、第三者システム360が、プロセス1500またはプロセス1500の一部を実行してもよい。さらに、他の実施形態では、システム100またはシステム100の一部が、プロセス1500を実行してもよい。例えば、内部フロントエンドシステム105および/またはFMG 115が、プロセス1500を実行してもよい。いくつかの実施形態では、プロセス1500はプロセス1200に後続してもよい。一方、他の実施形態では、プロセス1500はプロセス1200から独立していてもよい。
ステップ1502において、APIマネージャ320は、API移行のレコメンドを提供する命令を受信することができる。例えば、比較スコアが閾値を上回る場合、APIマネージャ320は、API移行のレコメンドを生成する命令を受信することができる。
ステップ1504において、APIマネージャ320は、APIネットワークのワイヤフレームレビューを実行することができる。例えば、APIマネージャ320は、APIの骨組みおよびその接続を表す視覚的ガイドを生成することができる。いくつかの実施形態では、ワイヤフレームは、様々なAPI関数、情報および関数のAPIインタラクションにおける優先順位、特定の種類の情報を表示するための規則、ならびにディスプレイ上の異なるシナリオの効果を含むことができる。
ステップ1506において、APIマネージャ320は、リダイレクト試験を構成し、リスク評価を生成することができる。例えば、APIマネージャ320は、異なるAPIを互いに対して試験することを可能にするリダイレクト試験エンジンを構成することができる。リダイレクト試験は、関数ごとに異なるAPIコールを含んでもよい。さらに、APIマネージャ320は、リスクの範囲、性質、定量化、許容度、および処置を含むリスク評価を生成することができる。例えば、ステップ1506において、APIマネージャ320は、API障害のリスクが運用上のものかまたは財務上のものかを判定することができ、移行中のリスクの確率、および移行中のリスクを低減するためのレコメンドも推定することができる。
ステップ1508において、APIマネージャ320は、評価のためのベンチマークを決定することができる。例えば、APIマネージャ320は、APIメトリック、適合性スコア、および比較スコアの閾数を決定することができる。ステップ1510において、APIマネージャ320は、グループを移行し、移行されたグループのライブAPI試験を実行することができる。例えば、APIマネージャ320は、APIマップテーブルを更新し、プラグインを実行し、ネットワーク分析器を通じて変更されたAPIを有するグループの性能監視を開始することができる。
ステップ1512において、APIマネージャ320は、ステップ1510において記録されたメトリックおよび発生に基づいて、バグ補正および性能補正を実行することができる。ステップ1512のバグおよび性能補正に基づいて、APIマネージャ320は、ステップ1514においてAPI移行性能レポートを生成することができる。いくつかの実施形態では、APIマネージャ320は、収集されたメトリックおよび/または性能結果に関する情報を含む自動レポートを生成することができる。
図16は、開示されている実施形態と一致する、API評価中に生成される警告および/または通知の例示的なグラフィカルユーザインターフェース(GUI)を示す。図16は、デスクトップGUI 1600およびモバイルGUI 1650の例示的な変更を示す。図12に関連してさらに説明するように、APIマネージャ320は、プロセス1200の一部としてデスクトップGUI 1600および/またはモバイルGUI 1650を生成し、管理者ネットワーク670を通じてそれを通信することができる。
デスクトップGUI 1600は、通知の種類を指定するタイトル1602と、レポートセクション1604と、適合性のないAPIコールおよび/または性能不足のメトリックに関するより具体的な情報を含むことができるエラー詳細パネル1606とを含むことができる。さらに、デスクトップGUI 1600は、適合性および比較レポートの追加の結果を表示するための結果リンク1608を含むことができる。
モバイルGUI 1650は、レガシAPIと更新済みAPIとの間のバケットまたはスプリットラン試験の適合性エラーまたは比較結果に関する特定の情報を伴うメッセージ1652を含むことができる。
本開示の別の態様は、上述したように、実行されると、1つまたは複数のプロセッサに方法を実行させる命令を記憶する非一時的コンピュータ可読媒体に関する。コンピュータ可読媒体は、揮発性または不揮発性、磁気、半導体、テープ、光学、取り外し可能、取り外し不能、または他のタイプのコンピュータ可読媒体またはコンピュータ可読記憶デバイスを含むことができる。例えば、コンピュータ可読媒体は、開示されているように、コンピュータ命令が格納された記憶ユニットまたはメモリモジュールであってもよい。いくつかの実施形態では、コンピュータ可読媒体は、コンピュータ命令が格納されたディスクまたはフラッシュドライブであってもよい。
開示されているシステムおよび関連する方法に様々な修正および変形を行うことができることが当業者には明らかであろう。当業者には、本明細書を考慮し、開示されたシステムおよび関連する方法を実践することによって、他の実施形態が明らかになるのであろう。本明細書および実施例は単に例示的なものとみなされ、真の範囲は以下の特許請求の範囲およびそれらの均等物によって示されることが意図される。
本開示はその特定の実施形態を参照して示され、説明されてきたが、本開示は変更なしに、他の環境において実施することができることが理解されるのであろう。前述の説明は、例示の目的で提示されている。これは、網羅的ではなく、開示されている正確な形態または実施形態に限定されない。当業者には、開示されている実施形態の明細書および実施を考慮することによって、変更および適合が明らかになるのであろう。さらに、開示されている実施形態の態様はメモリに記憶されるものとして記載されているが、当業者はこれらの態様が二次記憶デバイス、例えば、ハードディスクもしくはCD ROM、または他の形態のRAMもしくはROM、USB媒体、DVD、ブルーレイ、または他の光学駆動媒体などの他のタイプのコンピュータ可読媒体に記憶されてもよいことを理解するのであろう。
記載された説明および開示されている方法に基づくコンピュータプログラムは、熟練した開発者の技術の範囲内である。様々なプログラムまたはプログラムモジュールは当業者に知られている技法のいずれかを使用して作成することができ、または既存のソフトウェアに関連して設計することができる。例えば、プログラム・セクションまたはプログラムモジュールは、.Net Framework、.Net Compact Framework(およびVisual Basic、Cなどの関連言語)、Java、C++、Objective-C、HTML、HTML/AJAXの組み合わせ、XML、もしくはJavaアプレットを含むHTMLの中で、またはその手段によって設計することができる。
さらに、例示的な実施形態が本明細書で説明されてきたが、本開示に基づいて当業者によって理解されるように、同等の要素、変更、省略、組み合わせ(例えば、様々な実施形態にわたる態様の)、適応、および/または変更を有する任意のおよびすべての実施形態の範囲が可能である。特許請求の範囲の限定は特許請求の範囲に使用されている文言に広く基づいて解釈されるものとし、本明細書に記載されている例に限定されるものではなく、または出願手続中に解釈されるものとする。実施例は、非排他的であると解釈されるべきである。さらに、開示されている方法のステップは、ステップを並べ替えること、および/またはステップを挿入または削除することを含む、任意の方法で修正されてもよい。したがって、本明細書および実施例は単に例示的なものとみなされ、真の範囲および精神は以下の特許請求の範囲およびそれらの均等物の全範囲によって示されることが意図される。
したがって、前述の説明は、例示のみを目的として提示されている。これは、網羅的ではなく、開示されている正確な形態または実施形態に限定しない。当業者には、開示されている実施形態の明細書および実施を考慮することによって、変更および適合が明らかになるのであろう。
特許請求の範囲は特許請求の範囲に使用されている文言に広く基づいて解釈されるものとし、本明細書に記載されている例に限定されるものではなく、その例は非排他的ならびにものとして解釈されるものとする。さらに、開示されている方法のステップは、ステップを並べ替えること、および/またはステップを挿入または削除することを含む、任意の方法で修正されてもよい。

Claims (20)

  1. API移行のためのコンピュータ化されたシステムであって、
    前記システムは、
    複数の命令を記憶する少なくとも1つのメモリと、
    前記複数の命令を実行して複数の動作を実施するように構成された少なくとも1つのプロセッサと、
    を備え、
    前記複数の動作は、
    クライアントアカウントを第1のグループ、第2のグループ、および第3のグループに分離することであって、各グループは別個のメンバを有する、分離することと、
    前記第1のグループと通信するために第1のAPI、および、前記第2のグループと通信するために第2のAPIを割り当てることと、
    前記第3のグループの第1の部分と通信するために第1のAPI、および、前記第3のグループの第2の部分と通信するために第2のAPIを割り当てることと、
    前記第1のグループ、前記第2のグループ、および前記第3のグループから通信を収集することと、
    各グループに関連付けられたメトリックを生成することと、
    前記第1のグループに関連付けられた前記メトリックと前記第2のグループに関連付けられた前記メトリックとを比較する比較レポートを生成することと、
    前記第3のグループに関連付けられた前記メトリックに基づいて適合性レポートを生成することと、
    前記比較レポートおよび前記適合性レポートに基づいて警告またはレコメンドのうちの少なくとも1つを送信することと、
    を含む、コンピュータ化されたシステム。
  2. 前記第1のAPIはレガシAPIであり、前記第2のAPIは更新済みAPIであり、
    前記複数の動作は、前記レコメンドに基づいて前記クライアントアカウントを前記更新済みAPIに自動的に移行することをさらに含む、請求項1に記載のシステム。
  3. 前記複数の動作は、
    前記比較レポートに基づいて比較スコアを決定し、前記適合性レポートに基づいて適合性スコアを決定することと、
    前記比較スコアおよび前記適合性スコアが閾値を上回っているという判定に応答して、前記第2のAPIを前記第1のグループおよび前記第3のグループに割り当てることと
    をさらに含む、請求項2に記載のシステム。
  4. 前記第1のグループおよび前記第2のグループが、前記第3のグループよりも多数のクライアントアカウントを含む、請求項1に記載のシステム。
  5. 前記比較レポートは、前記第1のグループからのAPIコール間の不一致、および前記第1のグループに関連付けられた前記メトリックと前記第2のグループに関連付けられた前記メトリックとの間の差を指定し、
    前記適合性レポートは、前記第1のAPIと前記第2のAPIとの間のソース、バイナリ、および意味的適合性エラーを指定し、
    前記警告またはレコメンドは前記不一致を含み、
    前記警告またはレコメンドを生成することは、管理者ネットワークにおいてメッセージを自動的にブロードキャストすることを含む、請求項1に記載のシステム。
  6. 前記通信を収集することは、ネットワーク分析器を、
    前記第1のグループ、前記第2のグループ、および前記第3のグループの前記クライアントアカウントに関連付けられたクライアントデバイスから入来するパケットをキャプチャすることと、
    各グループからのキャプチャされたパッケージを独立したメモリ空間に格納するように構成することと、
    を含む、請求項1に記載のシステム。
  7. 前記メトリックを生成することは、
    前記第1のグループ、前記第2のグループ、および前記第3のグループの各々について、
    アップタイム、CPU使用量、およびメモリ使用量を含むインフラストラクチャAPIメトリック、
    毎分の要求、平均最大レイテンシ、および毎分のエラーを含むアプリケーションAPIメトリック、ならびに
    商取引ごとの固有のAPI消費者およびコールの数を含む製品APIメトリック
    を生成することを含む、請求項6に記載のシステム。
  8. 前記警告は、適合性閾値未満の前記第3のグループに関連付けられた前記メトリックを含み、
    前記レコメンドは、更新済みAPIマップテーブルおよび移行APIプラグインのうちの少なくとも1つを含む、請求項7に記載のシステム。
  9. 前記第1のグループ、前記第2のグループ、および前記第3のグループは、等しい数の前記クライアントアカウントを含む、請求項1に記載のシステム。
  10. 前記第1のAPIおよび前記第2のAPIは、オンラインショップと電子商取引データセンタとを接続する統合拡張機能を備え、
    前記通信を収集することは、クライアント側通信を除外しながらログパイプラインから取得される通信の属性をログ記録することを含む、請求項1に記載のシステム。
  11. API移行のためのコンピュータ実施方法であって、
    前記コンピュータ実施方法は、
    クライアントアカウントを第1のグループ、第2のグループ、および第3のグループに分離することであって、各グループは別個のメンバを有する、分離することと、
    前記第1のグループと通信するために第1のAPI、および、前記第2のグループと通信するために第2のAPIを割り当てることと、
    前記第3のグループの第1の部分と通信するために前記第1のAPI、および、前記第3のグループの第2の部分と通信するために前記第2のAPIを割り当てることと、
    前記第1のグループ、前記第2のグループ、および前記第3のグループから通信を収集することと、
    各グループに関連付けられたメトリックを判定することと、
    前記第1のグループに関連付けられた前記メトリックと前記第2のグループに関連付けられた前記メトリックとを比較する比較レポートを生成することと、
    前記第3のグループに関連付けられた前記メトリックに基づいて適合性レポートを生成することと、
    前記比較レポートおよび前記適合性レポートに基づいて警告またはレコメンドのうちの少なくとも1つを送信することと、
    を含む、コンピュータ実施方法。
  12. 前記第1のAPIがレガシAPIであり、前記第2のAPIが更新済みAPIである、請求項11に記載のコンピュータ実施方法。
  13. 前記比較レポートに基づいて比較スコアを決定し、前記適合性レポートに基づいて適合性スコアを決定することと、
    前記比較スコアおよび前記適合性スコアが閾値を上回っているという判定に応答して、前記第2のAPIを前記第1のグループおよび前記第3のグループに割り当てることと
    をさらに含む、請求項12に記載のコンピュータ実施方法。
  14. 前記第1のグループおよび前記第2のグループが、前記第3のグループよりも多数のクライアントアカウントを含む、請求項11に記載のコンピュータ実施方法。
  15. 前記比較レポートは、前記第1のグループからのAPIコールと前記第2のグループからのAPIコールとの間の差を指定し、
    前記適合性レポートは、前記第1のAPIと前記第2のAPIとの間のソース、バイナリ、および意味的適合性エラーを指定し、
    前記警告またはレコメンドは前記不一致を含み、
    前記警告またはレコメンドを生成することは、管理者ネットワークにおいてメッセージを自動的にブロードキャストすることを含む、請求項11に記載のコンピュータ実施方法。
  16. 前記通信を収集することは、ネットワーク分析器を、
    前記第1のグループ、前記第2のグループ、および前記第3のグループの前記クライアントアカウントに関連付けられたクライアントデバイスから入来するパケットをキャプチャすることと、
    各グループからのキャプチャされたパッケージを独立したメモリ空間に格納するように構成することと、
    を含む、請求項11に記載のコンピュータ実施方法。
  17. 前記メトリックを生成することは、
    前記第1のグループ、前記第2のグループ、および前記第3のグループの各々について、
    アップタイム、CPU使用量、およびメモリ使用量を含むインフラストラクチャAPIメトリック、
    毎分の要求、平均最大レイテンシ、および毎分のエラーを含むアプリケーションAPIメトリック、ならびに
    商取引ごとの固有のAPI消費者およびコールの数を含む製品APIメトリック
    を生成することを含み、
    前記警告は、実行可能性閾値を下回る、前記第3のグループと関連付けられた前記メトリックを含み、
    前記レコメンドは、更新済みAPIマップテーブルおよび移行APIプラグインのうちの少なくとも1つを含む、請求項16に記載のコンピュータ実施方法。
  18. 前記第1のグループ、前記第2のグループ、および前記第3のグループは、等しい数の前記クライアントアカウントを含む、請求項11に記載のコンピュータ実施方法。
  19. 前記第1のAPIおよび前記第2のAPIは、オンラインショップと電子商取引データセンタとを接続する統合拡張機能を備え、
    前記通信を収集することは、クライアント側通信を除外しながらログパイプラインから取得される通信の属性をログ記録することを含む、請求項11に記載のコンピュータ実施方法。
  20. 1つまたは複数のプロセッサと、
    複数の命令を記憶する1つまたは複数のメモリデバイスと、
    を備えるシステムであって、
    前記1つまたは複数のプロセッサは、前記複数の命令が前記1つまたは複数のプロセッサによって実行されると、
    クライアントアカウントを第1のグループ、第2のグループ、および第3のグループに分離することであって、各グループは別個のメンバを有する、分離することと、
    前記第1のグループと通信するために第1のAPI、および、前記第2のグループと通信するために第2のAPIを割り当てることであって、前記第1のAPIはレガシAPIであり、前記第2のAPIは更新済みAPIであり、前記第1のAPIおよび前記第2のAPIは、オンラインショップを電子商取引データセンタと接続する統合拡張機能を含む、割り当てることと、
    前記第3のグループの第1の部分と通信するために前記第1のAPI、および、前記第3のグループの第2の部分と通信するために前記第2のAPIを割り当てることと、
    前記第1のグループ、前記第2のグループ、および前記第3のグループから通信を収集し、各グループに関連付けられたAPIメトリックを生成することと、
    前記第1のグループに関連付けられた前記APIメトリックと前記第2のグループに関連付けられたAPIメトリックとを比較する比較レポートを生成することであって、前記比較レポートは、前記第1のグループに関連付けられた前記APIメトリックと前記第2のグループに関連付けられた前記APIメトリックとの間の差を含む、生成することと、
    前記第3のグループに関連付けられた前記APIメトリックに基づいて適合性レポートを生成することと、
    前記差が実行可能性閾値を下回っているか否かを判定することと、
    前記第3のグループに関連付けられた前記APIメトリックが適合性閾値を下回っているか否かを判定することと、
    前記差が前記実行可能性閾値を下回っており、前記第3のグループに関連付けられた前記APIメトリックが前記適合性閾値を上回っているという判定に応答して、更新済みAPIマップテーブルおよび移行APIプラグインを含むレコメンドを送信することと、
    を実施するように構成されている、システム。
JP2021531922A 2020-08-26 2021-01-27 自動アプリケーションプログラミングインターフェース評価および移行のためのシステムおよび方法 Pending JP2023540150A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US17/003,380 2020-08-26
US17/003,380 US10956244B1 (en) 2020-08-26 2020-08-26 Systems and methods for automated application programming interface evaluation and migration
PCT/IB2021/050636 WO2022043763A1 (en) 2020-08-26 2021-01-27 Systems and methods for automated application programming interface evaluation and migration

Publications (1)

Publication Number Publication Date
JP2023540150A true JP2023540150A (ja) 2023-09-22

Family

ID=74004091

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021531922A Pending JP2023540150A (ja) 2020-08-26 2021-01-27 自動アプリケーションプログラミングインターフェース評価および移行のためのシステムおよび方法

Country Status (7)

Country Link
US (2) US10956244B1 (ja)
EP (1) EP3961394A1 (ja)
JP (1) JP2023540150A (ja)
KR (2) KR102402680B1 (ja)
CN (1) CN114116442A (ja)
TW (1) TWI742980B (ja)
WO (1) WO2022043763A1 (ja)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11526933B1 (en) 2015-12-28 2022-12-13 Wells Fargo Bank, N.A. Systems and methods for trackable transaction requests
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11508097B1 (en) * 2020-12-11 2022-11-22 Wells Fargo Bank, N.A. Visualizations of multi-nodal transfers and gesture-based interactivity in virtual or augmented reality
US11184454B1 (en) * 2020-12-21 2021-11-23 Coupang Corp. Systems and methods for managing perpetual data requests to conserve resources
US11698825B2 (en) * 2021-03-08 2023-07-11 Red Hat, Inc. Application programming interface compatibility
US20230004651A1 (en) * 2021-06-30 2023-01-05 Cisco Technology, Inc. Penetration testing for api service security
US11829745B2 (en) * 2021-09-20 2023-11-28 Salesforce, Inc. Augmented circuit breaker policy
US20230109797A1 (en) * 2021-09-20 2023-04-13 International Business Machines Corporation Api health analysis
US11297152B1 (en) 2021-09-30 2022-04-05 metacluster lt, UAB Regulation methods for proxy services
CN113992755A (zh) * 2021-10-27 2022-01-28 中国电信股份有限公司 基于微服务网关的请求处理方法、系统、设备及存储介质
US20230388226A1 (en) * 2022-05-26 2023-11-30 Accenture Global Solutions Limited On-site artificial intelligence application programming interfaces for routing and adapting traffic
US11979287B1 (en) * 2022-11-25 2024-05-07 Dell Products L.P. Data center monitoring and management operation including a microservice autoscaling operation
KR102649770B1 (ko) * 2023-01-10 2024-03-21 쿠팡 주식회사 정보를 제공하는 방법 및 이를 지원하는 전자 장치
CN116361194B (zh) * 2023-05-19 2023-08-29 深圳凡泰极客科技有限责任公司 异常代码识别方法、系统、电子设备及存储介质

Family Cites Families (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6591417B1 (en) * 1999-12-30 2003-07-08 International Business Machines Corporation Method of and system for testing compatibility with an external API upgrade
US7571389B2 (en) * 2001-05-31 2009-08-04 International Business Machines Corporation System, computer-readable storage device, and method for combining the functionality of multiple text controls in a graphical user interface
US7415703B2 (en) * 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
WO2010049742A1 (en) * 2004-12-01 2010-05-06 Computer Associates Think, Inc. Managing elements residing on legacy systems
US7549144B2 (en) * 2005-02-22 2009-06-16 Microsoft Corporation Custom API modeling for source code static analysis simulator
US7895579B2 (en) * 2006-06-16 2011-02-22 Microsoft Corporation Automated method and system for collecting and reporting API performance profiles
US7926072B2 (en) * 2007-10-01 2011-04-12 Spring Design Co. Ltd. Application programming interface for providing native and non-native display utility
US8701103B1 (en) * 2007-10-31 2014-04-15 Wal-Mart Stores, Inc. Method and system for minimizing or eliminating downtime when updating a website
JP5337155B2 (ja) * 2008-06-10 2013-11-06 パナソニック株式会社 組み込み機器におけるapi評価システム
US8539475B2 (en) * 2009-09-29 2013-09-17 Oracle America, Inc. API backward compatibility checking
US8458651B2 (en) * 2010-06-18 2013-06-04 International Business Machines Corporation Seamless migration of tuxedo® applications to a CICS® hosting environment
KR101587030B1 (ko) * 2010-12-27 2016-02-03 에스케이텔레콤 주식회사 M2m 어플리케이션의 api 함수 호출 정책 관리 시스템 및 그 구현 방법
US9292361B1 (en) * 2011-08-19 2016-03-22 Google Inc. Application program interface script caching and batching
US9300759B1 (en) * 2013-01-03 2016-03-29 Amazon Technologies, Inc. API calls with dependencies
JP2016534607A (ja) * 2013-07-22 2016-11-04 インテリヴィジョン テクノロジーズ コーポレーション 拡張可能なビデオクラウドサービスのためのシステムおよび方法
US9442700B2 (en) 2013-09-30 2016-09-13 MuleSoft, Inc. API notebook tool
US9146787B2 (en) * 2013-11-07 2015-09-29 Accenture Global Services Limited Analytics for application programming interfaces
US9619217B2 (en) * 2013-11-20 2017-04-11 Wolfram Research, Inc. Methods and systems for cloud computing
US9560037B2 (en) * 2014-06-19 2017-01-31 Microsoft Technology Licensing, Llc Integrated APIs and UIs for consuming services across different distributed networks
US20160335168A1 (en) * 2015-05-15 2016-11-17 Microsoft Technology Licensing, Llc Real-time analysis of application programming interfaces
US9898273B1 (en) * 2015-12-22 2018-02-20 VCE IP Holding Company LLC Dynamically updating APIS based on updated configuration file of a computing system
US10394552B2 (en) * 2016-05-17 2019-08-27 Dropbox, Inc. Interface description language for application programming interfaces
CN109314658A (zh) 2016-06-27 2019-02-05 华为技术有限公司 网络交换设备及时隙交换的方法
US10310850B2 (en) * 2016-10-19 2019-06-04 Facebook, Inc. Methods and systems for determining relevant changes in an API
WO2018200135A1 (en) * 2017-04-25 2018-11-01 Intento, Inc. Intent-based organisation of apis
US10379838B1 (en) * 2017-06-28 2019-08-13 Amazon Technologies, Inc. Update and rollback of code and API versions
KR102255806B1 (ko) * 2017-07-03 2021-05-26 (주)더리스 Api 연동방식의 해외 온라인 쇼핑몰 통합 관리 방법 및 시스템
US10678513B2 (en) * 2017-09-12 2020-06-09 Devfactory Fz-Llc Library upgrade method, apparatus, and system
US10796350B2 (en) * 2017-09-25 2020-10-06 Oracle International Corporation Systems and methods for using facade API for phased upgrade of core API
US10572370B2 (en) * 2017-09-26 2020-02-25 Fujitsu Limited Test-assisted application programming interface (API) learning
US10644962B2 (en) * 2017-11-15 2020-05-05 APImetrics Inc. Continuous monitoring for performance evaluation of service interfaces
JP6542865B2 (ja) 2017-12-04 2019-07-10 株式会社日立製作所 インタフェース集約装置及びインタフェース管理方法
US10956242B1 (en) * 2017-12-06 2021-03-23 Amazon Technologies, Inc. Automating the migration of web service implementations to a service provider system
US20190179624A1 (en) * 2017-12-11 2019-06-13 International Business Machines Corporation Software upgrade impact analysis by cognitive services
US10810608B2 (en) * 2018-02-19 2020-10-20 International Business Machines Corporatior API pricing based on relative value of API for its consumers
US10896160B2 (en) * 2018-03-19 2021-01-19 Secure-24, Llc Discovery and migration planning techniques optimized by environmental analysis and criticality
US11030302B2 (en) * 2018-04-12 2021-06-08 Webroot Inc. Restricting access to application programming interfaces (APIs)
US10503569B2 (en) * 2018-04-17 2019-12-10 International Business Machines Corporation Feature-based application programming interface cognitive comparative benchmarking
US11275624B2 (en) * 2018-06-14 2022-03-15 Qliktech International Ab Methods and systems for application program interface management
US10656973B2 (en) * 2018-08-23 2020-05-19 Fujitsu Limited Automated API evaluation based on API parameter resolution
US11048564B2 (en) * 2018-09-21 2021-06-29 International Business Machines Corporation API evolution and adaptation based on cognitive selection and unsupervised feature learning
US10824483B2 (en) * 2018-11-20 2020-11-03 R Software Inc. Application programming interface scoring, ranking and selection
US20210382764A1 (en) * 2018-12-05 2021-12-09 Hewlett-Packard Development Company, L.P. Comparisons of application programming interface interactions to determine compatibilities
US20200301760A1 (en) * 2019-03-19 2020-09-24 Honeywell International Inc. Methods and systems for generating and recommending api mashups
US10990455B2 (en) * 2019-09-18 2021-04-27 Moesif, Inc. Management of application programming interface (API) retention
US11409642B2 (en) * 2020-01-13 2022-08-09 Fujitsu Limited Automatic parameter value resolution for API evaluation
US11449909B2 (en) * 2020-01-24 2022-09-20 Salesforce.Com, Inc. Customizable formula based dynamic API evaluation using a database system
US11281505B2 (en) * 2020-02-12 2022-03-22 Moesif, Inc. Management of application programming interface (API) conversion for end users
US11354108B2 (en) * 2020-03-02 2022-06-07 International Business Machines Corporation Assisting dependency migration
CN113448814B (zh) * 2020-03-26 2024-04-26 伊姆西Ip控股有限责任公司 用于评估应用程序接口的方法、设备和程序产品

Also Published As

Publication number Publication date
CN114116442A (zh) 2022-03-01
US20220066848A1 (en) 2022-03-03
KR20220074839A (ko) 2022-06-03
US11307913B2 (en) 2022-04-19
KR20220029795A (ko) 2022-03-08
US10956244B1 (en) 2021-03-23
WO2022043763A1 (en) 2022-03-03
TW202209114A (zh) 2022-03-01
KR102402680B1 (ko) 2022-05-30
TWI742980B (zh) 2021-10-11
EP3961394A1 (en) 2022-03-02

Similar Documents

Publication Publication Date Title
KR102402680B1 (ko) 자동화 된 애플리케이션 프로그래밍 인터페이스 평가 및 마이그레이션을 위한 시스템 및 방법
JP7335901B2 (ja) 適応型の配達スケジューリングのためのグラフィカルユーザインターフェースを生成するためのシステムおよび方法
TWI792306B (zh) 用於產生適應性電子通知的系統、設備以及電腦實行方法
TWI777532B (zh) 用於集中式狀態監測的系統、電腦實行方法及設備
TW202223790A (zh) 電腦實行方法及產生客製化網站的電腦實行系統
US20200401991A1 (en) Systems and methods for electronic platform for transactions of wearable items
KR20210109499A (ko) 데이터의 동적 집계와 데이터 손실의 최소화를 위한 시스템 및 방법
TW202215318A (zh) 用於動態庫存平衡的系統、電腦實行方法及設備
US8589207B1 (en) System and method for determining and visually predicting at-risk integrated processes based on age and activity
US11568017B2 (en) Systems and methods for loading websites with multiple items
KR102396707B1 (ko) 웹페이지 상에 제품 정보를 업데이트하기 위한 컴퓨터화된 시스템 및 방법
TWI843063B (zh) 電腦實行方法及電腦實行系統