JP7203096B2 - デプロイされたコンテナプラットフォームにおけるインスタンスのリアルタイムデバッグ - Google Patents

デプロイされたコンテナプラットフォームにおけるインスタンスのリアルタイムデバッグ Download PDF

Info

Publication number
JP7203096B2
JP7203096B2 JP2020518500A JP2020518500A JP7203096B2 JP 7203096 B2 JP7203096 B2 JP 7203096B2 JP 2020518500 A JP2020518500 A JP 2020518500A JP 2020518500 A JP2020518500 A JP 2020518500A JP 7203096 B2 JP7203096 B2 JP 7203096B2
Authority
JP
Japan
Prior art keywords
service
debug
services
api
container
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.)
Active
Application number
JP2020518500A
Other languages
English (en)
Other versions
JP2020536318A5 (ja
JP2020536318A (ja
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 JP2020536318A publication Critical patent/JP2020536318A/ja
Publication of JP2020536318A5 publication Critical patent/JP2020536318A5/ja
Application granted granted Critical
Publication of JP7203096B2 publication Critical patent/JP7203096B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • 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
    • 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/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4488Object-oriented
    • G06F9/449Object-oriented method invocation or resolution
    • 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
    • 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/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • 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/10Protocols in which an application is distributed across nodes in the network
    • 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
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; 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)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Description

関連出願の相互参照
本願は、本明細書に引用により援用する2017年9月30日出願の米国仮出願第62/566,351号に基づく利益を主張する。本願はまた、本願と同日に出願され本願と共通の譲受人に譲渡された以下の出願に関連し、これらの出願各々も本明細書に引用により援用する。
・2018年9月28日に出願されAPI REGISTRY IN A CONTAINER PLATFORM FOR AUTOMATICALLY GENERATING CLIENT CODE LIBRARIESと題された米国特許出願第16/147,334号(代理人整理番号088325-1090745)
・2018年9月28日に出願されAPI REGISTRY IN A CONTAINER PLATFORM PROVIDING PROPERTY-BASED API FUNCTIONALITYと題された米国特許出願第16/147,305号(代理人整理番号088325-1090746)
・2018年9月28日に出願されDYNAMIC NODE REBALANCING BETWEEN CONTAINER PLATFORMSと題された米国特許出願16/147,343号(代理人整理番号088325-1090747)
・2018年9月28日に出願されOPTIMIZING REDEPLOYMENT OF FUNCTIONS AND SERVICES ACROSS MULTIPLE CONTAINER PLATFORMS AND INSTALLATIONSと題された米国特許出願第16/147,332号(代理人整理番号088325-1090748)
背景
理論上、任意の形態のコンテナは、情報のパッケージングおよび情報との対話のための標準化された方法を表している。コンテナは、互いに分離することが可能であり、相互汚染(コンタミネーション)のいかなるリスクも伴うことなく並列に使用することが可能である。現代のソフトウェアの世界において、「コンテナ」という用語は固有の意味を獲得している。Docker(登録商標)コンテナのようなソフトウェアコンテナは、1つのソフトウェアを論理的にカプセル化し定義するソフトウェア構造である。コンテナにカプセル化される最も一般的なタイプのソフトウェアは、アプリケーション、サービス、またはマイクロサービスである。現代のコンテナはまた、オペレーティングシステム、ライブラリ、ストレージボリューム、構成ファイル、アプリケーションバイナリ、および、典型的なコンピューティング環境において見出されるであろうテクノロジースタックのその他の部分のような、アプリケーション/サービスが動作するのに必要なソフトウェアサポートすべてを含む。そのため、このコンテナ環境を使用することにより、各々が自身のサービスを任意の環境で実行する複数のコンテナを作成することができる。コンテナは、プロダクションデータセンター、オンプレミスデータセンター、クラウドコンピューティングプラットフォームなどにおいて、いかなる変更も伴うことなくデプロイすることができる。クラウド上にコンテナを立ち上げることは、ローカルワークステーション上にコンテナを立ち上げることと同一である。
現代のサービス指向アーキテクチャおよびクラウドコンピューティングプラットフォームは、大きなタスクを多数の小さな特定のタスクに分割する。コンテナをインスタンス化することによって個々の特定のタスクに集中することができ、さらに、複数のコンテナが協働することによって高度なアプリケーションを実現することができる。これはマイクロサービスアーキテクチャと呼ばれることがあり、各コンテナは、独立してアップグレードすることが可能なさまざまなバージョンのプログラミング言語およびライブラリを使用することができる。コンテナ内の処理には分離されているという性質があるので、コンテナは、より大きくよりモノリシックなアーキテクチャに対して行われる変更と比較すると、手間またはリスクがほとんどない状態でアップグレードおよびリプレイスが可能である。コンテナプラットフォームを実行するために仮想マシンを使用できるが、このマイクロサービスアーキテクチャの実行において、コンテナプラットフォームは従来の仮想マシンよりも遥かに効率的である。
簡単な概要
いくつかの実施形態において、コンテナ環境におけるコンテナ化されたサービスのランタイムデバッグを提供する方法は、コンテナ環境において、サービスを求める要求を受けるステップを含み得る。コンテナ環境は、サービスメッシュと、複数のコンテナにカプセル化された複数のサービスとを含み得る。サービスは、第1の1つ以上のコンテナにカプセル化されてもよい。この方法はまた、要求はサービスのデバッグインスタンスにルーティングされねばならないと判断するステップと、サービスのデバッグインスタンスをインスタンス化するステップとを含み得る。デバッグインスタンスは、第2の1つ以上のコンテナにカプセル化されてもよく、サービスを実現するコードと、1つ以上のデバッグユーティリティとを含み得る。この方法はさらに、サービスメッシュを通じて、要求をデバッグインスタンスにルーティングするステップを含み得る。
いくつかの実施形態において、1つ以上のプロセッサによって実行されると1つ以上のプロセッサに動作を実行させる命令を含む非一時的なコンピュータ読取可能媒体において、当該動作は、コンテナ環境において、サービスを求める要求を受けることを含み得る。コンテナ環境は、サービスメッシュと、複数のコンテナにカプセル化された複数のサービスとを含み得る。サービスは、第1の1つ以上のコンテナにカプセル化されてもよい。この動作はまた、要求はサービスのデバッグインスタンスにルーティングされねばならないと判断することと、サービスのデバッグインスタンスをインスタンス化することとを含み得る。デバッグインスタンスは、第2の1つ以上のコンテナにカプセル化されてもよく、サービスを実現するコードと、1つ以上のデバッグユーティリティとを含み得る。この動作はさらに、サービスメッシュを通じて、要求をデバッグインスタンスにルーティングすることを含み得る。
いくつかの実施形態において、システムは、1つ以上のプロセッサと、1つ以上のメモリデバイスとを含み得る。1つ以上のメモリデバイスは、1つ以上のプロセッサによって実行されると当該1つ以上のプロセッサに動作を実行させる命令を含み、当該動作は、コンテナ環境において、サービスを求める要求を受けることを含み得る。コンテナ環境は、サービスメッシュと、複数のコンテナにカプセル化された複数のサービスとを含み得る。サービスは、第1の1つ以上のコンテナにカプセル化されてもよい。この動作はまた、要求はサービスのデバッグインスタンスにルーティングされねばならないと判断することと、サービスのデバッグインスタンスをインスタンス化することとを含み得る。デバッグインスタンスは、第2の1つ以上のコンテナにカプセル化されてもよく、サービスを実現するコードと、1つ以上のデバッグユーティリティとを含み得る。この動作はさらに、サービスメッシュが、要求をデバッグインスタンスにルーティングすることを含み得る。
いずれの実施形態にも、以下の特徴のうちのいずれかまたはすべてが、限定されることなく任意の組み合わせで含まれ得る。第1の1つ以上のコンテナは、コンテナポッドを構成してもよい。コンテナ環境は、コンテナスケジューラを含むオーケストレーションされたコンテナプラットフォームを含み得る。コンテナスケジューラは、サービスのデバッグインスタンスをインスタンス化させてもよい。コンテナ環境は、サービスのデバッグインスタンスをインスタンス化させるアプリケーションプログラミングインターフェイス(API)レジストリを含み得る。APIレジストリは、サービスのデバッグインスタンスの登録を受け、サービスのデバッグインスタンスのHTTPエンドポイントがAPI関数コールを通じて利用できるようにしてもよい。APIレジストリは、サービスのデバッグインスタンスはインスタンス化されねばならないことを示すプロパティを含むサービスの登録を受けてもよい。サービスは単一のコンテナにカプセル化されてもよい。単一のコンテナはさらに、1つ以上のデバッグユーティリティを含み得る。1つ以上のデバッグユーティリティは、単一のコンテナ以外の少なくとも1つのコンテナにカプセル化されてもよい。1つ以上のデバッグユーティリティは、メモリ使用量またはプロセッサ使用量をモニタリングするプロセスを含み得る。1つ以上のデバッグユーティリティはデバッグデーモンを含み得る。サービスを実現するコードは、サービスのデバッグビルドを含み得る。サービスのデバッグインスタンスは、要求を受ける前にインスタンス化されてもよい。サービスのデバッグインスタンスは、要求を受けたことに応じてインスタンス化されてもよい。要求はサービスのデバッグインスタンスにルーティングされねばならないと判断することは、要求のソースを特定することを含み得る。要求はサービスのデバッグインスタンスにルーティングされねばならないと判断することは、要求をデバッグ要求として指定する要求におけるヘッダを認識することを含み得る。要求は、サービスの他の要求のルーティングを妨害することなく、サービスのデバッグインスタンスに転送されてもよい。
本発明の性質および利点の一層の理解は、本明細書の残りの部分および図面を参照することによって実現するであろう。いくつかの図面で使用されている同様の参照番号は、同様の構成要素を示す。いくつかの例では、参照番号に添字を対応付けることにより、同様の複数の構成要素のうちの1つを示している。既存の添字を示すことなく参照番号に言及している場合は、そのような同様の複数の構成要素すべてに言及することを意図している。
いくつかの実施形態に係る、コンテナプラットフォームにおけるサービスのための開発およびランタイム環境のソフトウェア構造および論理構成を示す図である。 本明細書に記載の実施形態を実行するために特別に設計された専用コンピュータハードウェアシステムを示す図である。 本明細書に記載の実施形態のうちのいくつかで使用されるコンテナプラットフォームに固有であってもよいデータ組織を示す図である。 いくつかの実施形態に係る、IDEおよびプロダクション/ランタイム環境にデプロイすることができるAPIレジストリを示す図である。 いくつかの実施形態に係る、実行時にコンテナプラットフォームとともに使用されるAPIレジストリのデプロイを示す図である。 いくつかの実施形態に係る、APIレジストリをデプロイする方法のフローチャートを示す図である。 いくつかの実施形態に係る、APIレジストリが図6Aのフローチャートを用いてデプロイされるときのコンテナプラットフォームのソフトウェア構造を示す図である。 いくつかの実施形態に係る、APIレジストリにサービスを登録する方法のフローチャートを示す図である。 いくつかの実施形態に係る、APIレジストリにAPIを登録するためのステップのハードウェア/ソフトウェア図を示す。 いくつかの実施形態に係る、APIレジストリに登録されたAPIをブラウズおよび選択するためのグラフィカルインターフェイスおよびコマンドラインインターフェイスの例を示す図である。 いくつかの実施形態に係る、APIレジストリに登録されたサービスおよびその対応する関数を使用する方法のフローチャートを示す図である。 APIレジストリが如何にしてCreateUser( )関数の選択をグラフィカルインターフェイスを介して受けることができるかを示す図である。 いくつかの実施形態に係る、APIレジストリがあるサービスのために自動的に生成したクライアントライブラリの一例を示す図である。 いくつかの実施形態に係る、サービスエンドポイントとAPI関数との間の動的バインディングを含むクライアントライブラリの実施形態を示す図である。 いくつかの実施形態に係る、サービスコールのための入力データセットを完成させるために追加データを配置できるクライアントライブラリの実施形態を示す図である。 いくつかの実施形態に係る、サービスをコールするときにリトライを処理することができるクライアントライブラリを示す図である。 いくつかの実施形態に係る、APIプロパティをAPIレジストリに与える方法を示す図である。 いくつかの実施形態に係る、如何にしてサービスがAPIプロパティをAPIレジストリに与えることができるかについてのハードウェア/ソフトウェア図を示す。 いくつかの実施形態に係る、APIレジストリがプロパティを用いて高可用性のサービスをデプロイする場合のハードウェア/ソフトウェア図を示す。 いくつかの実施形態に係る、APIレジストリを通じてエンドツーエンド暗号化を実施するプロパティのハードウェア/ソフトウェア図を示す。 いくつかの実施形態に係る、APIレジストリがサービス1808の使用ロギングを実現するためのプロパティを示す図である。 いくつかの実施形態に係る、サービスの認証プロトコルを実施することが可能なプロパティのハードウェア/ソフトウェア図を示す。 いくつかの実施形態に係る、サービスのランタイムインスタンス化を可能にするプロパティのハードウェア/ソフトウェア図を示す。 いくつかの実施形態に係る、サービスのレート制限関数を実現するプロパティのハードウェア/ソフトウェア図を示す。 いくつかの実施形態に係る、サービス要求を受けるためのクラウドコンピューティングプラットフォームの一部のブロック図を示す。 いくつかの実施形態に係る、ポッドにカプセル化されたサービスのデバッグビルドを示す図である。 いくつかの実施形態に係る、サービスのデバッグビルドのための代替ポッドを示す図である。 いくつかの実施形態に係る、サービスのデバッグインスタンスをインスタンス化するためのシステムのブロック図を示す。 いくつかの実施形態に係る、デバッグ要求をサービスのデバッグインスタンスにルーティングするコンテナプラットフォームのブロック図を示す。 いくつかの実施形態に係る、要求をクローニングするクラウドコンピューティングプラットフォームのブロック図を示す。 いくつかの実施形態に係る、サービスのデバッグインスタンスに転送されているクローニングされた要求のブロック図を示す。 コンテナ環境においてコンテナ化されたサービスのランタイムデバッグを提供する方法のフローチャートを示す図である。 実施形態のうちのいくつかを実現するための分散型システムの簡略化されたブロック図を示す。 実施形態のシステムの構成要素が提供するサービスをクラウドサービスとして提供し得るシステム環境の構成要素の簡略化されたブロック図を示す。 各種実施形態を実現し得る具体例としてのコンピュータシステムを示す図である。
詳細な説明
開発者が開発中にサービスを登録することを可能にするとともにデプロイ中およびデプロイ後双方においてこれらのサービスを他のサービスが利用できるようにする、統合開発環境(IDE)の一部であるアプリケーションプログラミングインターフェイス(API)レジストリの実施形態について説明する。APIレジストリは、コンテナプラットフォーム上のコンテナ化されたアプリケーションとして動作するオーケストレーションされたコンテナプラットフォームの一部としてデプロイすることが可能である。サービスまたはマイクロサービスが開発されコンテナプラットフォーム上のコンテナにデプロイされると、APIレジストリは、ディスカバリプロセスを実行することにより、利用できるサービスに対応するコンテナプラットフォーム内の利用できるエンドポイント(たとえばIPアドレスおよびポート番号)の場所を特定することができる。APIレジストリはまた、API定義ファイルのアップロードを受け入れることができ、API定義ファイルは、生のサービスエンドポイントを、APIレジストリを介して利用できるようにされるAPI関数にするために使用することができる。APIレジストリは、発見されたエンドポイントを、最新状態に保たれコンテナプラットフォーム内の他のサービスが利用できるようにされたAPI関数に動的にバインドすることができる。これは、API関数とサービスエンドポイントとの間のバインディングに対する任意の変更をAPIレジストリが管理している間、他のサービスが静的にコールできる安定したエンドポイントを提供する。これはまた、コンテナプラットフォーム内のサービスを使用するプロセスを簡略化する。HTTPコールに対するコードを記述する代わりに、新たなサービスは、APIインターフェイスを使用するだけで、登録されたサービスにアクセスすることができる。
いくつかの実施形態において、IDEは、コンテナプラットフォーム内で利用することが可能でありAPIレジストリに登録されているサービスの場所を開発者が特定するための、ナビゲーション/ブラウズインターフェイスを提供することができる。開発中の新たなサービスのために、APIレジストリが既存のサービスにコールするとき、APIレジストリは、登録されているサービスとのやり取りのために必要なすべての機能を含む一組のクライアントライブラリを自動的に生成することができる。たとえば、いくつかの実施形態は、APIコールに対応するメンバ関数を含むオブジェクトクラスを生成することができる。開発中、新たなサービスは、これらのオブジェクトをインスタンス化するおよび/またはそれらのメンバ関数を使用するだけで、対応するAPIにコールすることができる。クライアントライブラリにおけるコードは、呼び出し側サービスと登録されたサービスのエンドポイントとの間の直接接続を支配し、このやり取りに必要なすべての機能を扱うコードを含み得る。たとえば、自動的に生成されたクライアントライブラリは、APIコールからのパラメータをサービスエンドポイントへのHTTPコールにパッケージングしフォーマットするためのコード、コールのためのパラメータセットを完成させるためにデータを配置するためのコード、情報を互換パケット(JSON、XMLなど)にパッケージングするためのコード、結果パケットを受けてパースするためのコード、リトライおよびエラー条件を扱うためのコードなどを含み得る。呼び出し側サービスの観点からすると、この機能すべてを扱うためのコードは、APIレジストリによって自動的に生成され、したがって、サービスコールの詳細を要約しカプセル化してクライアントライブラリオブジェクトにする。呼び出し側サービスに要求されるのは、APIレジストリが作成したクライアントライブラリオブジェクトのメンバ関数を実行することだけである。
いくつかの実施形態において、APIレジストリは、登録されたサービスのランタイム実行を定義し得る一組のプロパティのアップロードを受け入れることもできる。この一組のプロパティは、開発中に、API定義ファイルとともにアップロードすることができる。これらのプロパティは、エンドツーエンド暗号化、使用/ロギング要件、ユーザ認証、オンデマンドサービスインスタンス化、高可用性のための複数のサービスデプロイメントインスタンス、レート/使用制限、およびその他のランタイム特徴等の、ランタイム特徴を定義することができる。APIレジストリは、開発中、デプロイ中、およびランタイム中に、コンテナ環境とやり取りすることによってこれらのプロパティが満たされることを保証できる。開発中、呼び出し側サービスのために自動的に生成されたクライアントライブラリは、暗号化コード、使用ロギングコード、および/またはユーザ認証サービスとのやり取り等の、これらのプロパティの実行に必要となり得るコードを含むことができる。登録されたサービスがデプロイされているとき、APIレジストリは、コンテナプラットフォームに対し、サービスおよび/または追加のロードバランシングモジュールの複数のインスタンスをインスタンス化することによってランタイム中のサービスの高い信頼性を保証するよう指示することができる。ランタイム中にサービスがコールされると、APIレジストリは、オンデマンドインスタンス化のためにサービスをインスタンス化させ、使用を抑えるために行うことができるAPIコールの数を制限し、その他のランタイム関数を実行することができる。
図1は、いくつかの実施形態に係る、コンテナプラットフォームにおけるサービスのための開発およびランタイム環境のソフトウェア構造および論理構成を示す。この環境は、コンテナプラットフォーム上にデプロイされるサービスおよびマイクロサービスを開発するために使用し得るIDE102を含み得る。IDEは、新たなサービスの記述およびテストのためにサービス開発者が使用できる基本ツールすべてを統合し提供するソフトウェアスイートである。IDE102は、開発者がソースコード記述プロセスの記述、ナビゲート、統合、および視覚化を行うことを可能にする、グラフィカルユーザインターフェイス(GUI)、コード補完機能、およびナビゲート/ブラウズインターフェイスとともに、ソースコードエディタ106を含み得る。IDE102はまた、可変インターフェイス、即時可変インターフェイス、表現評価インターフェイス、メモリコンテンツインターフェイス、ブレークポイント可視化および機能、ならびにその他のデバッグ関数を含む、デバッガ110を含み得る。IDE102はまた、マシンコードをコンパイルしコンパイルしたマシンコードまたは解釈されたバイトコードを実行するためのコンパイラおよび/またはインタプリタ108を含み得る。コンパイラ/インタプリタ108は、開発者が別のビルド自動化構成のためのメイクファイル(makefiles)を使用/生成することを可能にするビルドツールを含み得る。IDE102のいくつかの実施形態は、コードライブラリ112を含み得る。コードライブラリは、一般的なコード関数、オブジェクト、インターフェイス、および/または、開発中のサービスにリンクさせることができ複数の開発で再使用できるその他の構造を含む。
サービスは、IDE102内で、開発することができ、デプロイの準備が整うまで徹底的にテストすることができる。サービスはその後、プロダクション/デプロイメント環境104にデプロイすることができる。プロダクション/デプロイメント環境104は、専用ハードウェア、仮想マシン、およびコンテナ化されたプラットフォームを含む、多数の異なるハードウェアおよび/またはソフトウェア構造を含み得る。本開示よりも前において、サービス114がプロダクション/デプロイメント環境104にデプロイされたとき、サービス114は、IDE102で使用されるツールの多くに対するランタイムアクセスを行うことができない。サービス114がプロダクション/デプロイメント環境104で実行するのに必要ないずれの機能も、コードライブラリ112からパッケージングしサービス114とともにプロダクション/デプロイメント環境104にデプロイする必要があった。加えて、一般的にサービス114は、デバッガ110の機能またはソースコードエディタ106からのソースコードのコピーのうちのいずれも伴うことなくデプロイされる。実際、サービス114は、ランタイム動作に必要な機能すべてとともにプロダクション/デプロイメント環境104にデプロイされるが、開発中にだけ使用された情報は取り除かれる。
図2は、本明細書に記載の実施形態を実行するために特別に設計された専用コンピュータハードウェアシステムを示す。一例として、サービス114は、サービスとしてのインフラストラクチャ(Infrastructure as a Service)(IaaS)クラウドコンピューティング環境202にデプロイすることができる。これは、ネットワーク上に仮想化または共有コンピューティングリソースを提供するクラウドコンピューティングの一形態である。IaaSクラウドコンピューティング環境202はまた、サービスとしてのソフトウェア(Software as a Service)(SaaS)および/またはサービスとしてのプラットフォーム(Platform as a Service)(PaaS)アーキテクチャとして構成されたその他のクラウドコンピューティング環境を含み得る、または当該環境に結合し得る。この環境において、クラウドプロバイダは、従来オンプレミスデータセンターに存在していたハードウェアおよび/またはソフトウェアコンポーネントのインフラストラクチャをホストすることができる。このハードウェアは、サーバ、ストレージ、ネットワーキングハードウェア、ディスクアレイ、ソフトウェアライブラリ、および、ハイパーバイザレイヤのような仮想化ユーティリティを含み得る。IaaS環境202は、Oracle(登録商標)またはその他一般に利用できるクラウドプラットフォームのような商用ソースによって提供されることができる。IaaS環境202はまた、ハードウェアおよびソフトウェアのプライベートインフラストラクチャを用いてプライベートクラウドとしてデプロイすることもできる。
クラウド環境のタイプとは関係なく、サービス114は、複数種類のハードウェア/ソフトウェアシステムにデプロイすることができる。たとえば、サービス114は、専用ハードウェア206にデプロイすることができる。専用ハードウェア206は、サービス114に特別に割り当てられたサーバ、ディスク、オペレーティングシステム、ソフトウェアパッケージなどのようなハードウェアリソースを含み得る。たとえば、特定のサーバが、サーバ114との間で流れるトラフィックを処理するように割り当てられていてもよい。
別の例において、サービス114は、1つ以上の仮想マシン208として動作させるハードウェア/ソフトウェアにデプロイすることができる。仮想マシンは、専用コンピュータハードウェア206の機能を提供するコンピュータシステムをエミュレートしたものである。しかしながら、特定の関数専用にする代わりに、物理ハードウェアを複数の異なる仮想マシンが共有してもよい。各仮想マシンは、完全なオペレーティングシステムを含む、実行する必要があるすべての機能を提供することができる。これにより、異なるオペレーティングシステムを有する複数の仮想マシンが、同一の物理ハードウェア上で実行することができ、複数のサービスが1つのハードウェアを共有することができる。
別の例において、サービス114はコンテナプラットフォーム210にデプロイすることができる。コンテナプラットフォームは、仮想マシン208と、複数の重要な点において異なっている。第1に、以下図3で詳述するように、コンテナプラットフォーム210は、個々のサービスをコンテナにパッケージングする。各コンテナは、ホストオペレーティングシステムカーネルを共有するとともに、バイナリ、ライブラリ、およびその他の読取専用コンポーネントを共有する。これにより、コンテナを極めて軽くすることができ、わずか数メガバイトのサイズであることも多い。加えて、軽量コンテナは、仮想マシンのブートアップに数分を要するのに対して起動にわずか数秒しかかからず、非常に効率的である。また、コンテナは、オペレーティングシステム、および、コンテナプラットフォーム210内の一組のコンテナセットに対してともに管理できるその他のライブラリを共有することにより、管理オーバーヘッドを減じる。コンテナは同じオペレーティングシステムを共有するものの、オペレーティングシステムは分離のために仮想メモリサポートを提供するので、分離されたプラットフォームを提供する。コンテナ技術は、Docker(登録商標)コンテナ、Linux(登録商標) Libcontainer(登録商標)、オープンコンテナイニシアティブ(Open Container Initiative)(OCI)、Kubernetes(登録商標)、CoeOS、Apache(登録商標) Mesosを、それ以外のものともに含み得る。これらのコンテナは、本明細書では簡単に「コンテナプラットフォーム210」と呼ぶ場合があるコンテナオーケストレーションプラットフォームにデプロイすることができる。コンテナプラットフォームは、デプロイされたソフトウェアコンテナの自動化された構成、調整、および管理を維持する。コンテナプラットフォーム210は、サービスディスカバリ、ロードバランシング、ヘルスチェック、マルチデプロイメントなどを提供することができる。コンテナプラットフォーム210は、ノードおよびポッドで構成されたコンテナを実行する、Kubernetesのような一般に利用できるコンテナプラットフォームによって実現し得る。
サービス114をデプロイするプラットフォーム206、208、210とは関係なく、プラットフォーム206、208、210は各々、サービス114をコールするためのパブリックアクセスを提供するサービスエンドポイント212、214、216を提供できる。一般的に、これらのエンドポイントには、HTTPコールを通してアクセスでき、これらのエンドポイントは、IPアドレスおよびポート番号に対応付けられる。正しいIPアドレスおよびポート番号に接続することにより、その他のサービスは、公的に利用できるようにされたときにプラットフォーム206、208、210のうちのいずれかにデプロイされるサービスをコールすることができる。サービス114等の各サービスは、サービスをコールするための自身のプロプライエタリフォーマットとデータ要件とを含み得る。同様に、各サービスは、フォーマットおよびデータタイプがそのサービス114に固有である結果を返すことができる。サービス固有の要件に加えて、特定のデプロイメントプラットフォーム206、208、210はまた、サービスと適切にやり取りするために準拠する必要がある、プログラミング言語、パッケージフォーマット(JSON、XMLなど)その他のような、サービス114とやり取りするための追加要件を含み得る。
上述の例は、サービス114を上記プラットフォーム206、208、210のうちのいずれかにデプロイすることを可能にするが、本明細書に記載の実施形態は、上記コンテナプラットフォーム210のために特別に設計される。よって、「コンテナプラットフォーム」にデプロイされると具体的に記載された実施形態は、仮想マシンプラットフォームに、サーバもしくは専用ハードウェアプラットフォーム上に、または一般的にIaaS環境にデプロイされると具体的に記載された実施形態と区別することができる。
図3は、本明細書に記載の実施形態のうちのいくつかが使用するコンテナプラットフォーム210に固有であってもよいデータ組織を示す。一般的に、コンテナプラットフォームへのサービスのいかなるデプロイメントもポッド304、306にデプロイされる。ポッドは、1つ以上のアプリケーションコンテナ(たとえばDockerまたはrkt)からなるグループを表す抽象概念である。ポッドはまた、当該ポッド内のすべてのコンテナが共通して利用できるいくつかの共有リソースを含み得る。たとえば、ポッド304はコンテナ310とコンテナ312とを含む。ポッド304はまた、共有リソース308を含む。このリソースは、ストレージボリューム、またはコンテナが如何にしてポッド304内で実行されるかまたは接続されるかに関するその他の情報を含み得る。ポッド304は、比較的密接に結合された異なるサービスコンテナ310、312を含むアプリケーション専用論理ホストをモデル化することができる。たとえば、コンテナ310内のサービス326は、リソース308を利用することができ、コンテナ312内のサービス320をコールすることができる。サービス320もサービス322をコールすることができ、サービス322もサービス324をコールすることができ、これらのサービスは各々コンテナ312にデプロイされている。サービス324の出力はネットワークIPアドレスおよびポート318に与えることができ、これはポッド304が共有する別の共通リソースである。このように、サービス320、322、324、326すべてが共有リソース308と協働することにより、他のコンテナで実行されるサービスがIPアドレスおよびポート番号318によってアクセスすることができる、1つのサービスを提供する。このサービスは、コンテナプラットフォームまたはIaaS環境の一部ではない、ワークステーション、ラップトップコンピュータ、スマートフォンまたはその他のコンピューティングデバイスのような、コンテナプラットフォームの外部のコンピュータシステムが、IPアドレスポート318を介してアクセスすることもできる。
最も単純なデプロイメントの場合、各コンテナは1つのサービスを含むことができ、各ポッドはサービスをカプセル化する1つのコンテナを含むことができる。たとえば、ポッド306は1つのサービス328のみを有する1つのコンテナ314のみを含む。この1つのサービスは、ポッド306のIPアドレスおよびポート番号316を通してアクセスできる。典型的に、サービスがコンテナプラットフォームにデプロイされるとき、コンテナおよびポッドがインスタンス化されてこのサービスを保持する。複数の異なるポッドをコンテナノード302にデプロイすることができる。一般的に、ポッドはノード内で実行される。ノードはコンテナプラットフォーム内のワーカーマシン(仮想または物理いずれか)を表す。各ノードは、各ノード内のスケジューリングポッドを自動的に扱う「マスタ」によって管理される。各ノードは、マスタとノードとの間の通信を担い、かつ当該ノードによって表されるマシン上のコンテナ内でポッドを管理するためのプロセスを実行することができる。各ノードはまた、レジストリからコンテナ画像を引き出すこと、コンテナを解凍すること、およびサービスを実行することを担うコンテナランタイムを含み得る。
図4は、いくつかの実施形態に係る、IDE102およびプロダクション/デプロイメント環境104にデプロイすることができるAPIレジストリ404を示す。上述のように、サービス114がIDE102からプロダクション/デプロイメント環境104にデプロイされるとき、IDE102内で独占的に利用できる情報へのランタイムアクセスをサービス114が失うという、技術的課題がある。APIレジストリ404に対し、サービス114は、プロダクション/デプロイメント環境104にデプロイされこの環境でランタイム中に動作している間、アクセスすることができる。開発関数がランタイム関数から分離されるという過去の技術的課題は、開発中にサービスをAPIレジストリ404に登録しAPI定義および/またはAPIプロパティをAPIレジストリ404に与えることにより、APIレジストリ404によって克服される。APIを定義する情報は、IDE102内の開発中の新たなサービス、および、プロダクション/デプロイメント環境104に既にデプロイされているサービスが、使用できる。この登録プロセスの完了後、サービス114はクライアントライブラリを用いて動作することができ、クライアントライブラリは、ランタイム中にAPIレジストリ404にアクセスすることにより、API関数が、対応するサービスの現在のIPアドレスおよびポート番号に正しくバインドされていることを保証する。APIレジストリ404は、これらの技術的課題を解決するために特別に設計された新たなデータ構造および処理ユニットを表す。
当該技術に存在していたもう1つの技術的課題は、サービスプロパティがプロダクション/デプロイメント環境104にデプロイされるときの、サービスプロパティの実現であった。たとえば、サービスを高可用性を伴ってデプロイしようとする場合、開発者は、コンテナプラットフォーム内でサービスの複数のインスタンスを特別にインスタンス化したコンテナデプロイメントファイルと、バランスが取れたトラフィックとを、サービスが常に利用できるように構築する必要がある。サービス開発者は必ずしもこの専門知識を有していた訳ではなく、それらのサービスのデプロイメントを大抵は管理できた訳でもない。上述のように、APIレジストリ404により、サービスは、APIレジストリ404が自動的に実現できる高可用性のようなプロパティを単純に選択することができる。この技術的解決策が可能な理由は、APIレジストリ404がIDE102とプロダクション/デプロイメント環境104との間の隙間の架け橋となるからである。
図5は、いくつかの実施形態に係る、実行時にコンテナプラットフォーム210とともに使用されるAPIレジストリ404のデプロイメントを示す。APIレジストリ404が提供する、既存の技術に対する技術的解決策および改善のうちの1つは、サービスコールのための安定したエンドポイントの維持、ならびにサービスコールへのアクセスの簡略化およびサービスコールへのアクセスのための自動コード生成である。本開示よりも前において、サービス間のコールは、たとえばIPアドレスおよびポート番号に対するHTTPコールを用いるポイントツーポイント接続であった。サービスがアップデート、リプレイス、リロケート、およびコンテナプラットフォーム210に再デプロイされるときに、IPアドレスおよびポート番号が頻繁に変わる可能性がある。この場合、アップデートされたサービスをコールしたすべてのサービスが、そのサービスをコールした実際のコードのIPアドレスおよびポート番号をアップデートする必要があった。APIレジストリ404は、この技術的課題を、サービスのIPアドレスおよびポート番号と、APIレジストリを介して利用できるようにされるAPI関数との間の動的バインディングを提供することによって解決する。APIレジストリ404が自動的に生成するクライアントライブラリは、APIレジストリ404にアクセスすることにより特定のサービスの現在のIPアドレスおよびポート番号を取り出すおよび/または検証する関数を含み得る。したがって、第2のサービスに接続する第1のサービスは、クライアントライブラリを一度生成するだけで、第2のサービスへの、存続期間にわたって安定した接続を提供する。
APIレジストリ404が解決する別の技術的課題は、クライアントライブラリの自動生成である。本開示よりも前において、第2のサービスにアクセスする第1のサービスは、第2のサービスにアクセスするためのカスタムコードを開発者が記述することを必要としていた。このコードは時間の経過に伴って変化する可能性があるので、どちらもアップデートを必要とする第1のサービスと第2のサービスとの間に非互換性が生じることになる。APIレジストリ404は、この技術的課題を、サービスをコールするためにクライアントライブラリを自動的に生成するのに使用されるAPI定義ファイルをアップロードすることによって解決する。したがって、サービスは、その他いずれかのサービスにおけるコーリングコードが如何にして動作すべきかを具体的に指定することができ、これが互換性を保証する。これらのクライアントライブラリはまた、サービスをコールするためのコードを大幅に簡略化しカプセル化する。以下で述べるように、IPアドレスおよびポート番号を使用する複雑なHTTPコールは、呼び出し側サービスに固有の言語(たとえばJava(登録商標)、C#など)の単純なメンバ関数に置き換えることができる。これにより、呼び出し側サービスは、APIレジストリ404からAPI関数を選択することができ、関数で実現するコードは、クライアントライブラリとして呼び出し側サービスダウンロードすることができる。
図6Aは、いくつかの実施形態に係る、APIレジストリ404をデプロイする方法のフローチャートを示す。この方法は、APIレジストリサービスをコンテナ環境にデプロイすることを含み得る(601)。APIレジストリは、コンテナ環境においてコンテナ内で動作するサービスとして実現することができる。よって、APIレジストリは、実行時にアクセスされることができるよう、コンテナ環境内にサービスがデプロイされた後で能動的に実行することができる。APIレジストリは、上記既存のIDEにリンクさせることもできる。この方法はさらに、コンテナプラットフォーム内の利用できるサービスのためのポートを発見することを含み得る(603)。サービスがコンテナプラットフォームにデプロイされると、APIレジストリは、コンテナプラットフォームにデプロイされたサービス各々を逐次的にトラバースするディスカバリプロセスを開始することができる。サービスごとに、APIレジストリはIPアドレスおよびポート番号を検出して記録することができる。このプロセスによって発見されたIPアドレスおよびポート番号の一覧表は、APIレジストリに対応付けられたテーブル等のデータ構造に格納することができる。また、各IPアドレスおよびポート番号は、そのサービスの名称とともに、または、コンテナプラットフォーム上のサービスを一意に識別するその他の識別子とともに、格納することができる。図6Aのフローチャートに示されるこれらの初期ステップは、APIレジストリがコンテナプラットフォームのランタイム環境内で動作を開始するため、かつ、IDE内で開発中のサービスがAPIレジストリを利用できるようにするための、出発点を提供する。
図6Bは、いくつかの実施形態に係る、図6Aのフローチャートを用いてAPIレジストリをデプロイするときのコンテナプラットフォーム210のソフトウェア構造を示す。先に述べたように、APIレジストリ404はコンテナプラットフォーム210内のコンテナ620にデプロイすることができる。先に図3で説明したように、コンテナ620は、あるノードにおいて1つ以上のポッド内で動作することができる。APIレジストリ404を、コンテナプラットフォーム210内の他のコンテナのうちのいずれかが非公式に利用できるようにすることができる。いくつかの実施形態において、APIレジストリ404を、コンテナプラットフォーム210の一部ではない他のデバイスが公的に利用できるようにすることもできる。コンテナ化されたサービスとして、APIレジストリ404は他のサービスが利用できるIPアドレスおよびポート番号を有することができる。しかしながら、APIレジストリ404のIPアドレスおよびポート番号は、クライアントライブラリで自動的に生成されたコードのみによって使用されるので、いくつかの実施形態はAPIレジストリ404のIPアドレスおよびポート番号を公開する必要はない。その代わりに、IDE自身のクライアントライブラリが、他のサービスの開発、デプロイ、および実行中にコンタクトできるよう、APIレジストリ404のIPアドレスおよびポート番号の最新一覧表を管理することができる。
APIレジストリ404は、コンテナ620にデプロイされた後に、ディスカバリプロセスを実行することができる。ディスカバリプロセスは、コンテナプラットフォームにおけるノードのディレクトリ一覧表を用いることにより、IPアドレスおよびポート番号で、サービスを実現するポッドを特定することができる。そうすると、APIレジストリ404は、利用できる各サービスの番号または名称等の固有識別子にアクセスし、識別子を各IPアドレスおよびポート番号とともにコンテナプラットフォーム210に格納することができる。このディスカバリプロセスを周期的に実行することにより、コンテナプラットフォーム210に追加された新たなサービスを検出することができるとともに、コンテナプラットフォーム210から削除された既存のサービスを特定することができる。以下で述べるように、このディスカバリプロセスを用いることにより、既存のサービスについてIPアドレスおよびポート番号がいつ変化したかを検出することもできる。たとえば、APIレジストリ404は、エンドポイント602、604、606、608を有するサービスを発見することができる。下記プロセスにおいて、APIレジストリ404は、これらのエンドポイント602、604、606、608各々を、APIレジストリ404に登録されたAPI関数にバインドすることができる。この最初の発見後のある時点で、エンドポイント602のIPアドレスおよび/またはポート番号が、エンドポイント602に対応付けられたサービスがリプレイス、アップデート、またはリバイズされたときに、変更される場合がある。APIレジストリ404は、このエンドポイント602に対する変更を検出し、APIレジストリ404が提供する既存のAPI関数へのバインディングをアップデートすることができる。
同様に、APIレジストリ404は、ディスカバリプロセスを用いることにより、いつエンドポイントが利用できなくなったかを検出し、その後、サービスに対応付けられたAPI関数を削除することができる。いくつかの実施形態において、サービスはAPIレジストリ404に登録されているものの、対応するAPI関数が現在有効なエンドポイントにバインドされていないとき、APIレジストリ404は、対応するAPI関数をコールしているいずれかのサービスにモックレスポンス(mock response)を与えることができる。たとえば、エンドポイント604に対応するサービスについてAPIが登録されているものの、エンドポイント604は現在利用できない場合、APIレジストリ404は、エンドポイント604に対するコールをインターセプトしそれに応じてデフォルトまたはダミーデータを与えることができる。これにより、エンドポイント604に対応付けられているサービスをコールするサービスは、機能を維持する、および/またはこの特定のサービスに対する接続を「切断する」ことなく設計プロセスを続けることができる。モック/テストデータシナリオについては以下でより詳細に説明する。
図7Aは、いくつかの実施形態に係る、APIレジストリ404にサービスを登録する方法のフローチャートを示す。この方法は、API定義のアップロードを受けることを含み得る(701)。API定義は、データパケット、ファイル、または情報リポジトリに対するリンクの形態で提供し得る。API定義は、サービスに対応付けられたエンドポイントにバインドすべきAPI関数を特定し定義するために使用できる任意の情報を含み得る。たとえば、API定義のいくつかの実施形態は、以下のデータを、すなわち、サービス名またはその他の固有識別子、サービスエンドポイントおよびコールに対応する関数名、対応する記述およびデータタイプでサービスにコールするのに必要なデータ入力、結果データフォーマットおよびデータタイプ、現在のIPアドレスおよび/またはポート番号、エンドポイントに対応付けられることになるAPI関数の機能を記述する文書、モック/テストシナリオ中に返すべきデフォルトまたはダミーデータ値、ならびに、APIレジストリ404が、エンドポイントが受けたHTTP要求を、クラスデータオブジェクトのAPI関数コールを使用するクライアントライブラリに変換するために使用し得るその他任意の情報を、含み得る。
この方法はまた、アップロードされたAPI定義に基づいて対応するAPI関数を作成することを含み得る(703)。これらのAPI関数はAPI定義に基づいて自動的に生成することができる。サービスの各エンドポイントは複数の異なるAPI関数に対応付けることができる。たとえば、RESTfulインターフェイスを実現するエンドポイントは、同一のIPアドレスおよびポート番号のPOST、GET、PUT、およびDELETE関数に対するHTTPコールを受けることができる。これは結果としてたとえば異なるAPI関数に対するものになり得る。たとえば、このインターフェイスがユーザのリストを表す場合、これは、GetUser( )、AddUser( )、RemoveUser( )、およびUpdateUser( )のような、少なくとも4つの異なるAPI関数に対応し得る。加えて、各API関数は、UpdateUser(id)、UpdateUser(name)、UpdateUser(firstname, lastname)などのような、複数の異なるパラメータリストを含み得る。これらのAPI関数を生成し、生成されたAPI関数をAPIレジストリを介して他のサービスが利用できるようにすることができる。以下でより詳細に説明するように、これらの関数をAPIレジストリを介してコールするためにサービスは必要ではないことに注意する必要がある。代わりに、これらの関数は、APIレジストリにおいてブラウズするのに利用できるようにされ、選択されると、APIレジストリは、呼び出し側サービスにおいてこれらの関数を実現するクライアントライブラリを生成することができる。
この方法はさらに、APIレジストリにおいて、API関数と、対応するサービスのエンドポイントとの間のバインディングを作成することを含み得る(705)。上記ディスカバリプロセスおよびステップ701の登録プロセスに基づいて、APIレジストリは、コンテナプラットフォームにおけるサービスのエンドポイントと、APIレジストリが作成したAPI関数との間の動的バインディングを作成することができる。利用できるエンドポイントおよびサービスを発見したときに形成される上記データ構造に、APIレジストリは、各エンドポイントの対応する関数または一組の関数を格納することができる。上述のように、このバインディングは、サービスがいつアップデート、移動、リプレイス、またはコンテナプラットフォームに追加されるかがディスカバリプロセスによって判断されたときに、常にアップデートすることができる。これにより、呼び出し側サービスにおいて作成されたクライアントライブラリは、先ずAPIレジストリを調べることにより、サービスの現在のIPアドレスおよびポート番号を検証するまたは受けることができる。
図7Bは、いくつかの実施形態に係る、APIレジストリ404にAPIを登録するためのステップのハードウェア/ソフトウェア図を示す。上述のように、APIレジストリ404をインスタンス化しコンテナプラットフォーム210におけるコンテナ620内で実行することができる。コンテナプラットフォーム210はプロダクション/デプロイメント環境を表しているが、APIレジストリ404はそれでもなお、サービスを開発するために使用されるIDE102からアクセスすることができる。よって、IDE102は、API定義ファイル702をAPIレジストリ404にアップロードするメカニズムを提供することができる。具体的には、IDE102のユーザインターフェイスは、開発者がAPI定義ファイル702のフィールドを定義するおよび/またはフィールドにポピュレートすることを可能にするウィンドウまたはインターフェイスを含み得る。上述のこの情報は、関数名、パラメータリスト、データタイプ、フィールド長、オブジェクトクラス定義、IPアドレスおよびポート番号、サービス名またはその他の固有識別子などを、含み得る。この情報は、APIレジストリ404にアップロードすることができ、動的バインディングによって、エンドポイント602の特定のIPアドレスおよびポート番号にリンクさせることができる。最後に、APIレジストリ404は、APIレジストリ404を介して利用できるようにすることができる1つ以上のAPI関数704を生成することができる。
サービスがAPIレジストリ404に登録され1つ以上のAPI関数が生成された後に、APIレジストリは、開発者がサービスを設計する際にこれらの関数を利用できるようにすることができる。図8は、いくつかの実施形態に係る、APIレジストリ404に登録されたAPIをブラウズし選択するためのグラフィカルインターフェイス802およびコマンドラインインターフェイス804の例を示す。コンテナプラットフォームに対して新たなサービスをプログラミングおよび開発するときに、開発者は、グラフィカルインターフェイス802にアクセスすることにより、それらのサービスで使用できるAPI関数をブラウズし選択することができる。このグラフィカルインターフェイス802は、一例にすぎず、API関数をブラウズし選択するために使用できるグラフィカルインターフェイスのタイプを限定することを意図している訳ではない。
この実施形態において、IDE102は、APIレジストリに登録されているAPIのリストを提供するようグラフィカルインターフェイス802に命じることができる。この実施形態において、APIはエンドポイントに基づいてカテゴライズされる。たとえば、あるサービスに対応する1つのエンドポイントは、ユーザ記録を格納するためのRESTfulインターフェイスを提供し得る(たとえば「UserStorage」)。グラフィカルインターフェイス802は、選択されたエンドポイントを介して利用できるすべてのAPI関数(たとえば「CreateUser」、「DeleteUser」、「UpdateUser」など)を表示することができる。その他の実施形態は、サービスが複数のエンドポイントを提供する場合、サービス全体に基づいて関数をグループ分けすることができる。グラフィカルインターフェイス802は、呼び出し側サービスで使用される1つ以上のAPI関数の選択を受けることができる。APIレジストリは次に、必要なパラメータおよびリターン値を含む、API関数の使用方法を示す文書を提供することができる。当業者は、コマンドラインインターフェイス804がグラフィカルインターフェイス802と同様の情報を提供することができかつ同様の入力を受けることができることを、理解するであろう。
図8に示されるインターフェイス802、804は複数の技術的利点を提供する。第1に、これらのインターフェイス802、804は、APIレジストリに登録されているすべてのAPIの最新一覧表を提供する。これは、コンテナプラットフォームで現在利用できるすべてのサービスのリストに相当する。文書を調べること、サービス開発者にコンタクトすること、および/または利用できるサービスのリストの場所を特定するためのその他の非効率的なタスクを実行することが要求されるのではなく、サービス開発者はこの情報をリアルタイムで取り出して表示することができる。加えて、サービスがアップデートされると、API定義ファイルを対応するやり方でアップデートすることができる。これにより、次に図8に示されるディスプレイがアップデートされて各API関数の最新の可用性情報を提供する。
図9は、いくつかの実施形態に係る、APIレジストリに登録されたサービスおよびその対応する関数を使用する方法のフローチャートを示す。この方法は、登録されたAPIの一覧表を提供することを含み得る(901)。所望のサービスが既にわかっている場合はこのステップを省略してもよい。しかしながら、一般的に、サービスは、上述の図8のインターフェイスを用いたブラウズおよびナビゲーションのために表示することができる。この方法はまた、API関数の選択を受けることを含み得る(903)。この選択は、APIレジストリがサービスの開発者から受けることができるものである。たとえば、開発者は、上記CreateUser( )関数を用いてユーザ記録のデータベースをアップデートすると決定する場合がある。図10は、APIレジストリが如何にしてCreateUser( )関数の選択1002をグラフィカルインターフェイス802を介して受けることができるかを示す。他の実施形態は、この選択を、コマンドラインインターフェイスを介してまたはIDEが提供するその他の入力方法を介して受けることができる。
再び図9を参照して、APIレジストリは、API関数の選択を受けると、呼び出し側サービスのための1つ以上のクライアントライブラリを生成することができる(905)。クライアントライブラリを生成することにより、呼び出し側サービスに、API関数に動的にバインドされたサービスエンドポイントを提供することができる。具体的には、IDEは、コンテナプラットフォームにおけるサービスエンドポイントと直接インターフェイスするのに必要な機能をカプセル化する一組のクラスオブジェクトをIDEに生成することができる。いくつかの実施形態において、クライアントライブラリは、サービスとの通信に必要なコードを実施するメンバ関数をコールするためにインスタンス化または使用することができるオブジェクトクラスを含み得る。これらのクライアントライブラリの例については以下でより詳細に説明する。
この方法はさらに、テストデータを提供することを含み得る(907)。サービスは、APIレジストリに登録されるとき、完全である必要はない。代わりに、サービスは、呼び出し側サービスに対する機能的レスポンスを提供する準備がまだ整っていないことをAPIレジストリに対して示すことができる。いくつかの実施形態において、APIレジストリにアップロードされたAPI定義ファイルは、サービスが機能的になる前に返す必要がある情報のタイプの明細を含み得る。呼び出し側サービスがAPI関数をコールすると、APIレジストリが生成したクライアントライブラリは、サービスエンドポイントではなくAPIレジストリに要求をルーティングすることができる。そうすると、APIレジストリは、ダミー、ヌル、またはデフォルト値を用いてレスポンスを提供することができる。これに代えて、クライアントライブラリ自身の中にあるコードが、呼び出し側サービスに返されるデフォルトデータを生成してもよい。
図9に示される具体的なステップが本発明の各種実施形態に係るAPIレジストリの特定の使用方法を提供することが理解されるはずである。代替実施形態に従いステップの他のシーケンスを実行することもできる。たとえば、本発明の代替実施形態は、概要を述べた上記ステップを異なる順序で実行し得る。加えて、図9に示される個々のステップは、個々のステップに適したさまざまなシーケンスで実行し得る複数のサブステップを含み得る。さらに、特定のアプリケーションに応じてその他のステップを追加または削除する場合もある。当業者は、多数の変形、修正、および代替形を認識するであろう。
図11は、いくつかの実施形態に係る、APIレジストリがあるサービスのために自動的に生成したクライアントライブラリの一例を示す。このクライアントライブラリ1102は、ユーザ記録を格納するサービスに対応し得る。このクライアントライブラリ1102ならびに対応するクラスおよびサービスは、例示のために提供されているにすぎず、限定を意図している訳ではない。先に述べたように、各API関数およびサービスは、APIレジストリにアップロードされたAPI定義ファイルによって如何にしてクライアントライブラリが生成されるべきかを指定することができる。したがって、「User(ユーザ)」サービスに関して以下で述べる原理は、その他のサービスにも適用し得る。
Userサービスを表すために、APIレジストリはUserのクラスを生成することができる。呼び出し側サービスは、APIレジストリによるクライアントライブラリの生成を要求するとき、呼び出し側サービスが使用しているプログラミング言語を指定することができる。たとえば、呼び出し側サービスがJavaでIDEに記述されている場合、APIレジストリはJavaプログラミング言語でクラスライブラリを生成することができる。これに代えて、呼び出し側サービスがC#で記述されている場合、APIレジストリはC#プログラミング言語でクラスライブラリを生成することができる。Userクラスは、サービスエンドポイントを介して実行することができる異なる動作に対応するメンバ関数を有するように生成することができる。これらのメンバ関数は、スタティックメンバ関数にすることにより、Userクラスのインスタンス化されたインスタンスを必要としないようにすることができる、または、インスタンス化されたUserオブジェクトとともに使用されてもよい。
この例において、Userサービスは、RESTfulインターフェイスを使用することにより、サービスによって格納された個々のユーザ記録を編集することができる。たとえば、APIレジストリは、CreateUser( )関数を生成することにより、Userサービスに対するPOSTコールを実現することができる。クラスライブラリが実行できる機能のうちの1つは、サービスに対してデータパケットとして直接送られるAPI関数に対してパラメータとして提供されるデータを、パースし、フィルタリングし、フォーマットすることである。この例において、CreateUser( )関数は、呼び出し側サービスの便宜のためにフォーマットされたパラメータを受け入れることができる。たとえば、呼び出し側サービスは、ユーザの名(first name)およびユーザの姓(last name)のストリングを別々に格納することができる。しかしながら、POSTコマンドは、名と姓との連結ストリングを必要とする場合がある。ユーザーフレンドリーなパラメータセットを受け入れるために、クライアントライブラリ1102は、関数に対するパラメータとして受けたデータを、サービスエンドポイントと互換性のあるフォーマットにフォーマットする一組の動作を実行することができる。これは、ヘッダ情報の生成、特定のデータフィールドのフォーマットの変更、データフィールドの連結、その他のソースからの追加データを要求すること、計算またはデータ変換の実行などを含み得る。これはまた、再フォーマットされたパラメータを、JSON、XMLなどのようなフォーマットにパッケージングすることを含み得る。
パラメータがサービスエンドポイントのためのパッケージに正しくフォーマットされると、クライアントライブラリ1102は、サービスに対するPOSTコールを扱うこともできる。クライアントライブラリが生成されるときに、サービスのIPアドレスおよびポート番号を、サービスに対するHTTP要求で使用されるCreateUser( )関数に挿入することができる。なお、HTTP要求の詳細は、CreateUser( )関数にカプセル化される。呼び出し側サービスのための開発者が、サービスによって利用できるようにされたPOST関数の使用を所望する場合、コードをライブラリ1102自身に書き込む代わりに、APIレジストリからUserサービスを選択することができる。そうすると、APIレジストリは、Userクラスを含むクライアントライブラリ1102を自動的に生成する。次に、POST関数を使用するために、サービス開発者は、User.CreateUser(“John”, “Smith”, 2112)関数を使用するだけで、ユーザであるJohn Smithをサービスに追加することができる。
図12は、いくつかの実施形態に係る、サービスエンドポイントとAPI関数との間の動的バインディングを含むクライアントライブラリ1202の実施形態を示す。この例において、APIレジストリがクライアントライブラリ1202を生成するとき、CreateUser( )関数は、サービスのIPアドレスおよびポート番号を動的に取り出すコード1204を含み得る。呼び出し側サービス114は、呼び出し側サービス114がコンテナプラットフォームのようなプロダクション/デプロイメント環境104で動作しているときに、GetIPPort( )関数を用いることにより実行時に要求をAPIレジストリ404に送ることができる。APIレジストリ404は、API関数とサービスエンドポイントとの間の最新バインディングを維持するために常にアップデートされるその内部テーブルにアクセスすることができる。次に、APIレジストリ404は、現在のIPアドレスおよびポート番号を呼び出し側サービス114に返すことができる。次に、クライアントライブラリ1202は、IPアドレスおよびポート番号を、サービスに接続するHTTP POSTコードに挿入することができる。APIレジストリ404に対しては、コンテナプラットフォームにおける任意の呼び出し側サービスが実行時にアクセスできるので、コールされているサービスのポート番号についてのIPアドレスが変化したとき、これらのサービスのうちのいずれのサービスも、アップデートまたはパッチは不要である。代わりに、APIレジストリ404は、サービスがコールされるたびに最新情報を提供することができる。いくつかの実施形態において、GetIPPort( )関数は、1時間に1度、1日に1度、1週間に1度など、APIレジストリ404をコールするだけで、サービスエンドポイントはプロダクション環境において頻繁に変わるものではないという仮定のもとでサービス114についてコンテナの外部で行われる関数コールの数を最小にすることができる。
図13は、いくつかの実施形態に係る、サービスコールのための入力データセットを完成させる追加データを配置できるクライアントライブラリ1302の実施形態を示す。クライアントライブラリ1302を用いた簡略化のために、クライアントライブラリ1302はサービス開発者に要求されるパラメータの数を最小にすることができる。サービスコールを行うために必要であろう追加データは、他のソースから取り出すことができ、したがって、パラメータリストから省略してもよい。代わりに、これらの追加パラメータは、クライアントライブラリ1302がこれらの他のソースから直接取り出してもよい。たとえば、新たなユーザの作成は、このユーザのユーザロールを指定することを含み得る。パラメータのうちの1つとしてユーザロールを提供することをサービス開発者に要求する代わりに、クライアントライブラリ1302は、他のいずれかのソースからユーザのロールを自動的に取り出すコード1304を含み得る。この例において、ユーザロールは、データベースから、コンテナプラットフォーム内の別のサービスから、または呼び出し側サービス内のユーザロールを格納する別のクラスから、取り出すことができる。これらの場合のうちのいずれの場合でも、コード1304は、自動的にユーザロールを取り出し、これを、サービスに送られるHTTP POSTコマンドのための入力データの一部としてパッケージングすることができる。
サービスに対する入力のためにデータを配置しフォーマットすることに加えて、クライアントライブラリ1302は、サービスから受けたデータをパースして返し、エラー条件を処理することができる。この例において、POSTコマンドはデータパケットをResult(結果)変数に返すことができる。しばしば、サービスは、呼び出し側サービスが必要とする情報よりも多くの情報を含むデータパケットを返すことができる。したがって、クライアントライブラリ1302は、Result変数におけるデータフィールドをパースし、データをResult変数から抽出し、ユーザクラスによって予想されるより使い易いフォーマットにフォーマットしパッケージングすることができる。この例において、コード1306は、Result変数からフィールドを抽出して使用することにより、API関数から返される新たなUserオブジェクトを作成することができる。GETコマンドを使用する別の例において、個々のAPI関数は、GETコマンドからのResult変数から異なるフィールドを抽出するUserクラスで生成することができる。たとえば、Userクラスは、GetFirstName(id)関数、GetLastName(id)関数、GetRole(id)関数などを提供することができる。これらの関数は各々、Result変数から異なるフィールドを返す間、非常によく似たコードを含み得る。
結果をパースすることに加えて、クライアントライブラリ1302はまた、サービスの使用に対応付けられたエラー条件を処理するコード1308を生成することができる。この例において、コード1308は、Result変数におけるステータス(status)フィールドをテストすることにより、POSTコマンドが成功したか否かを判断することができる。コマンドが成功していた場合、CreateUser( )関数は新たなUserオブジェクトを返すことができる。Postコマンドが失敗した場合、関数は、代わりにヌルオブジェクトを返すことおよび/またはサービス対するコールをリトライすることが可能である。
図14は、いくつかの実施形態に係る、サービスをコールするときにリトライを処理することができるクライアントライブラリ1402を示す。図13の例と同様に、クライアントライブラリ1402は、POST HTTPコールによってポピュレートされたResut変数におけるステータスを使用することにより、このコールが成功したか否かを判断する。その結果が不成功である間、クライアントライブラリ1402は、コールが成功するまでリトライを続けることができる。いくつかの実施形態は、カウンターまたはその他のメカニズムを使用することにより、リトライの数を制限するまたはリトライとリトライとの間に待ち時間を追加することができる。
上述のように、いくつかの実施形態はまた、API定義とともに一組のAPIプロパティをAPIレジストリに与えてもよい。図15Aは、いくつかの実施形態に係る、APIプロパティをAPIレジストリに与える方法を示す。この方法はまた、API定義のアップロードを受けることを含み得る(1501)。この方法はまた、APIプロパティのアップロードを受けることを含み得る(1503)。プロパティのアップロードはAPI定義のアップロードと同じ送信の一部であってもよい。いくつかの実施形態において、APIプロパティはAPI定義の一部であってもよい。いくつかの実施形態において、APIプロパティは、プロパティがAPIレジストリによって設定されねばならないことを示すためにチェックされる1つ以上のフラグまたは予め定められたデータフィールドであってもよい。いくつかの実施形態において、APIプロパティは、何らかの予め構築されたフォーマットに従う必要はないが、代わりに、認証、暗号化などのような以下で説明する特徴をAPIレジストリに実現させる命令コードで表すことができる。APIプロパティは、各サービスごとにAPI定義とともに格納することができる。
この方法はさらに、サービスとAPIとの間のAPIバインディングを作成することを含み得る(1505)。この動作は先に詳述したように実行されてもよい。加えて、この方法は、APIプロパティを用いて、サービスに対応付けられた1つ以上の動作を実行することを含み得る(1507)。APIプロパティは、サービスのライフサイクル中のさまざまなフェーズで使用されてもよい。一般的に、これは、サービスのデプロイメント中、サービスのクライアントライブラリを生成するとき、および/またはサービスをコールするときに、プロパティに対応付けられた関数をAPIプロパティを用いて実現することであると、説明することができる。これらの関数各々の例を以下でより詳細に説明する。
図15Aに示される具体的なステップが本発明の各種実施形態に係るAPIプロパティをAPIレジストリに与える特定の方法を提供することが理解されるはずである。代替実施形態に従いステップの他のシーケンスを実行することもできる。たとえば、本発明の代替実施形態は、概要を述べた上記ステップを異なる順序で実行し得る。加えて、図15Aに示される個々のステップは、個々のステップに適したさまざまなシーケンスで実行し得る複数のサブステップを含み得る。さらに、特定のアプリケーションに応じてその他のステップを追加または削除する場合もある。当業者は、多数の変形、修正、および代替形を認識するであろう。
図15Bは、いくつかの実施形態に係る、如何にしてサービスがAPIプロパティをAPIレジストリに与えることができるかについてのハードウェア/ソフトウェア図を示す。IDE102においてサービスを開発しているとき、サービス開発者は、API定義ファイル1502と1つ以上のプロパティ1504とをAPIレジストリ404に与えることができる。APIレジストリ404は、IDE102でもコンテナプラットフォームでも実行時にアクセスできるので、APIレジストリ404は、プロパティ1504を格納しこれらのプロパティを使用することにより、開発シナリオ中およびランタイムシナリオ中いずれにおいても、如何にしてサービスがデプロイされ、コールされ、および/またはクライアントライブラリを生成するために使用されるかに、影響を与えることができる。
図16は、いくつかの実施形態に係る、APIレジストリがプロパティを用いて高可用性のサービスをデプロイする場合のハードウェア/ソフトウェア図を示す。APIレジストリ404は、特定のサービスのAPI定義ファイル1505に加えて、サービスが高いレジリエンスまたは高可用性を有するようにデプロイされねばならないことを示すプロパティ1602を受けてもよい。このプロパティ1602を、サービスを高可用性を有するようにデプロイするためにAPIレジストリ404が実行する一組の命令として受けてもよい。この選択肢により、開発者は、このサービスについて「高可用性」を有するということが何を意味するかを定義することができる。たとえば、プロパティ1602は、APIレジストリ404に、サービスの複数のインスタンス602、604をコンテナプラットフォーム210にデプロイさせる命令を含み得る。APIレジストリ404は、これらの命令を実行することにより、自身で決定または判断を行う必要はなくなるが、代わりに、プロパティ1602の一部として与えられたデプロイメントコードを実行するだけでよい。
プロパティ1602を、高可用性のサービスをデプロイするためにAPIレジストリ404において既存の命令を実行するという選択肢をAPIレジストリ404に対して示す、フラグまたは設定として受けることもできる。この選択肢の場合、APIレジストリ404は、プロパティ1602として、実行すべき任意のコードを受ける必要はない。むしろ、APIレジストリ404は、高可用性プロパティ1602を認識し、APIレジストリ404で保持されているコードを実行することにより、サービスの複数のインスタンス602、604をデプロイすることができる。これにより、APIレジストリ404は、APIレジストリ404に登録された任意のサービスのデプロイメントについて、「高可用性」であるということは何を意味するのかを定義することができる。
APIレジストリ404はコンテナプラットフォーム210のランタイム環境に接続されているので、APIレジストリ404は、コンテナプラットフォーム210とやり取りすることにより、サービスのランタイム可用性を決定するインスタンス602、604をデプロイすることができる。なお、図16に示されるサービスの2つのインスタンス602、604は一例として与えられているにすぎず、限定を意図している訳ではない。高可用性サービスは、コンテナプラットフォームにデプロイされているサービスの3つ以上の冗長インスタンスを含み得る。
いくつかの実施形態は、デフォルトとして実行することが可能なコードをAPIレジストリ404において含み得る。高可用性が望ましいという簡単な表示のみをプロパティ1602が含んでいる場合、APIレジストリ404は自身のコードを実行することができる。サービスをデプロイするためのデプロイメントコードをプロパティ1602が含んでいる場合、APIレジストリ404は代わりにプロパティ1602のコードを実行することができる。いくつかの場合において、プロパティ1602は、高可用性のサービスをデプロイするのに必要なコードの一部のみを含み得る。APIレジストリ404は、プロパティ1602から与えられたコードの一部を実行し、次に、プロパティ1602から与えられない任意のコードをAPIレジストリ404におけるコードを用いてを実行することができる。これにより、開発者らは、APIレジストリ404において高可用性等のプロパティを如何にして実行するかについての既存の定義を上書きしつつも、登録されたサービスによって使用されることができるプロパティを実行するための統一された定義をAPIレジストリ404が提供できるようにすることができる。
いくつかの実施形態において、高可用性プロパティはまた、サービスの複数のインスタンス602、604に要求を分散させるロードバランシングサービス606を、コンテナプラットフォーム210にデプロイさせてもよい。ロードバランシングサービス606のエンドポイントを、APIレジストリ404に登録し、他のサービスが利用できるようにすることができる。これに代えてまたはこれに加えて、サービス602、604の複数のインスタンス各々をサービスエンドポイントとしてAPIレジストリ404に登録してもよい。
以下で説明する各々の例において、図16に関して説明したものと同じ原理を適用することができる。たとえば、下記のいずれかのプロパティにコードが伴っていてもよく、このコードをAPIレジストリ404が受け、そうでなければAPIレジストリ404が実行するであろうコードを無効にするために使用することができる。本開示よりも前においては、プロパティを実行する一方で同時にサービス開発者が必要に応じてこれらのプロパティを無効にできるようにするための統一されたデフォルトを作成する方法は存在していなかった。よって、APIレジストリ404は、デフォルトとしてAPIレジストリ404でコードを実行できるようにしつつ、開発者から受けたプロパティ1602によってこのコードを無効にすることもできるようにすることで、技術的課題を克服する。
図17は、いくつかの実施形態に係る、APIレジストリを通じてエンドツーエンド暗号化を実施するプロパティのハードウェア/ソフトウェア図を示す。APIレジストリ404は、API定義ファイル1505とともに、サービス1708をコールするためにエンドツーエンド暗号化を生じさせるコードを示すまたは含むプロパティ1704を受けてもよい。開発中、サービス1708は、サービス1708が受けたパケットを復号しサービス1708が返すパケットを暗号化する、自身の復号/暗号化コード1710を含むことができる。本開示よりも前においては、サービス1708のユーザがサービス1708と互換性のある暗号化を提供する必要があることを示す仕様書を、開発者が提供しなければならなかった。本実施形態は、呼び出し側サービス1706においてクライアントライブラリが如何にして生成されるかをサービス1708が規定できるようにしてサービス1708の暗号化との互換性を保証することにより、技術的課題を解決する。
いくつかの実施形態において、サービス1708の開発者は、暗号化/復号コード1710をサービス1708に含める必要はない。代わりに、サービス1708のエンドツーエンド暗号化を実施するよう、プロパティ1704がAPIレジストリ404に命令するだけでよい。サービス1708がコンテナプラットフォーム210にデプロイされるとき、APIレジストリ404は、デプロイ時にサービス1708に暗号化/復号コード1710が挿入されるようにすることができる。これにより、開発者が、プロパティ1704に基づいて異なる暗号化制度からの選択を行うことができる、および/または、APIレジストリ404が、デフォルトとして好ましい暗号化制度を選択することができる。
エンドツーエンド暗号化には、サービス1708がデプロイされるときまたはその開発中に暗号化/復号コード1710をサービス1708に挿入することが必要なだけでなく、互換性のある暗号化/復号コードを呼び出し側サービス1706が含むことも必要である。先に述べたように、呼び出し側サービス1706がサービス1708を使用する必要があるとき、APIレジストリ404は、簡単で効率的なやり方でサービス1708とやり取りするのに必要なコードを完全に実現する1つ以上のクライアントライブラリ1702を生成することができる。このクライアントライブラリ1702が生成されるとき、APIレジストリ404は、プロパティ1704を分析することにより、サービス1708が使用する暗号化制度を判断することができる。次に、このプロパティ1704に基づいて、APIレジストリ404は、呼び出し側サービス1706のために互換性のある暗号化/復号コードをクライアントライブラリ1702に追加することができる。よって、呼び出し側サービス1706が要求をサービス1708に送るとき、情報は呼び出し側サービス1706で暗号化されサービス1708がこの情報を受けたときに復号されてもよい。同様に、サービス1708は、呼び出し側サービス1706に送られる前のレスポンスを暗号化することができ、そうすると、呼び出し側サービス1706は、このレスポンスを、クライアントライブラリ1702の外部に送る前に復号することができる。これにより、この暗号化プロセス全体を呼び出し側サービス1706の開発者にとって完全にトランスペアレントなものにすることができる。サービス1706をコールするときに互換性のある暗号化/復号制度を実現することが要求されるのではなく、プロパティ1704は、APIレジストリ404が互換性のある暗号化/復号コードをクライアントライブラリ1702に既に生成していることを保証し、エンドツーエンド暗号化プロパティを実現することができる。
図18は、いくつかの実施形態に係る、APIレジストリがサービス1808の使用ロギングを実現するためのプロパティ1804を示す。本開示よりも前においては、サービスに対する要求の頻度、ソース、成功率などをモニタリングしロギングするためには、サービス自身がこの情報をロギングする必要があった。これに代わるものとしては、コンテナ環境がサービスをモニタリングしその使用情報をロギングする必要があった。サービス1808自体において情報をロギングすることは、極めて非効率であり、このサービスが扱うすべての要求についてのスループットを減速させる。同様に、特定のサービスに対して行われるコールすべてをモニタリングしロギングすることをコンテナプラットフォームに求めるときのオーバーヘッドも、コンテナサービスのスケジューリングおよびオーケストレーションに対する極めて大きなオーバーヘッドを表している。本実施形態は、この技術的課題を、サービス1808をコールするサービスのためのクライアントライブラリにコードを直接挿入することによって解決する。これにより、メモリの使用またはCPUの使用という点でサービス1808のパフォーマンスに全く影響を与えることなく、サービス1808の使用をロギングしモニタリングすることができる。
APIレジストリ404は、API定義ファイル1505に加えて、使用ロギング1804を実現するコードを示すまたは含むプロパティ1804を受けることができる。呼び出し側サービス1806の開発者が要求をサービス1808に出すことを所望するとき、APIレジストリ404は、サービス1808に関するアクティビティをロギングするためのコードを含むクライアントライブラリ1802を自動的に生成することができる。先に述べたように、このコードは、APIレジストリ404が管理し実行するデフォルトコードに基づいて生成することができる、または、プロパティ1804とともに受けてAPIレジストリ404が実行するコードによって生成することができる。
クライアントライブラリ1802における、アクティビティをロギングするためのコードは、サービス1808がコールされるたびにインクリメントされるカウンターと、サービス1808がコールされたときにアクティビティをログファイルにロギングさせる関数と、サービス1808に送られた要求およびサービス1808から受けたレスポンスの特徴をモニタリングし記録するその他の関数とを、含み得る。特定の実施形態に応じて、このコードは、サービス1808に対して行われる要求に対応付けられた多数の異なる種類の特徴をモニタリングしてもよい。たとえば、いくつかの実施形態は、サービス1808に対して行われたコールの総数をロギングしてもよい。いくつかの実施形態は、サービス1808から受けたレスポンスの成功率をロギングしてもよい。いくつかの実施形態は、サービス1808に対する要求において送られたデータのタイプをロギングしてもよい。いくつかの実施形態は、サービス1808がコールされた時刻またはサービス1808がコールされたときについてのその他の外部情報をロギングしてもよい。いくつかの実施形態は、サービス1808をデバッグするために使用することが可能なサービス1808への/からの入力および出力をロギングしてもよい。いくつかの実施形態は、限定されることなく、これらの特徴のうちのいずれかまたはすべてを、任意の組み合わせでロギングしてもよい。
図19は、いくつかの実施形態に係る、サービス1908の認証プロトコルを実施することが可能なプロパティ1904のハードウェア/ソフトウェア図を示す。いくつかのサービスは、要求に応答する前に、ユーザアイデンティティが認証されることおよびユーザがサービスの使用を認可されることを必要とする場合がある。本開示よりも前においては、認証および認可の手続がサービス1908自体で行われるという技術的課題があった。これは、サービス1908が受けるすべてのコールについてメモリの使用およびCPUの使用という点でオーバーヘッドを増加させ、レスポンスにおけるサービスのレイテンシを大きくした。その結果、スループットが減少し、所定の期間中にサービス1908が処理できる要求の数が制限された。これらの実施形態は、この技術的課題を、認証/認可コードを、APIレジストリ1404が自動的に生成するクライアントライブラリ1902に移動させることによって解決する。
呼び出し側サービス1906がサービス1908の使用を所望するとき、APIレジストリ404は、認可および/認証を実行するためのコードを含むクライアントライブラリ1902を生成することができる。いくつかの実施形態において、これは、ユーザアイデンティティを特別に検証するおよび/またはユーザがサービス1908の使用を認可されるか否かを判断する外部認証/認可サービス1920にコンタクトすることを含み得る。外部認証/認可サービス1920は、アクセスマネージャ、ライトウェイトディレクトリアクセスプロトコル(Lightweight Directory Access Protocol)(LDAP)マネージャ、アクセスコントロールリスト(Access Control List)(ACL)、ネットワーク認証プロトコルマネージャなどを、含み得る。そうすると、クライアントライブラリ1902内のコードは、認証/認可手続が成功したときにコールをサービス1908に送ることができる。
認証/認可の実施をAPIレジストリ404およびクライアントライブラリ1902にオフロードすることにより、このコードをサービス1908から完全に除去することができる。外部認証/認可サービス1920とのやり取りには多大な遅延が伴うことが頻繁に生じ得るので、この遅延をサービス1908から取り除くことによってスループットを高めることができる。加えて、認証/認可の実施をサービス1908にハードコーディングするのではなく、サービス1908の開発者が、その代わりにAPIレジストリ404に送られたプロパティ1904を用いて予め定められた認証/認可制度を選択するだけでよい。APIレジストリ404は、認可/認証の予め定められたリストを、クライアントライブラリ1902の添付のインプリメンテーションコードとともに管理することができる。これはまた、認可および/または認証されることができないサービス1908に対して呼び出し側サービス1906が要求を送ることを防止する。代わりに、認証および/または認可ルーチンが失敗した場合はクライアントライブラリ1902でコールを中止してもよい。これにより、認証および/または認可された要求のみをサービス1908が受けることを保証する。
APIレジストリ404が提供するもう1つの技術的改善は、登録されたいずれかのサービスのコードのうちのいずれかを変更することを要求されることなく、プロパティ1904が提供する機能のいずれかをアップグレードする機能である。たとえば、認証/認可コードは、APIレジストリ1404が生成したクライアントライブラリ1902にオフロードされているので、クライアントライブラリ1902をアップデートすることにより、認証/認可制度を変更することが可能である。呼び出し側サービス1906またはサービス1908におけるコードのうちのいずれもモニタリングする必要はない。コードは1つの場所でしか変更されないので、これは、そうでなければすべての個別サービスに送られる分散型パッチを伴うコード統合エラーの確率を大幅に減じる。
図20は、いくつかの実施形態に係る、サービスのランタイムインスタンス化を可能にするプロパティ2004のハードウェア/ソフトウェア図を示す。いくつかのサービスは、滅多に使用されない、または所定の期間中にしか使用されない場合がある。したがって、サービスをコンテナプラットフォームにデプロイすることが、常に、即時利用可能なサービスのインスタンスを実際にコンテナにインスタンス化することにつながる必要はない。仮想マシンとは異なり、コンテナは非常に素早くインスタンス化し作動させることが可能である。そのため、サービス開発者は、コールされたときにのみサービスをインスタンス化させることを所望する場合がある。サービス開発者はまた、所定の期間内においてのみサービスをインスタンス化させることを所望する場合がある。同じく、サービス開発者は、サービスインスタンスは所定の休止期間が過ぎると削除されねばならないと明示する場合がある。
APIレジストリ404は、API定義ファイル1505を受けることに加えて、ランタイムインスタンス化またはその他のインスタンス化パラメータを指定するプロパティ2004を受けることができる。たとえば、このプロパティは、サービス2008をデプロイ後にインスタンス化すべき1つ以上の期間の指定を含み得る。別の例において、このプロパティは、サービス2008はオンデマンドでのみインスタンス化されねばならないという表示を含み得る。別の例において、このプロパティは、タイムアウト期間を指定してもよく、インスタンス化されたサービス2008はこのタイムアウト期間後にコンテナプラットフォームから削除されねばならない。
呼び出し側サービス2006がサービス2008の使用を所望するとき、APIレジストリ404は、サービス2008のランタイムインスタンス化を処理するコードをクライアントライブラリ2002に生成することができる。たとえば、クライアントライブラリ2002のCreateInstance( )関数コールは、APIレジストリ404に対するコールを作成することができる。そうすると、APIレジストリはコンテナプラットフォーム210とやり取りすることにより、サービス2008のオペレーティングインスタンスを利用できるか否かを判断することができる。利用できない場合、APIレジストリ404は、コンテナプラットフォーム2010のコンテナにサービス2008のインスタンスをインスタンス化するようコンテナプラットフォーム210に命令することができる。そうすると、コンテナプラットフォーム210は、エンドポイント(たとえばIPアドレスおよびポート番号)をAPIレジストリ404に返すことができる。次に、APIレジストリ404は、エンドポイントと、クライアントライブラリ2002に作成されたAPI関数コールとの間のバインディングを作成することができる。次に、APIレジストリ404は、このエンドポイントをクライアントライブラリ2002に返すことができ、これを用いることにより、呼び出し側サービス2006と新たにインスタンス化されたサービス2008との間の直接接続を作成することができる。
所定の期間中のみインスタンス化されるべきサービスの場合、APIレジストリ404は、特定のサービスのインスタンス化および削除時間のテーブルを構築してもよい。格納されたこれらのインスタンス化/削除時間に基づいて、APIレジストリ404は、サービス2008のインスタンスをインスタンス化または削除するようコンテナプラットフォーム210に命令することができる。APIレジストリ404は、これらの所定期間中にインスタンス化すべきインスタンスの数を指定することもできる。たとえば、プロパティ2004は、午後5時から午後10時まで、サービス2008の少なくとも10のインスタンスがコンテナプラットフォーム210上でアクティブであることを明示してもよい。この期間になると、APIレジストリ404は、追加のインスタンスを作成するようコンテナプラットフォーム210に命令することができる。
図21は、いくつかの実施形態に係る、サービス2108のレート制限関数を実現するプロパティ2104のハードウェア/ソフトウェア図を示す。いくつかのサービスは、要求を受けるレートを制限する必要がある場合がある。その他のサービスは、特定の送信者または特定のタイプのサービスからの要求を制限する必要がない場合がある。本開示よりも前においては、この関数は、サービス自体が、各要求のソースを判断し、このソースをホワイトリスト/ブラックリストと比較し、これらの要求をサービスするレートを絞ることにより、実行しなければならなかった。上記例のうちのほとんどと同様、このオーバーヘッドをサービス自体に課すと、サービスが使用するメモリおよびCPUパワーの量が増し、サービスのスループットが制限される。これらの実施形態は、この技術的課題を、APIレジストリが生成したクライアントライブラリにレート制限コードを自動的に生成することによって解決する。これにより、サービス2108がその関係するオーバーヘッドすべてを伴ってこの機能を実現しなくても、サービスはプロパティ2104によってレート制限を指定することができる。
呼び出し側サービス2106が要求をサービス2108に送ることを所望するとき、APIレジストリ404は、レート制限コードを含むクライアントライブラリ2102を自動的に生成することができる。クライアントライブラリ2102が生成されると、APIレジストリ404は、特定のサービス2106のレート制限が必要か否かを判断することができる。必要でなければ、クライアントライブラリ2102を通常通り生成することができる。APIレジストリ404が、呼び出し側サービス2106をレート制限すべきであると判断した場合(たとえばホワイトリスト/ブラックリストとの比較によって)、APIレジストリ404は、遅延を追加する、カウンターを追加する、および/またはそうでなければレート制限関数を実現するコードをクライアントライブラリ2102に挿入することにより、所定のレートに従って任意の所定期間において呼び出し側サービス2106が所定の最大数の要求を行うことを保証することができる。このコードは、その間はレート制限関数がアクティブである時間ウィンドウを実現してもよい。これにより、サービス2108は、高トラフィック期間中レート制限を自動的に実施することができる。
先に述べたように、システムは、IDE102と、プロダクション/デプロイメント環境104とを含み得る。プロダクション/デプロイメント環境104は、クラウドコンピューティングプラットフォーム202を含み得る。アプリケーションおよびサービスは、IDE102において開発し、クラウドコンピューティングプラットフォーム202にデプロイすることができる。典型的に、IDE102はデバッガ110を含む。デバッガ110は、エラーについてテストしサービスまたはアプリケーションの開発中にこれらのサービスまたはアプリケーションのバグの場所を特定するように特別に設計された、ソフトウェアプログラムである。デバッガは、命令セットシミュレータを使用、または、基礎となるハードウェア/プロセッサ上でプログラムを直接実行することにより、プログラム命令の実行に対して高レベルの制御を実現し得るものである。最も重要なことは、デバッガにより、開発者は、ブレークポイントによって表される特定の条件に応じてプログラムの実行を中止または停止させることができることである。プログラム実行の停止中、開発者は、変数値、プログラム実行フロー、および/またはアプリケーションもしくはサービスの状態のその他の特徴を調べることができる。
デバッガ110は特にIDE102における開発プロセス中において有用であるが、典型的には、サービスとともにクラウドコンピューティングプラットフォーム202にデプロイされるものではない。サービスのデバッグバージョンをデプロイすると、クラウドコンピューティングプラットフォーム202の効率的な使用を妨げる技術的問題が発生することになる。たとえば、本明細書では「デバッグビルド(debug build)」と呼ぶ、デバッガと互換性があるサービスのバージョンは典型的に、デバッガ110との互換性に必要であるが通常の実行には不要な追加命令および不必要なオーバーヘッドを含む。これらの追加命令/オーバーヘッドが原因で、サービスのデバッグビルドの実行に、より長い時間を要するようになり、そのために、レイテンシが増加し、スループットが低減し、クラウドコンピューティングプラットフォーム202のより多くの処理リソースを使用することになる。加えて、デバッグビルドは、デバッガ110ソフトウェアとともにデプロイする必要がある。サービスのすべてのインスタンスとともにデバッガ110のバージョンをデプロイすると、サービスの各インスタンスについて法外な量の追加メモリ使用が加わることになり、そうすると、クラウドコンピューティングプラットフォーム202の利用できるメモリリソースが減少する可能性がある。
デバッガ110はプロダクション/デプロイメント環境104にデプロイされないので、デプロイメント後に発覚するトラブルシューティングエラーが特に難題である。本開示よりも前において、デバッガ110を用いるサービスのデバッグビルドは、ダミーデータまたは予め構成された入力を用いてIDEで実行されて、プロダクション/デプロイメント環境104でサービスが受ける要求トラフィックの実世界(リアルワールド)のフローを試行しシミュレートする。しかしながら、これにより、予想されるサービスの動作を妨害することなくエラーを再現しこれらのエラーのフィックス(fix)/パッチ(patch)が適切に機能するか否かを判断するのに最適であろうリアルタイムのライブデータを、サービスは使用できない。
本明細書に記載の実施形態は、サービスのデバッグビルドをデバッガとともにプロダクション/デプロイメント環境104にデプロイすることによりリアルタイムのライブデータを実際の要求トラフィックから受けることができるように、クラウドコンピューティングプラットフォーム202に変更を加える。いくつかの実施形態において、デバッグクライアントは、ロードバランサを通してルーティングされサービスメッシュによってサービスのデバッグインスタンスに導かれる特定のデバッグ要求を送信することができる。これにより、他のクライアントからの要求を、引続きサービスのノーマルインスタンスに直接ルーティングしつつ、同じロードバランサおよびサービスメッシュを通して送ることができる。いくつかの実施形態において、サービスメッシュは、要求をいずれかのクライアントから受け、サービスのデバッグインスタンスに送られるこの要求をクローニングすることができる。これらの実施形態により、サービスのデバッグインスタンスは、サービスのノーマルインスタンスとともに、プロダクション/デプロイメント環境104のクラウドコンピューティングプラットフォーム202において動作することができる。これらの実施形態はまた、上記技術的問題を、他のサービスインスタンスのノーマル動作を妨害することなく、リアルタイムのライブ要求をサービスのデバッグインスタンスにルーティングすることによって解決する。
図22は、いくつかの実施形態に係る、サービス要求を受けるためのクラウドコンピューティングプラットフォーム202の一部のブロック図を示す。先に述べたように、いくつかの実施形態は、クラウドコンピューティングプラットフォーム202内にサービスを如何にしてデプロイし動作させるかを管理できるAPIレジストリ404を含み得る。APIレジストリ404は、サービスメッシュ2210に通信可能に結合することができる。サービスメッシュ2210は、サービスインスタンス間の通信をフレキシブルで信頼性が高く高速なものにすることができる、マイクロサービスまたはサービス指向環境のためのコンフィギュラブル(configurable)インフラストラクチャである。いくつかの実施形態において、サービスメッシュ2210は、サービスディスカバリ、ロードバランシング、暗号化、認証/認可、およびその他の機能を提供し得る。クラウドコンピューティングプラットフォーム202において、より多くのコンテナがインフラストラクチャに追加されると、サービスメッシュ2210は、クライアントからの要求を各サービスの特定のインスタンスにルーティングする。なお、APIレジストリ404はすべての実施形態において必要な訳ではない。いくつかの実施形態において、以下で説明する機能は、スケジューラによって、またはコンテナオーケストレーションレイヤの他のコンポーネントによって実行されてもよい。
いくつかの実施形態において、サービスメッシュ2210は、自身のロードバランシング動作を提供し得る。明確にするために、図22は専ら、サービスメッシュ2210の一部または別のコンポーネントであってもよい、ロードバランサ2208を示している。ロードバランサ2208を用いることにより、複数のクライアント2202、2204、2206からの要求を、異なるサービスインスタンスにルーティングすることができる。異なるサービスインスタンスは、異なる動作環境、異なるコンテナノード、および/または異なるハードウェアデバイスに存在し得る。加えて、ロードバランサ2212が特定のサービスに対応付けられてもよい。1つのサービスは、要求をサービスするのに利用できる複数のサービスインスタンス2214、2216、2218を有し得る。ロードバランサ2208は、サービスメッシュから要求を受け、サービスインスタンス2214、2216、2218間でサービス要求が均等に分配されるよう、要求トラフィックを特定のサービスインスタンス2214、2216、2218にルーティングすることができる。
図22の例において、サービスインスタンス2214、2216、2218の各々は、サービスのプロダクションバージョンとしてクラウドコンピューティングプラットフォーム202にデプロイされている。これらを、本明細書では「プロダクションサービス」または「ノーマルサービス」と呼ぶことがあり、サービスインスタンス2214、2216、2218のコンテナ/ポッドがサービスのデバッグビルドまたはデバッガを含んでいないという点で、サービスのデバッグインスタンスから区別することができる。代わりに、これらの「ノーマル」サービスインスタンス2214、2216、2218は、デバッグ動作に伴うオーバーヘッドなしで素早くかつ効率的に要求をサービスできるようにするストリームラインフォーマットでコンパイルおよびデプロイされている。
図23は、いくつかの実施形態に係る、ポッド2300にカプセル化されたサービスのデバッグビルドを示す。ポッド2300は図3に示されるポッドと同様である。たとえば、サービス全体はエンドポイント318を通じて利用することができ、サービスは複数のマイクロサービスまたはサービス320、322、324、326を用いて構成される。これらのサービスは、複数のコンテナ310、312にパッケージングされてもよく、ストレージボリューム、ルックアップテーブル、データベース、またはその他のリソース等の共通リソース308を利用してもよい。
しかしながら、図3のポッド304とは異なり、ポッド2300にカプセル化されたこのサービスのデバッグビルドは、追加のデバッグユーティリティを含む。たとえば、ポッド2300は、デバッグデーモン(debug daemon)2304を含む追加のコンテナ2302を含む。一般的に、デーモンは、インタラクティブユーザの直接の制御下にあるのではなく、バックグランドプロセスとして実行されるコンピュータプログラムである。この特定のコンテナ環境において、デバッグデーモン2304は、サービス自体の制御の外側で実行されサービスインスタンスとのインターフェイスの役割を果たすように構成される、バックグラウンドプロセスを含む。コンテナ2302は、デバッグデーモンに加えて、アドミニストレータがポッド2300にログインし動作しながらデバッグ動作を実行できるようにするデバッグログインサービス2308を含み得る。コンテナ2302はまた、サービスがリアルタイムのライブデータ要求を受けている間にメモリ使用量、プロセッサ使用量、帯域幅使用量、およびその他のコンピューティング特徴をトラッキングするユーティリティ等の、追加のデバッグユーティリティ2306を含み得る。
ポッド2300は、コンテナ2302に加えて、サービス自体の専用デバッグビルドを含み得る。たとえば、サービス320、322、324、326のうちの1つ以上は、デバッガプロセス2310がサービスのデバッグビルドとともに動作するためのインターフェイスをサービス320、322、324、326のソースコードが含むように、デバッグコンフィギュレーションを用いてビルドまたはコンパイルされてもよい。よって、サービス320、322、324、326のうちの1つ以上は、デバッガ2310とのやり取りに基づいて変数値を提供し実行を中断することができる。サービス自体の動作は、図22のサービス2214、2216、2218の他のノーマルインスタンスのクローンとみなすことができる。よって、図23のポッド2300に示されているサービスのデバッグビルドを用いることにより、図22のサービス2214、2216、2218のノーマルインスタンスを確実にデバッグすることができる。
図24は、いくつかの実施形態に係る、サービスのデバッグビルドのための代替ポッド2400を示す。ポッド2400は図3のポッド306と同様である。具体的には、ポッド2400は、エンドポイント316を通じて与えられたサービス328を有する1つのコンテナ314を含む。しかしながら、コンテナ314に、サービス全体のデバッグビルドを提供するのに必要なデバッグユーティリティがロードされてもよい。具体的には、デバッグコンフィギュレーションを用いてサービス328をコンパイルし、コンテナ314にロードすることができる。加えて、デバックデーモン2304、デバッグログイン2308、デバッガ2310、および/または追加のデバッグユーティリティ2306が、限定されることなく任意の組み合わせでコンテナ314に含まれていてもよい。これらのデバッグユーティリティのうちのいずれも特定の実施形態に必要ではなく、したがっていくつかの実施形態は上記デバッグユーティリティのうちのいずれかを省略し得ることが理解されるであろう。
以下の説明において、図23および図24について先に述べたサービスのデバッグインスタンスは、動作中にプロダクション/デプロイメント環境104においてインスタンス化することができる。たとえば、ノーマルサービスインスタンス2214、2216、2218がクラウドコンピューティングプラットフォーム202においてインスタンス化され作動した後で、サービスのデバッグインスタンスもクラウドコンピューティングプラットフォーム202においてインスタンス化しロードしてもよい。サービスのデバッグインスタンスは、ノーマルサービスインスタンス2214、2216、2218と同様のやり方で通常のおよび/または特化された要求トラフィックを受けてもよい。これにより、ノーマルサービスインスタンス2214、2216、2218の通常動作を妨害することなく、実際のトランザクションをプロダクション環境においてリアルタイムでデバッグすることができる。
図25は、いくつかの実施形態に係る、サービス2502のデバッグインスタンスをインスタンス化するためのシステムのブロック図を示す。クラウドコンピューティングプラットフォーム202は、通常のクライアント2204、2206からノーマル要求を受けることができる。これらのノーマル要求は、ロードバランサ2208およびサービスメッシュ2210を介して特定のサービスにルーティングすることができる。このサービスは複数のインスタンス2214、2216、2218を有していてもよく、このサービスのためのロードバランサ2212は、各サービスインスタンスにおける負荷の分散を取るように要求をルーティングすることができる。
通常のクライアント2204、2206からノーマル要求を受けることに加えて、いくつかの実施形態はまた、デバッグクライアント2504からデバッグ要求2506を受けてもよい。デバッグクライアント2504は、通常のクライアント2204、2206と同一であってもよく、したがって、デスクトップコンピュータ、ラップトップコンピュータ、ワークステーション、サーバ、モバイルコンピューティングデバイス、スマートフォン、PDA、タブレットコンピュータ、ラップトップコンピュータ、スマートウォッチなどを含み得る。しかしながら、デバッグクライアント2504は、クラウドコンピューティングプラットフォーム202にデバッグメッセージを与えるクライアントデバイスとして特別に特定されてもよい。デバッグ要求2506は、通常のクライアント2204、2206から送信されるノーマル要求と同一であってもよい。しかしながら、デバッグ要求2506は、サービス2214、2216、2218のノーマルインスタンスではなくサービスのデバッグインスタンスに進むようデバッグクライアント2504から特別に与えられてもよい。
サービスメッシュ2210は、デバッグ要求2506を受けたときに、サービスのデバッグインスタンスが現在コンテナプラットフォーム210で動作しているか否かを判断することができる。コンテナプラットフォーム210で現在動作しているサービスのデバッグインスタンスがない場合、サービスメッシュ2210は、APIレジストリ404にメッセージを送って代わりに生成することができ、APIレジストリ404を使用しない実施形態では、サービスメッシュ2210は、クラウドコンピューティングプラットフォーム202のスケジューラへのメッセージを開始することにより、サービスのデバッグインスタンスを生成することができる。
先に述べたように、APIレジストリ404へのサービスの登録は、サービスのAPI定義ファイル1505を提供することによって実現できる。API定義ファイル1505は、サービスが如何にしてデプロイされるべきか、および/または呼び出し側サービスのクライアントライブラリが如何にして生成されるべきかを特徴付ける1つ以上プロパティを伴うこともできる。この場合、1つ以上のプロパティは動的デバッグプロパティ2510を含み得る。この動的デバッグプロパティは、APIレジストリ404に対し、サービスのデバッグインスタンスは、デバッグ要求2506がサービスメッシュ2210によって認識または特定されたときにオンデマンドで生成されるべきであることを示す。サービス2214、2216、2218のノーマルインスタンスは、動的デバッグプロパティ2510の影響を受けることなくデプロイすることができる。デバッグ要求2506を受ける前は、コンテナプラットフォーム210上でサービスのデバッグインスタンスをインスタンス化または動作させる必要はない。
サービス2214、2216、2218のノーマルインスタンスのデプロイ後に、APIレジストリ404は、デバッグ要求2506を受けたことに応じて、サービス2502のデバッグインスタンスをクラウドコンピューティングプラットフォーム202にデプロイさせることができる。デバッグインスタンス2502は、図24に示されるようにシングルコンテナインスタンスとすることができる、または、図23に示されるようにマルチコンテナインスタンスであってもよい。いずれの実施形態においても、デバッグインスタンスは、サービスのデバッグビルド、デバッガ、デバッグログイン、デバッグデーモン、および/またはその他任意のデバッグユーティリティを、限定されることなく任意の組み合わせで含み得る。
クラウドコンピューティングプラットフォーム202にデプロイされるいずれのサービスとも同様に、サービス2502のデバッグインスタンスをAPIレジストリ404に登録することができる。これは、エンドポイント(たとえばIPアドレスおよびポート番号)をAPIレジストリ404に与えることを含み得る。そうすると、APIレジストリ404は、先に述べたようにサービス2502のデバッグインスタンスをコールするために使用できる一組のAPI関数を提供することができる。これに代えてまたはこれに加えて、サービス2502のデバッグインスタンスは、自身のAPI定義ファイルまたはプロパティをAPIレジストリ404に提供する必要はない。なぜなら、APIレジストリ404はサービス2502のデバッグインスタンスを既にデプロイしているからである。代わりに、APIレジストリ404は、エンドポイントをサービスメッシュ2210に与えてもよい。そうすると、サービスメッシュ2210は、エンドポイントを用いることにより、デバッグメッセージ2506をサービス2502のデバッグインスタンスにルーティングすることができる。このエンドポイントは公開される必要はない。なぜなら、デバッグインスタンスに何らかのメッセージを送る必要があるのはサービスメッシュ2210のみだからである。しかしながら、いくつかの実施形態は、ランタイム中にデバッグ情報にアクセスする他のサービスがエンドポイントを利用できるようにしてもよい。
図26は、いくつかの実施形態に係る、デバッグ要求をサービス2502のデバッグインスタンスにルーティングするコンテナプラットフォーム210のブロック図を示す。サービスメッシュ2210は、デバッグ要求2506を受けたときに、デバッグ要求2506を特定することができる。デバッグ要求2506は、複数の異なるやり方で、通常のクライアント2204、2206からのノーマル要求と区別することができる。たとえば、サービスメッシュ2210は、デバッグ要求2506を、送信者、すなわちデバッグクライアント2504によって特定することができる。サービスメッシュ2210は、デバッグクライアント2504のアドレスを認識した場合、この要求をデバッグ要求2506として指定することができる。これにより、サービスメッシュ2210はデバッグ要求をそのソースによって特定することができる。
いくつかの実施形態において、サービスメッシュ2210は、デバッグ要求2506に埋め込まれた何らかの情報を用いてデバッグ要求2506を特定することができる。たとえば、デバッグ要求2506は、デバッグ要求2506をデバッグ要求として特定する、固有ヘッダ情報または1つ以上のフラグ設定をデバッグ要求2506の中に有していてもよい。別の例において、デバッグ要求2506は、デバッグ要求だけが使用する予め定められた値を含むペイロードをこの要求の中に含んでいてもよい。
サービスメッシュは、デバッグ要求2506を特定したときに、デバッグ要求のノーマルルーティングを変更することができる。ノーマル要求はロードバランサ2212および/またはサービス2214、2216、2218のノーマルインスタンスに送ることができるのに対し、デバッグ要求2506は、サービス2502のデバッグインスタンスに特別にルーティングすることができる。たとえば、図25のデバッグ要求2506は、先ずサービス2502のデバッグインスタンスのインスタンス化をトリガするために使用することができる。サービスメッシュ2210は、サービス2502のデバッグインスタンスが動作可能であるという通知をAPIレジストリ404から受けると、次にデバッグ要求2506をサービス2502のデバッグインスタンスにルーティングすることができる。デバッグクライアント2504から、またはデバッグクライアントとして指定された他のクライアントから、未来のデバッグ要求を受けたとき、サービスメッシュ2210は、これらの要求もサービス2502のデバッグインスタンスにルーティングすることができる。このように、要求は、APIレジストリ404がさらに参加することなく、ルーティングされてもよい。なぜなら、サービス2502のデバッグインスタンスは既に動作可能であるからである。
いくつかの実施形態において、サービス2502のデバッグインスタンスは、予め定められた時間制限の間インスタンス化されたままでもよい。たとえば、サービス2502のデバッグインスタンスはデフォルト時間制限(たとえば24時間)を含み得る。この時間制限後に、APIレジストリ404および/またはスケジューラは、サービス2502のデバッグインスタンスを削除することができる。いくつかの実施形態において、動的デバッグプロパティ2510も、そのサービスに合わせて特別に調整された期間を指定することができる。たとえば、サービス開発者は、特定のサービスにとって1週間がより適切なデバッグ期間であると判断してもよく、そうすると、7日という期間を、そうでなければAPIレジストリ404によって適用される任意のデフォルト期間をオーバライドする動的デバッグプロパティ2510の一部として、与えることができる。いくつかの実施形態において、この時間制限は、インスタンス化で開始されるよう、絶対的なものであってもよい。いくつかの実施形態において、時間制限は、サービス2502のデバッグインスタンスが新たなデバッグ要求2506を受けるたびにリセットされるよう、相対的なものであってもよい。
図27は、いくつかの実施形態に係る、要求をクローニングするクラウドコンピューティングプラットフォーム202のブロック図を示す。上記実施形態とは異なり、これらの実施形態は、デバッグ要求をサービスのデバッグインスタンスに与えるための特別な要求ソースを必要としない。代わりに、サービスメッシュ210は、通常クライアント2202、2204、2206からノーマル要求を受けることができる。特別なデバッグメッセージを、ライブデータとともにリアルタイムでサービスのデバッグインスタンスにルーティングする代わりに、これらの実施形態は、サービス2214、2216、2218のノーマルインスタンスのノーマル動作を混乱させることなく、ライブデータそのものを使用し、要求のクローニングされたコピーをデバッグサービスにルーティングすることができる。
先に述べたように、サービス自体はAPI定義ファイル1505をアップロードすることによってAPIレジストリ404に登録できる。APIレジストリ404は、API定義ファイル1505とともに、クローンデバッグプロパティ2710のアップロードを受けることができる。クローンデバッグプロパティ2710は、APIレジストリ404に対し、サービス2502のデバッグインスタンスはクラウドコンピューティングプラットフォーム202においてインスタンス化されねばならないことを示す。APIレジストリ404および/またはスケジューラは、サービス2214、2216、2218のノーマルインスタンスがデプロイされるときにサービス2502のデバッグインスタンスをデプロイすることができる。これに代えてまたはこれに加えて、サービス2502のデバッグインスタンスは、クライアントからサービスに送られた要求を受けたことに応じてデプロイすることができる。APIレジストリ404を使用する実施形態の場合、APIレジストリは、サービス2502のデバッグインスタンスのエンドポイントを、サービスメッシュ2210に与えることができる。
APIレジストリ404および/またはスケジューラはまた、サービスに送られる要求はクローニングされてサービス2502のデバッグインスタンスに送られなければならないことを示す指示2702を、サービスメッシュ2210に与えることができる。指示2702は、すべての要求はクローニングされてサービス2502のデバッグインスタンスに送られなければならないことを示し得る。いくつかの実施形態において、指示2702は、特定の割合の要求(たとえば、1つおきの要求、2つおきの要求など)がサービス2502のデバッグインスタンスのためにクローニングされねばならないことも示し得る。
図28は、いくつかの実施形態に係る、サービス2502のデバッグインスタンスに転送されているクローニングされた要求のブロック図を示す。ノーマル要求2806が通常のクライアント2202から送られるとき、ノーマル要求2806は、ロードバランサ2208を通過し、サービスメッシュ2210によって特定されることができる。サービスメッシュ2210は、ノーマル要求2806を、サービスに向けられているものとして特定することができる。指示2702および/またはこの特定に基づいて、サービスメッシュ2010は次にクローニングされた要求2808を生成することができる。いくつかの実施形態において、クローニングされた要求2808は、ノーマル要求2006の完全なコピーであってもよい。いくつかの実施形態において、クローニングされた要求2808は、サービスメッシュ2210によって挿入された、デバッグプロセスにおいて役立ち得る追加情報(たとえばタイムスタンプ、またはデバッグシナリオにおいて役立ち得るその他の診断情報)を含み得る。
クローニングされた要求2808は次に、サービス2502のデバッグインスタンスに転送することができる。これは、サービス2214、2216、2218のノーマルインスタンスへのノーマル要求2806の転送と並行して行うことができる。よって、このクローニングプロセスは、サービス2214、2216、2218のノーマルインスタンスのスループットに影響を与えることなく、機能することができる。また、これにより、サービス2502のデバッグインスタンスは、デバッグプロセスのためのリアルタイムのライブデータを使用することができる。よって、サービス2214、2216、2218のノーマルインスタンスで発生するどのエラーも、サービス2502のデバッグインスタンスの出力によってキャプチャされることになる。これは、問題が発生したときに、排他的にサービスのデバッグインスタンスがノーマル要求2806を処理することに伴うオーバーヘッドなしで、ライブデバッグデータを用いてこの問題をリアルタイムで分離できるという、固有の技術的利点を提供する。
図29は、コンテナ環境においてコンテナ化されたサービスのランタイムデバッグを提供する方法のフローチャートを示す。この方法は、コンテナ環境で、サービスを求める要求を受けることを含み得る(2902)。コンテナ環境は、サービスメッシュと、複数のコンテナにカプセル化された複数のサービスとを含み得る。サービスはまた、コンテナ環境における第1の1つ以上のコンテナにカプセル化されてもよい。コンテナ環境は、上記コンテナプラットフォーム210を含み得る。要求は、デバッグ要求または通常のクライアントデバイスからのノーマル要求の可能性がある。第1の1つ以上のコンテナを、サービスを形成する1つ以上のマイクロサービスを含み得るコンテナポッドを構成してもよい。コンテナ環境は、コンテナスケジューラとともに、オーケストレーションされたコンテナプラットフォームを含み得る。コンテナ環境はまた、APIレジストリを含み得る。
この方法はまた、要求をサービスのデバッグインスタンスにルーティングすべきか否かを判断することを含み得る(2904)。この判断は、要求のソース、要求におけるヘッダ、要求のペイロードにおける値、要求におけるフラグ、要求受信のタイミング、および/または要求のその他任意の特徴を含む、複数の異なるファクタに基づいて行うことができる。要求がデバッグ要求でない場合、この方法はまた、要求をサービスのノーマルインスタンスにルーティングすることを含み得る(2908)。
要求がデバッグ要求として特定された場合、方法はさらに、サービスのデバッグインスタンスを利用できるか否かを判断することを含み得る(2906)。デバッグインスタンスを利用できる場合、方法はまた、サービスのデバッグインスタンスをインスタンス化すること(2910)、および、サービスの新たにインスタンス化されたデバッグインスタンスに要求をルーティングすること(2912)を含み得る。
図29に示される具体的なステップが本発明の各種実施形態に係るコンテナ環境においてライブデバッグを可能にする特定の方法を提供することが理解されるはずである。代替実施形態に従いステップの他のシーケンスを実行することもできる。たとえば、本発明の代替実施形態は、概要を述べた上記ステップを異なる順序で実行し得る。加えて、図29に示される個々のステップは、個々のステップに適したさまざまなシーケンスで実行し得る複数のサブステップを含み得る。さらに、特定のアプリケーションに応じてその他のステップを追加または削除する場合もある。当業者は、多数の変形、修正、および代替形を認識するであろう。
本明細書に記載の各方法は、専用コンピュータシステムによって実現することができる。これらの方法の各ステップは、当該コンピュータシステムが自動的に実行してもよく、および/またはユーザを必要とする入力/出力が与えられてもよい。たとえば、ユーザが方法の各ステップに対して入力を与えてもよく、これらの入力は各々、このような入力を要求する、コンピュータシステムが生成した特定の出力に応じて与えられてもよい。各入力は、対応する要求出力に応じて受けられてもよい。さらに、入力は、ユーザから受けられてもよく、別のデータシステムからデータストリームとして受けられてもよく、メモリロケーションから取り出されてもよく、ネットワークを介して取り出されてもよく、ウェブサービスから要求されてもよく、および/またはその他であってもよい。同様に、出力は、ユーザに与えられてもよく、データストリームとして別のコンピュータシステムに与えられてもよく、メモリロケーションに保存されてもよく、ネットワークを介して送られてもよく、ウェブサービスに与えられてもよく、および/またはその他であってもよい。すなわち、本明細書に記載の方法の各ステップは、コンピュータシステムが実行し得るものであり、かつ、ユーザを必要とするもしくは必要としないかもしれないコンピュータシステムに対する、任意の数の入力、当該コンピュータシステムからの出力、および/または当該コンピュータシステムへの/からの要求を必要とし得るものである。ユーザを必要としないステップは、人の介入なしでコンピュータシステムが自動的に実行し得ると言える。したがって、本開示に照らして、本明細書に記載の各方法の各ステップは、ユーザへのおよびユーザからの入力および出力を含むように変更されてもよく、または、プロセッサが何らかの判断を行う場合は人の介入なしでコンピュータシステムが自動的に行ってもよい。さらに、本明細書に記載の各方法のいくつかの実施形態は、有形の非一時的な記憶媒体に格納されて有形のソフトウェアプロダクトを形成する一組の命令として実現されてもよい。
図30は、上記実施形態のうちのいずれかとのやり取りが可能な分散型システム3000の簡略図を示す。示されている実施形態において、分散型システム3000は1つ以上のクライアントコンピューティングデバイス3002、3004、3006、および3008を含み、これらのクライアントコンピューティングデバイスは、1つ以上のネットワーク3010を介してウェブブラウザ、専用クライアント(たとえばOracle Forms)などのようなクライアントアプリケーションを実行し操作するように構成されている。サーバ3012が、ネットワーク3010を介してリモートクライアントコンピューティングデバイス3002、3004、3006、および3008に対して通信可能に結合されていてもよい。
各種実施形態において、サーバ3012は、このシステムのコンポーネントのうちの1つ以上が提供する1つ以上のサービスまたはソフトウェアアプリケーションを実行するようにされてもよい。いくつかの実施形態において、これらのサービスは、クライアントコンピューティングデバイス3002、3004、3006、および/または3008のユーザに対し、ウェブベースのもしくはクラウドサービスとして、またはサービスとしてのソフトウェア(SaaS)モデルのもとで、提供されてもよい。そうすると、クライアントコンピューティングデバイス3002、3004、3006、および/または3008を操作しているユーザは、1つ以上のクライアントアプリケーションを利用してサーバ3012とやり取りすることにより、これらのコンポーネントが提供するサービスを利用することができる。
図面に示される構成において、システム3000のソフトウェアコンポーネント3018、3020および3022は、サーバ3012上に実装されたものとして示されている。他の実施形態において、システム3000のコンポーネントおよび/またはこれらのコンポーネントが提供するサービスのうちの1つ以上が、クライアントコンピューティングデバイス3002、3004、3006、および/または3008のうちの1つ以上によって実装されてもよい。そうすると、クライアントコンピューティングデバイスを操作しているユーザは、1つ以上のクライアントアプリケーションを利用することにより、これらのコンポーネントが提供するサービスを使用することができる。これらのコンポーネントは、ハードウェア、ファームウェア、ソフトウェア、またはその組み合わせで実装されてもよい。分散型システム3000とは異なり得るさまざまな異なるシステム構成が可能であることが理解されるはずである。図面に示される実施形態はしたがって、実施形態のシステムを実装するための分散型システムの一例であって、限定を意図したものではない。
クライアントコンピューティングデバイス3002、3004、3006、および/または3008は、Microsoft Windows Mobile(登録商標)等のソフトウェア、および/またはiOS、Windows Phone、Android、BlackBerry 10、Palm OSその他等のさまざまなモバイルオペレーティングシステムを実行し、インターネット、電子メール、ショートメッセージサービス(SMS)、Blackberry(登録商標)、またはその他の通信プロトコルに接続可能な、ポータブルハンドヘルドデバイス(たとえばiPhone(登録商標)、携帯電話、iPad(登録商標)、コンピューティングタブレット、携帯情報端末(PDA))またはウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)であってもよい。クライアントコンピューティングデバイスは、例として、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux(登録商標)オペレーティングシステムを実行するパーソナルコンピュータおよび/またはラップトップコンピュータを含む汎用パーソナルコンピュータであってもよい。クライアントコンピューティングデバイスは、限定されないがたとえばGoogle Chrome OS等のさまざまなGNU/Linux(登録商標)オペレーティングシステムを含む市場で入手可能な多様なUNIX(登録商標)またはUNIX(登録商標)系オペレーティングシステムのうちのいずれかを実行するワークステーションコンピュータであってもよい。これに代えてまたはこれに加えて、クライアントコンピューティングデバイス3002、3004、3006、および3008は、ネットワーク3010を介して通信可能な、シンクライアントコンピュータ、インターネット接続可能なゲームシステム(たとえばKinect(登録商標)ジェスチャー入力デバイスを有するまたは有しないMicrosoft Xboxゲームコンソール)、および/またはパーソナルメッセージングデバイス等の、電子デバイスであってもよい。
具体例としての分散型システム3000が4つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスをサポートすることができる。センサなどを有するデバイスのようなその他のデバイスがサーバ3012とやり取りしてもよい。
分散型システム3000のネットワーク3010は、限定されないがTCP/IP(transmission control protocol/Internet protocol)、SNA(systems network architecture)、IPX(Internet packet exchange)、AppleTalk(登録商標)などを含む、市場で入手可能なさまざまなプロトコルのうちのいずれかを用いてデータ通信をサポートできる、当業者によく知られた任意のタイプのネットワークであってもよい。一例にすぎないが、ネットワーク3010は、たとえばイーサネット(登録商標)、トークンリングおよび/または同様のものに基づく、ローカルエリアネットワーク(LAN)であってもよい。ネットワーク3010は、広域ネットワークおよびインターネットであってもよい。これは、限定されないが仮想プライベートネットワーク(VPN)、イントラネット、エクストラネット、公衆交換電話網(PSTN)、赤外線ネットワーク、無線ネットワーク(たとえばInstitute of Electrical and Electronics(IEEE)802.11プロトコルスイート、Bluetooth(登録商標)、および/または任意の他の無線プロトコルのうちのいずれかの下で動作するネットワーク)、および/または上記および/またはその他のネットワークの任意の組み合わせを含む、仮想ネットワークを含み得る。
サーバ3012は、1つ以上の汎用コンピュータ、専用サーバコンピュータ(一例としてPC(パーソナルコンピュータ)サーバ、UNIX(登録商標)サーバ、ミッドレンジサーバ、メインフレームコンピュータ、ラックマウントサーバなどを含む)、サーバファーム、サーバクラスタ、または、その他任意の適切な構成および/または組み合わせからなるものであってもよい。各種実施形態において、サーバ3012は、上の開示で説明した1つ以上のサービスまたはソフトウェアアプリケーションを実行するようにされていてもよい。たとえば、サーバ3012は、本開示の実施形態に係る上記処理を実行するためのサーバに対応していてもよい。
サーバ3012は、上記オペレーティングシステムのうちのいずれかおよび市場で入手可能なサーバオペレーティングシステムを含むオペレーティングシステムを実行し得る。また、サーバ3012は、HTTP(hypertext transport protocol)サーバ、FTP(file transfer protocol)サーバ、CGI(common gateway interface)サーバ、JAVA(登録商標)サーバ、データベースサーバなどを含む、さまざまな付加的なサーバアプリケーションおよび/またはミッドティアアプリケーションのうちのいずれかを実行し得る。具体例としてのデータベースサーバは、Oracle、Microsoft、Sybase、IBM(International Business Machines)などから市販されているものを含むが、これらに限定されない。
いくつかの実装例において、サーバ3012は、クライアントコンピューティングデバイス3002、3004、3006、および3008のユーザから受信したデータフィードおよび/またはイベントアップデートを分析し統合するための1つ以上のアプリケーションを含み得る。一例として、データフィードおよび/またはイベントアップデートは、限定されないが、1つ以上の第三者情報源および連続データストリームから受信したTwitter(登録商標)フィード、Facebook(登録商標)アップデートまたはリアルタイムアップデートを含み得る。これらはセンサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などに関連するリアルタイムイベントを含み得る。また、サーバ3012は、クライアントコンピューティングデバイス3002、3004、3006、および3008の1つ以上のディスプレイデバイスを介してデータフィードおよび/またはリアルタイムイベントを表示するための1つ以上のアプリケーションを含み得る。
分散型システム3000は、1つ以上のデータベース3014および3016も含み得る。データベース3014および3016はさまざまな場所に存在し得る。一例として、データベース3014および3016のうちの1つ以上は、サーバ3012に対してローカルな場所にある(および/またはサーバ内にある)非一時的な記憶媒体上にあってもよい。これに代えて、データベース3014および3016は、サーバ3012から遠隔の場所に位置してネットワークベースのまたは専用接続を介してサーバ3012と通信してもよい。一組の実施形態において、データベース3014および3016は、ストレージエリアネットワーク(SAN)内にあってもよい。同様に、サーバ3012に帰する機能を実行するために必要な任意のファイルを、適宜、サーバ3012にローカルにおよび/またはサーバ3012から遠隔の場所に格納してもよい。一組の実施形態において、データベース3014および3016は、SQLフォーマットのコマンドに応答してデータを格納し、アップデートし、取り出すようにされた、Oracleが提供するデータベース等のリレーショナルデータベースを含み得る。
図31は、本開示の実施形態に係る、実施形態のシステムの1つ以上のコンポーネントがサービスをクラウドサービスとして提供し得るシステム環境3100の1つ以上のコンポーネントの簡略化されたブロック図である。示されている実施形態において、システム環境3100は、クラウドサービスを提供するクラウドインフラストラクチャシステム3102とやり取りするためにユーザが使用し得る1つ以上のクライアントコンピューティングデバイス3104、3106、および3108を含む。クライアントコンピューティングデバイスは、クライアントコンピューティングデバイスのユーザがクラウドインフラストラクチャシステム3102とやり取りすることによってクラウドインフラストラクチャシステム3102が提供するサービスを使用するために用いることができる、ウェブブラウザ、専用クライアントアプリケーション(たとえばOracle Forms)、またはその他何らかのアプリケーション等のクライアントアプリケーションを操作するように構成されてもよい。
図面に示されているクラウドインフラストラクチャシステム3102は示されているもの以外のコンポーネントを有し得ることが理解されるはずである。さらに、図面に示されている実施形態は、本発明の実施形態を組み込むことができるクラウドインフラストラクチャシステムの一例にすぎない。他のいくつかの実施形態において、クラウドインフラストラクチャシステム3102は、図示されているものよりも多いまたは少ないコンポーネントを有していてもよく、2つ以上のコンポーネントを組み合わせてもよく、またはコンポーネントの異なる構成または配置を有していてもよい。
クライアントコンピューティングデバイス3104、3106、および3108は、3002、3004、3006、および3008について先に述べたものと同様のデバイスであってもよい。
具体例としてのシステム環境3100は3つのクライアントコンピューティングデバイスとともに示されているが、任意の数のクライアントコンピューティングデバイスをサポートすることができる。センサなどを有するデバイスのようなその他のデバイスがクラウドインフラストラクチャシステム3102とやり取りしてもよい。
ネットワーク3110は、クライアント3104、3106、および3108とクラウドインフラストラクチャシステム3102との間におけるデータの通信および交換を容易にすることができる。各ネットワークは、ネットワーク3010について先に述べたものを含む市場で入手可能なさまざまなプロトコルのうちのいずれかを用いてデータ通信をサポートできる、当業者によく知られた任意のタイプのネットワークであってもよい。
クラウドインフラストラクチャシステム3102は、1つ以上のコンピュータ、および/またはサーバ3012について先に述べたものを含み得るサーバを含み得る。
特定の実施形態において、クラウドインフラストラクチャシステムが提供するサービスは、オンラインデータストレージおよびバックアップソリューション、ウェブベースの電子メールサービス、ホストされているオフィススイートおよびドキュメントコラボレーションサービス、データベース処理、管理された技術サポートサービスなどのような、クラウドインフラストラクチャシステムのユーザがオンデマンドで利用できるようにされる多数のサービスを含み得る。クラウドインフラストラクチャシステムが提供するサービスは、そのユーザのニーズに合わせて動的にスケーリングすることができる。クラウドインフラストラクチャシステムが提供するサービスを具体的にインスタンス化したものを本明細書では「サービスインスタンス」と呼ぶ。一般的に、クラウドサービスプロバイダのシステムからの、インターネットのような通信ネットワークを介してユーザが利用できるようにされる任意のサービスを、「クラウドサービス」と呼ぶ。典型的に、パブリッククラウド環境において、クラウドサービスプロバイダのシステムを構成するサーバおよびシステムは、顧客自身のオンプレミスサーバおよびシステムとは異なる。たとえば、クラウドサービスプロバイダのシステムはアプリケーションをホストすることができ、ユーザは、インターネットのような通信ネットワークを介して、オンデマンドでこのアプリケーションをオーダーし使用することができる。
いくつかの例において、コンピュータネットワーククラウドインフラストラクチャにおけるサービスは、クラウドベンダーによってまたは当該技術において周知の他のやり方でユーザに提供される、ストレージ、ホストされているデータベース、ホストされているウェブサーバ、ソフトウェアアプリケーション、またはその他のサービスに対する保護されたコンピュータネットワークアクセスを含み得る。たとえば、サービスは、インターネットを介した、クラウド上の遠隔ストレージに対するパスワードで保護されたアクセスを含むことができる。別の例として、サービスは、ネットワーク化された開発者の私的使用のための、ウェブサービスベースのホストされているリレーショナルデータベースおよびスクリプト言語ミドルウェアエンジンを含むことができる。別の例として、サービスは、クラウドベンダーのウェブサイト上でホストされている電子メールソフトウェアアプリケーションに対するアクセスを含むことができる。
特定の実施形態において、クラウドインフラストラクチャシステム3102は、セルフサービスで、サブスクリプションベースで、弾力的にスケーラブルで、信頼性が高く、可用性が高く、かつ安全なやり方で顧客に与えられる、アプリケーション、ミドルウェア、およびデータベースサービス提供物一式を含み得る。そのようなクラウドインフラストラクチャシステムの一例は、本願の譲受人が提供するOracle Public Cloudである。
各種実施形態において、クラウドインフラストラクチャシステム3102は、クラウドインフラストラクチャシステム3102が提供するサービスに対する顧客のサブスクリプションを自動的にプロビジョニングし、管理し、追跡するようにされていてもよい。クラウドインフラストラクチャシステム3102は、異なるデプロイメントモデルを介してクラウドサービスを提供することができる。たとえば、(例としてOracle所有の)クラウドサービスを販売する組織がクラウドインフラストラクチャシステム3102を所有しており一般の人々または異なる産業企業がサービスを利用できるようにされるパブリッククラウドモデルの下で、サービスが提供されてもよい。別の例として、クラウドインフラストラクチャシステム3102が1つの組織のためにのみ運営されこの組織内の1つ以上のエンティティのためにサービスを提供し得るプライベートクラウドモデルの下で、サービスが提供されてもよい。また、クラウドインフラストラクチャシステム3102およびクラウドインフラストラクチャシステム3102が提供するサービスを関連するコミュニティー内のいくつかの組織が共有するコミュニティークラウドモデルの下で、クラウドサービスが提供されてもよい。また、2つ以上の異なるモデルの組み合わせであるハイブリッドクラウドモデルの下で、クラウドサービスが提供されてもよい。
いくつかの実施形態において、クラウドインフラストラクチャシステム3102が提供するサービスは、サービスとしてのソフトウェア(SaaS)カテゴリ、サービスとしてのプラットフォーム(PaaS)カテゴリ、サービスとしてのインフラストラクチャ(IaaS)カテゴリ、またはハイブリッドサービスを含むサービスの他のカテゴリの下で提供される、1つ以上のサービスを含み得る。顧客は、クラウドインフラストラクチャシステム3102が提供する1つ以上のサービスを、サブスクリプションオーダーを通じてオーダーすることができる。そうすると、クラウドインフラストラクチャシステム3102は、この顧客のサブスクリプションオーダーのサービスを提供するために処理を実行する。
いくつかの実施形態において、クラウドインフラストラクチャシステム3102が提供するサービスは、限定されないが、アプリケーションサービス、プラットフォームサービスおよびインフラストラクチャサービスを含み得る。いくつかの例において、アプリケーションサービスは、クラウドインフラストラクチャシステムがSaaSプラットフォームを介して提供することができる。SaaSプラットフォームは、SaaSカテゴリに含まれるクラウドサービスを提供するように構成されてもよい。たとえば、SaaSプラットフォームは、統合開発およびデプロイメントプラットフォーム上でオンデマンドアプリケーション一式を構築し配信する機能を提供することができる。SaaSプラットフォームは、SaaSサービスを提供するための基礎となるソフトウェアおよびインフラストラクチャを管理し制御することができる。SaaSプラットフォームが提供するサービスを利用することにより、顧客は、クラウドインフラストラクチャシステム上で実行されるアプリケーションを利用することが可能である。顧客は、顧客が別々のライセンスおよびサポートを購入しなくても、アプリケーションサービスを得ることが可能である。さまざまな異なるSaaSサービスを提供することができる。例は、限定されないが、大組織向けの販売実績管理、企業統合、およびビジネスフレキシビリティのためのソリューションを提供するサービスを含む。
いくつかの実施形態において、プラットフォームサービスは、クラウドインフラストラクチャシステムがPaaSプラットフォームを介して提供することができる。PaaSプラットフォームは、PaaSカテゴリに含まれるクラウドサービスを提供するように構成し得る。プラットフォームサービスの例は、限定されないが、共有されている共通アーキテクチャ上の既存のアプリケーションを組織(Oracle等)が統合することを可能にするサービスと、当該プラットフォームが提供する共有サービスを推進する新たなアプリケーションを構築する機能とを含み得る。PaaSプラットフォームは、PaaSサービスを提供するための基礎となるソフトウェアおよびインフラストラクチャを管理し制御することができる。顧客は、顧客が別々のライセンスおよびサポートを購入しなくても、クラウドインフラストラクチャシステムが提供するPaaSサービスを得ることが可能である。プラットフォームサービスの例は、限定されないが、Oracle Java Cloud Service(JCS)、Oracle Database Cloud Service(DBCS)その他を含む。
PaaSプラットフォームが提供するサービスを利用することにより、顧客は、クラウドインフラストラクチャシステムがサポートするプログラミング言語およびツールを採用することができ、デプロイされたサービスを制御することもできる。いくつかの実施形態において、クラウドインフラストラクチャシステムが提供するプラットフォームサービスは、データベースクラウドサービス、ミドルウェアクラウドサービス(たとえばOracle Fusion Middlewareサービス)、およびJavaクラウドサービスを含み得る。一実施形態において、データベースクラウドサービスは、組織がデータベースリソースをプールしデータベースクラウドの形態でサービスとしてのデータベース(Database as a Service)を顧客に提供することを可能にする共有サービスデプロイメントモデルをサポートすることができる。ミドルウェアクラウドサービスは、顧客がさまざまなビジネスアプリケーションを開発しデプロイするためのプラットフォームを提供してもよく、Javaクラウドサービスは、クラウドインフラストラクチャシステムにおいて顧客がJavaアプリケーションをデプロイするためのプラットフォームを提供してもよい。
さまざまな異なるインフラストラクチャサービスは、クラウドインフラストラクチャシステムにおいてIaaSプラットフォームが提供してもよい。インフラストラクチャサービスは、SaaSプラットフォームおよびPaaSプラットフォームが提供するサービスを利用する顧客のためのストレージ、ネットワーク、および他の基本的なコンピューティングリソース等の、基礎となるコンピューティングリソースの管理および制御を容易にする。
特定の実施形態において、クラウドインフラストラクチャシステム3102はまた、クラウドインフラストラクチャシステムの顧客にさまざまなサービスを提供するために用いられるリソースを提供するためのインフラストラクチャリソース3130を含み得る。一実施形態において、インフラストラクチャリソース3130は、PaaSプラットフォームおよびSaaSプラットフォームが提供するサービスを実行するためのサーバ、ストレージ、およびネットワーキングリソース等のハードウェアの、予め統合し最適化した組み合わせを含み得る。
いくつかの実施形態において、クラウドインフラストラクチャシステム3102におけるリソースは、複数のユーザによって共有され要求ごとに動的に再割り当てされてもよい。加えて、リソースは、異なるタイムゾーンのユーザに割り当てられてもよい。たとえば、クラウドインフラストラクチャシステム3102は、第1のタイムゾーンの第1組のユーザが指定された時間数だけクラウドインフラストラクチャシステムのリソースを利用することを可能にし、それから、異なるタイムゾーンにいる別の1組のユーザに対して同じリソースを再割り当てすることにより、リソースの利用を最大化することができる。
特定の実施形態において、クラウドインフラストラクチャシステム3102の異なるコンポーネントまたはモジュールによって共有され、クラウドインフラストラクチャシステム3102が提供するサービスによって共有される、複数の内部共有サービス3132を提供することができる。これらの内部共有サービスは、限定されないが、セキュリティおよびアイデンティティサービス、統合サービス、企業リポジトリサービス、企業マネージャーサービス、ウィルススキャンおよびホワイトリストサービス、高可用性、バックアップおよびリカバリサービス、クラウドサポートを可能にするためのサービス、電子メールサービス、通知サービス、ファイル転送サービスなどを含み得る。
特定の実施形態において、クラウドインフラストラクチャシステム3102は、クラウドインフラストラクチャシステムにおけるクラウドサービス(たとえばSaaS、PaaS、およびIaaSサービス)の包括的管理を提供し得る。一実施形態において、クラウド管理機能は、クラウドインフラストラクチャシステム3102が受けた顧客のサブスクリプションをプロビジョニング、管理、および追跡する機能を含み得る。
一実施形態において、図面に示されるように、クラウド管理機能は、オーダー管理モジュール3120、オーダーオーケストレーションモジュール3122、オーダープロビジョニングモジュール3124、オーダー管理およびモニタリングモジュール3126、ならびにアイデンティティ管理モジュール3128等の、1つ以上のモジュールによって提供されてもよい。これらのモジュールは、汎用コンピュータ、専用サーバコンピュータ、サーバファーム、サーバクラスタ、またはその他任意の適切な構成および/または組み合わせであってもよい、1つ以上のコンピュータおよび/またはサーバを含み得る、または、これらを用いて提供し得る。
具体例としての動作3134において、クライアントデバイス3104、3106または3108等のクライアントデバイスを用いる顧客は、クラウドインフラストラクチャシステム3102が提供する1つ以上のサービスを要求すること、および、クラウドインフラストラクチャシステム3102が提示する1つ以上のサービスのサブスクリプションをオーダーすることにより、クラウドインフラストラクチャシステム3102とやり取りしてもよい。特定の実施形態において、顧客は、クラウドユーザインターフェイス(UI)、クラウドUI 3112、クラウドUI 3114および/またはクラウドUI 3116にアクセスしこれらのUIを介してサブスクリプションオーダーを行ってもよい。顧客がオーダーを行ったことに応じてクラウドインフラストラクチャシステム3102が受けるオーダー情報は、顧客を特定する情報と、クラウドインフラストラクチャシステム3102が提供する、顧客がサブスクライブする予定の1つ以上のサービスとを含み得る。
顧客がオーダーを行った後に、オーダー情報は、クラウドUI 3112、3114および/または3116を介して受信される。
動作3136において、オーダーはオーダーデータベース3118に格納される。オーダーデータベース3118は、クラウドインフラストラクチャシステム3102によって運営され他のシステム要素とともに運営されるいくつかのデータベースのうちの1つであってもよい。
動作3138において、オーダー情報はオーダー管理モジュール3120に転送されてもよい。いくつかの例において、オーダー管理モジュール3120は、オーダーを確認し確認後にオーダーを記入する等の、オーダーに関連する課金および会計機能を行うように構成されてもよい。
動作3140において、オーダーに関する情報は、オーダーオーケストレーションモジュール3122に伝えられる。オーダーオーケストレーションモジュール3122は、オーダー情報を利用することにより、顧客によって行われたオーダーのためのサービスおよびリソースのプロビジョニングを調整するように構成されてもよい。いくつかの例において、オーダーオーケストレーションモジュール3122は、リソースのプロビジョニングを調整することにより、オーダープロビジョニングモジュール3124のサービスを使用するサブスクライブされたサービスを、サポートしてもよい。
特定の実施形態において、オーダーオーケストレーションモジュール3122は、各オーダーに関連付けられたビジネスプロセスの管理を可能にし、ビジネスロジックを適用することにより、オーダーがプロビジョニングに進むべきか否かを判断する。動作3142において、新規サブスクリプションのオーダーを受けると、オーダーオーケストレーションモジュール3122は、サブスクリプションオーダーを遂行するのに必要なリソースを割り当てて構成することを求める要求を、オーダープロビジョニングモジュール3124に送る。オーダープロビジョニングモジュール3124は、顧客がオーダーしたサービスのためのリソースの割当を可能にする。オーダープロビジョニングモジュール3124は、クラウドインフラストラクチャシステム3102が提供するクラウドサービスと、要求されたサービスを提供するためのリソースのプロビジョニングに使用される物理実装層との間の抽象化レベルを提供する。このようにして、オーダーオーケストレーションモジュール3122を、サービスおよびリソースが実際にオンザフライでプロビジョニングされるか否か、または、予めプロビジョニングされており要求後に割り当て/アサインされるか否か等の、実装の詳細から切り離すことができる。
動作3144において、サービスおよびリソースがプロビジョニングされると、提供されるサービスの通知が、クラウドインフラストラクチャシステム3102のオーダープロビジョニングモジュール3124によってクライアントデバイス3104、3106および/または3108の顧客に送信されてもよい。
動作3146において、顧客のサブスクリプションオーダーは、オーダー管理およびモニタリングモジュール3126によって管理および追跡されてもよい。いくつかの例において、オーダー管理およびモニタリングモジュール3126は、ストレージ使用量、転送データ量、ユーザ数、ならびにシステムアップタイムおよびシステムダウンタイムの量等の、サブスクリプションオーダーにおけるサービスの使用統計を収集するように構成されてもよい。
特定の実施形態において、クラウドインフラストラクチャシステム3102はアイデンティティ管理モジュール3128を含み得る。アイデンティティ管理モジュール3128は、クラウドインフラストラクチャシステム3102におけるアクセス管理および認可サービス等のアイデンティティサービスを提供するように構成されてもよい。いくつかの実施形態において、アイデンティティ管理モジュール3128は、クラウドインフラストラクチャシステム3102が提供するサービスの利用を所望する顧客に関する情報を管理してもよい。そのような情報は、このような顧客のアイデンティティを認証する情報と、さまざまなシステムリソース(たとえばファイル、ディレクトリ、アプリケーション、通信ポート、メモリセグメントなど)に関してこれらの顧客が実行を認可されるアクションを記述する情報とを含み得る。アイデンティティ管理モジュール3128は、各顧客に関し、かつ、誰が如何にしてこの記述情報にアクセスし修正することができるかに関する記述情報の管理も含み得る。
図32は、本発明の各種実施形態を実現し得る具体例としてのコンピュータシステム3200を示す。システム3200を用いることにより、上記コンピュータシステムのうちのいずれかを実現することができる。図面に示されるように、コンピュータシステム3200は、バスサブシステム3202を介して複数の周辺サブシステムと通信する処理ユニット3204を含む。これらの周辺サブシステムは、処理加速ユニット3206と、入出力サブシステム3208と、記憶サブシステム3218と、通信サブシステム3224とを含み得る。記憶サブシステム3218は、有形のコンピュータ読取可能記憶媒体3222とシステムメモリ3210とを含み得る。
バスサブシステム3202は、コンピュータシステム3200の各種コンポーネントおよびサブシステムを目的に合わせて互いに通信させるためのメカニズムを提供する。バスサブシステム3202は1つのバスとして概略的に示されているが、バスサブシステムの代替実施形態は複数のバスを利用し得る。バスサブシステム3202は、さまざまなバスアーキテクチャのうちのいずれかを用いる、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含むいくつかのタイプのバス構造のうちのいずれかであってもよい。たとえば、そのようなアーキテクチャは、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、および、IEEE P1386.1規格に準拠して製造されたMezzanineバスとして実装することができるPeripheral Component Interconnect(PCI)バスを含み得る。
1つ以上の集積回路(たとえば従来のマイクロプロセッサまたはマイクロコントローラ)として実現することができる処理ユニット3204は、コンピュータシステム3200の動作を制御する。1つ以上のプロセッサが処理ユニット3204に含まれていてもよい。これらのプロセッサはシングルコアまたはマルチコアプロセッサを含み得る。特定の実施形態において、処理ユニット3204は、1つ以上の独立した処理ユニット3232および/または3234として、各処理ユニットに含まれるシングルまたはマルチコアプロセッサとともに実現されてもよい。他の実施形態において、処理ユニット3204はまた、2つのデュアルコアプロセッサを1つのチップに統合することによって形成されるクアッドコア処理ユニットとして実現されてもよい。
各種実施形態において、処理ユニット3204は、プログラムコードに応じてさまざまなプログラムを実行することができ、かつ、同時に実行している複数のプログラムまたはプロセスを管理することができる。ある所定の時点で、実行すべきプログラムコードのうちの一部またはすべてが、プロセッサ3204および/または記憶サブシステム3218にあってもよい。適切なプログラミングを通して、プロセッサ3204は上記各種機能を提供することができる。コンピュータシステム3200はさらに、デジタル信号プロセッサ(DSP)、専用プロセッサ、および/またはその他同様のものを含むことができる、処理加速ユニット3206を含み得る。
入出力サブシステム3208は、ユーザインターフェイス入力デバイスと、ユーザインターフェイス出力デバイスとを含み得る。ユーザインターフェイス入力デバイスは、キーボード、マウスまたはトラックボール等のポインティングデバイス、ディスプレイに組み込まれたタッチパッドまたはタッチスクリーン、スクロールホイール、クリックホイール、ダイヤル、ボタン、スイッチ、キーパッド、音声コマンド認識システム付きの音声入力デバイス、マイク、およびその他のタイプの入力デバイスを含み得る。ユーザインターフェイス入力デバイスは、たとえば、ジェスチャーおよび発話コマンドを使用するナチュラルユーザインターフェイスを通してユーザが入力デバイスを制御し入力デバイスとやり取りすることを可能にする、Microsoft Xbox(登録商標)360ゲームコントローラ等のMicrosoft Kinect(登録商標)モーションセンサのような、モーション検知および/またはジェスチャー認識デバイスを含み得る。ユーザインターフェイス入力デバイスはまた、ユーザの目の活動(たとえば写真撮影中および/またはメニュー選択中の「まばたき」)を検出し目のジェスチャーを入力デバイス(たとえばGoogle Glass(登録商標))への入力として変換する、Google Glass(登録商標)まばたき検出器等のアイジェスチャー認識デバイスを含み得る。加えて、ユーザインターフェイス入力デバイスは、ユーザが音声コマンドを通して音声認識システム(たとえばSiri(登録商標)ナビゲータ)とやり取りすることを可能にする音声認識検知デバイスを含み得る。
ユーザインターフェイス入力デバイスはまた、限定されないが、3次元(3D)マウス、ジョイスティックまたはポインティングスティック、ゲームパッドおよびグラフィックタブレット、およびスピーカ等のオーディオ/ビジュアルデバイス、デジタルカメラ、デジタルカムコーダー、ポータブルメディアプレイヤー、ウェブカメラ、イメージスキャナ、指紋スキャナ、バーコードリーダー3Dスキャナ、3Dプリンタ、レーザ測距装置、および視線追跡デバイスを含み得る。加えて、ユーザインターフェイス入力デバイスは、たとえば、コンピュータ断層撮影装置、磁気共鳴撮像装置、ポジトロン断層撮影装置、医療用超音波検査装置等の医療用撮像入力デバイスを含み得る。ユーザインターフェイス入力デバイスはまた、たとえば、MIDIキーボード、デジタル楽器などのような音声入力装置を含み得る。
ユーザインターフェイス出力デバイスは、ディスプレイサブシステム、表示灯、または音声出力装置等の非視覚的ディスプレイなどを含み得る。ディスプレイサブシステムは、陰極線管(CRT)、液晶ディスプレイ(LCD)またはプラズマディスプレイを用いるもの等のフラットパネルデバイス、投影デバイス、タッチスクリーンなどであってもよい。一般的に、「出力デバイス」という用語を使用する場合は、コンピュータシステム3200からユーザまたは他のコンピュータに情報を出力するための可能なすべてのタイプのデバイスおよびメカニズムを含むことを意図している。たとえば、ユーザインターフェイス出力デバイスは、限定されないが、モニタ、プリンタ、スピーカ、ヘッドホン、カーナビゲーションシステム、プロッタ、音声出力デバイス、およびモデム等の、テキスト、図形、およびオーディオ/ビデオ情報を視覚的に伝えるさまざまなディスプレイデバイスを含み得る。
コンピュータシステム3200は、現在はシステムメモリ3210内にあるものとして示されているソフトウェア要素を含むストレージサブシステム3218を含み得る。システムメモリ3210は、処理ユニット3204上にローディング可能であり処理ユニット上で実行可能なプログラム命令と、これらのプログラムの実行中に生成されたデータとを格納することができる。
コンピュータシステム3200の構成および種類に応じて、システムメモリ3210は、揮発性(たとえばランダムアクセスメモリ(RAM))であってもよく、および/または不揮発性(たとえば読出専用メモリ(ROM)、フラッシュメモリなど)であってもよい。典型的に、RAMは、処理ユニット3204が直ちにアクセス可能でありおよび/または現在操作し実行している、データおよび/またはプログラムモジュールを含む。いくつかの実装例において、システムメモリ3210は、スタティックランダムアクセスメモリ(SRAM)またはダイナミックランダムアクセスメモリ(DRAM)等の複数の異なる種類のメモリを含み得る。いくつかの実装例において、たとえば起動中のコンピュータシステム3200内の要素間の情報の転送を支援する基本ルーチンを含む基本入出力システム(BIOS)は、典型的にはROMに格納することができる。例として、限定されないが、システムメモリ3210はまた、クライアントアプリケーション、ウェブブラウザ、ミッドティアアプリケーション、リレーショナルデータベース管理システム(RDBMS)などを含み得るアプリケーションプログラム3212と、プログラムデータ3214と、オペレーティングシステム3216とを示している。例として、オペレーティングシステム3216は、さまざまなバージョンのMicrosoft Windows(登録商標)、Apple Macintosh(登録商標)、および/またはLinux(登録商標)オペレーティングシステム、市場で入手可能な多様なUNIX(登録商標)またはUNIX(登録商標)系オペレーティングシステム(限定されないが多様なGNU/Linux(登録商標)オペレーティングシステム、Google Chrome(登録商標)OSなどを含む)、および/またはiOS、Windows(登録商標)Phone、Android(登録商標) OS、BlackBerry(登録商標) 10 OS、およびPalm(登録商標) OSオペレーティングシステム等のモバイルオペレーティングシステムを含み得る。
ストレージサブシステム3218はまた、いくつかの実施形態の機能を提供する基本的なプログラミングおよびデータ構造を格納するための有形のコンピュータ読取可能記憶媒体を提供することができる。プロセッサによって実行されると上記機能を実行するソフトウェア(プログラム、コードモジュール、命令)は、ストレージサブシステム3218に格納することができる。これらのソフトウェアモジュールまたは命令は、処理ユニット3204によって実行されてもよい。ストレージサブシステムy3218はまた、本発明に従い使用されるデータを格納するためのリポジトリを提供することができる。
ストレージサブシステム3218はまた、コンピュータ読取可能記憶媒体3222にさらに接続することが可能なコンピュータ読取可能記憶媒体リーダー3220を含み得る。システムメモリ3210とともに、また、任意でシステムメモリ3210と組み合わされて、コンピュータ読取可能記憶媒体3222は、コンピュータ読取可能情報を一時的におよび/またはより恒久的に含む、格納する、送信する、および取り出すための、リモート、ローカル、固定、および/またはリムーバブル記憶装置プラス記憶媒体を包括的に表すことができる。
コードまたはコードの一部を含むコンピュータ読取可能記憶媒体3222はまた、限定されないが、情報の記憶および/または送信のための任意の方法または技術で実現される、揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体等の、記憶媒体および通信媒体を含む、当該技術において周知のまたは使用されている適切な任意の媒体を含み得る。これは、RAM、ROM、電子的に消去可能プログラム可能なROM(EEPROM)、フラッシュメモリまたはその他のメモリ技術、CD-ROM、デジタル多目的ディスク(DVD)、もしくはその他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくはその他の磁気記憶装置、または、他の有形のコンピュータ読取可能媒体等の、有形のコンピュータ読取可能記憶媒体を含み得る。これはまた、所望の情報を送信するために使用することができコンピューティングシステム3200がアクセスすることができる、データ信号、データ送信、またはその他任意の媒体等の、非有形コンピュータ読取可能媒体を含み得る。
例として、コンピュータ読取可能記憶媒体3222は、非リムーバブル不揮発性磁気媒体からの読取およびこの媒体への書込を行うハードディスクドライブ、リムーバブル不揮発性磁気ディスクからの読取およびこのディスクへの書込を行う磁気ディスクドライブ、ならびに、CD ROM、DVD、Blu-Ray(登録商標)ディスク、またはその他の光学媒体等のリムーバブル不揮発性光ディスクからの読取およびこのディスクへの書込を行う光ディスクドライブを含み得る。コンピュータ読取可能記憶媒体3222は、限定されないが、Zip(登録商標)ドライブ、フラッシュメモリカード、ユニバーサルシリアルバス(USB)フラッシュドライブ、セキュアデジタル(SD)カード、DVDディスク、デジタルビデオテープなどを含み得る。コンピュータ読取可能記憶媒体3222はまた、フラッシュメモリベースのSSD、エンタープライズフラッシュドライブ、ソリッドステートROMなどのような、不揮発性メモリベースのソリッドステートドライブ(SSD)、ソリッドステートRAM、ダイナミックRAM、スタティックRAM等の揮発性メモリベースのSSD、DRAMベースのSSD、磁気抵抗RAM(MRAM)SSD、ならびにDRAMおよびフラッシュメモリベースのSSDの組み合わせを用いるハイブリッドSSDを、含み得る。ディスクドライブおよびこれらに対応付けられたコンピュータ読取可能媒体は、コンピュータ読取可能命令、データ構造、プログラムモジュール、およびコンピュータシステム3200のためのその他のデータの不揮発性ストレージを提供することができる。
通信サブシステム3224は、他のコンピュータシステムおよびネットワークに対するインターフェイスを提供する。通信サブシステム3224は、他のシステムからデータを受信し、コンピュータシステム3200から他のシステムにデータを送信するためのインターフェイスの役割を果たす。たとえば、通信サブシステム3224は、コンピュータシステム3200がインターネットを介して1つ以上のデバイスに接続することを可能にする。いくつかの実施形態において、通信サブシステム3224は、(たとえば携帯電話技術、3G、4GもしくはEDGE(enhanced data rates for global evolution)等の高度データネットワーク技術、WiFi(登録商標)(IEEE 802.11系規格、または他の移動通信技術、またはそれらの任意の組み合わせを用いて)無線音声および/またはデータネットワークにアクセスするための無線周波数(RF)トランシーバーコンポーネント、グローバルポジショニングシステム(GPS)受信機コンポーネント、および/またはその他のコンポーネントを含み得る。いくつかの実施形態において、通信サブシステム3224は、無線インターフェイスに加えてまたはその代わりに、有線ネットワークコネクティビティ(たとえばイーサネット(登録商標))を提供することができる。
いくつかの実施形態において、通信サブシステム3224は、コンピュータシステム3200を使用し得る1人以上のユーザの代わりに、構造化および/または非構造化データフィード3226、イベントストリーム3228、イベントアップデート3230などの形態の入力通信を受けることもできる。
例として、通信サブシステム3224は、Twitter(登録商標)フィード、Facebook(登録商標)アップデート、Rich Site Summary(RSS)フィード等のウェブフィード、および/または1つ以上の第3者情報源からのリアルタイムアップデート等の、ソーシャルネットワークおよび/または他の通信サービスのユーザからのデータフィード3226をリアルタイムで受信するように構成されてもよい。
加えて、通信サブシステム3224は、明確な終わりがない本質的に連続しているまたは無限である可能性があるリアルタイムイベントのイベントストリーム3228および/またはイベントアップデート3230を含み得る、連続データストリームの形態のデータを受信するように構成されてもよい。連続データを生成するアプリケーションの例は、たとえば、センサデータアプリケーション、金融ティッカー、ネットワーク性能測定ツール(たとえばネットワークモニタリングおよびトラフィック管理アプリケーション)、クリックストリーム分析ツール、自動車交通監視などを含み得る。
通信サブシステム3224はまた、構造化および/または非構造化データフィード3226、イベントストリーム3228、イベントアップデート3230などを、コンピュータシステム3200に結合された1つ以上のストリーミングデータソースコンピュータと通信し得る1つ以上のデータベースに出力するように構成されてもよい。
コンピュータシステム3200は、ハンドヘルドポータブルデバイス(たとえばiPhone(登録商標)携帯電話、iPad(登録商標)コンピューティングタブレット、PDA)、ウェアラブルデバイス(たとえばGoogle Glass(登録商標)ヘッドマウントディスプレイ)、PC、ワークステーション、メインフレーム、キオスク、サーバラック、またはその他任意のデータ処理システムを含む、さまざまなタイプのうちの1つであってもよい。
コンピュータおよびネットワークには常に変化しているという性質があるので、図面に示されるコンピュータシステム3200の説明は、具体的な一例を意図しているにすぎない。図面に示されるシステムよりも多くのまたは少ないコンポーネントを有するその他多数の構成が可能である。たとえば、カスタマイズされたハードウェアが使用されてもよく、および/または特定の要素がハードウェア、ファームウェア、ソフトウェア(アプレットを含む)、または組み合わせで実現されてもよい。さらに、ネットワーク入出力デバイスのようなその他のコンピューティングデバイスに対する接続を用いてもよい。本明細書で提供される開示および教示に基づいて、当業者は、各種実施形態を実現するためのその他のやり方および/または方法を理解するであろう。
上述の記載では、説明のために、本発明の各種実施形態の十分な理解が得られるよう、数多くの具体的な詳細を述べている。しかしながら、当業者には、本発明の実施形態はこれらの具体的な詳細のうちの一部がなくても実施し得ることが明らかであろう。その他の例では、周知の構造およびデバイスはブロック図の形態で示されている。
上述の記載は、具体例としての実施形態を提供しているだけであって、本開示の範囲、利用可能性、または構成を限定することを意図しているのではない。むしろ、具体例としての実施形態の上述の記載は、具体例としての実施形態を実現することを可能にする説明を当業者に提供するであろう。以下の請求項に記載の本発明の精神および範囲から逸脱することなく、要素の機能および構成に各種変更を加え得ることが理解されるはずである。
上述の記載において、具体的な詳細は、実施形態の十分な理解を得るために提供されている。しかしながら、当業者は、実施形態はこれらの具体的な詳細がなくても実現し得ることを理解するであろう。たとえば、回路、システム、ネットワーク、プロセス、およびその他のコンポーネントは、実施形態を不必要な詳細で不明瞭にすることがないよう、ブロック図の形態のコンポーネントとして示されている場合がある。その他の例において、周知の回路、プロセス、アルゴリズム、構造、および技術は、実施形態を不明瞭にすることを避けるために不必要な詳細なしで示されている場合がある。
また、個々の実施形態は、フローチャート、フロー図、データフロー図、構造図、またはブロック図として示されるプロセスとして記載されている場合があることが注目される。フローチャートは動作を逐次プロセスとして説明している場合があるが、動作のうちの多くは並列または同時に実行することができる。加えて、動作の順序は構成し直してもよい。プロセスは、その動作が完了すると終了するが、図面に含まれていない追加のステップを有する可能性がある。プロセスは、方法、関数、手順、サブルーチン、サブプログラムなどに対応し得る。プロセスが関数に対応する場合、その終了は、この関数が呼び出し側関数またはメイン関数に戻ることに相当し得る。
「コンピュータ読取可能媒体」という用語は、携帯型または固定記憶装置、光記憶装置、無線チャネル、ならびに、命令および/またはデータを格納する、含む、または保持することが可能なその他の各種媒体を含むが、これらに限定される訳ではない。コードセグメントまたはマシン実行可能命令は、手順、関数、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ、クラス、または、命令、データ構造、もしくはプログラムステートメントの任意の組み合わせを表し得る。コードセグメントは、情報、データ、引数、パラメータ、またはメモリコンテンツを送ることおよび/または受けることにより、別のコードセグメントまたはハードウェア回路に結合されてもよい。情報、引数、パラメータ、データなどは、メモリ共有、メッセージパッシング、トークンパッシング、ネットワーク送信などを含む任意の適切な手段を介して、送る、転送する、または送信することができる。
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはその任意の組み合わせによって実現することができる。ソフトウェア、ファームウェア、ミドルウェアまたはマイクロコードで実現するとき、必要なタスクを実行するためのプログラムコードまたはコードセグメントは、マシン読取可能媒体に格納されていてもよい。プロセッサ(複数のプロセッサ)が必要なタスクを実行してもよい。
上述の明細書では、本発明の局面を、その具体的な実施形態を参照しながら説明しているが、本発明がこれらの実施形態に限定される訳ではないことを当業者は認識するであろう。上記発明の各種特徴および局面は、個別に使用されてもよく、またはともに使用されてもよい。さらに、実施形態は、本明細書のより広い精神および範囲から逸脱することなく、本明細書に記載の環境およびアプリケーションを超える、任意の数の環境およびアプリケーションで利用することができる。したがって、本明細書および図面は、限定的なものではなく例示的なものであるとみなされねばならない。
加えて、説明のために、方法は特定の順序で記載されている。代替実施形態においてこれらの方法は記載されている順序と異なる順序で実行され得ることが理解されるはずである。上記方法は、ハードウェアコンポーネントによって実行されてもよく、またはマシン実行可能命令のシーケンスで実施されてもよいことも、理解されるはずである。マシン実行可能命令は、当該命令でプログラミングされた汎用もしくは専用プロセッサまたは論理回路のようなマシンに当該方法を実行させるために使用することができる。これらのマシン実行可能命令は、CD-ROMもしくはその他のタイプの光ディスク、フロッピー(登録商標)ディスク、ROM、RAM、EPROM、EEPROM、磁気もしくは光カード、フラッシュメモリ、または、電子命令を格納するのに適したその他のタイプのマシン読取可能媒体等の、1つ以上のマシン読取可能媒体に、格納されてもよい。これに代えて、当該方法はハードウェアとソフトウェアとの組み合わせによって実行されてもよい。

Claims (20)

  1. コンテナ環境におけるコンテナ化されたサービスのランタイムデバッグを提供する方法であって、前記方法は、1つ以上のプロセッサが1つ以上のメモリデバイスに格納される命令を実行することによって実施され、
    前記方法は、
    前記1つ以上のプロセッサが、コンテナ環境において、サービスを求める要求を受けるステップを含み、
    前記コンテナ環境は、サービスメッシュと、複数のコンテナにカプセル化された複数のサービスとを含み、
    前記サービスは、第1の1つ以上のコンテナにカプセル化され、前記方法はさらに、
    前記1つ以上のプロセッサが、前記要求は前記サービスのデバッグインスタンスにルーティングされねばならないと判断するステップと、
    前記1つ以上のプロセッサが、前記サービスの前記デバッグインスタンスをインスタンス化するステップとを含み、前記デバッグインスタンスは、第2の1つ以上のコンテナにカプセル化され、
    前記サービスを実現するコードと、
    1つ以上のデバッグユーティリティとを含み、前記方法はさらに、
    前記1つ以上のプロセッサが、前記サービスメッシュを通じて、前記要求を前記デバッグインスタンスにルーティングするステップを含む、方法。
  2. 前記第1の1つ以上のコンテナは、コンテナポッドを構成する、請求項1に記載の方法。
  3. 前記コンテナ環境は、コンテナスケジューラを含むオーケストレーションされたコンテナプラットフォームを含む、請求項1または2に記載の方法。
  4. 前記コンテナスケジューラは、前記サービスの前記デバッグインスタンスをインスタンス化させる、請求項3に記載の方法。
  5. 前記コンテナ環境は、前記サービスの前記デバッグインスタンスをインスタンス化させるアプリケーションプログラミングインターフェイス(API)レジストリを含む、請求項1から4のいずれか1項に記載の方法。
  6. 前記APIレジストリは、前記サービスの前記デバッグインスタンスの登録を受け、前記サービスの前記デバッグインスタンスのHTTPエンドポイントがAPI関数コールを通じて利用できるようにする、請求項5に記載の方法。
  7. 前記APIレジストリは、前記サービスの前記デバッグインスタンスはインスタンス化されねばならないことを示すプロパティを含む前記サービスの登録を受ける、請求項5または6に記載の方法。
  8. 1つ以上のプロセッサによって実行されると前記1つ以上のプロセッサに動作を実行させる命令を含むプログラムであって、前記動作は、
    コンテナ環境において、サービスを求める要求を受けることを含み、
    前記コンテナ環境は、サービスメッシュと、複数のコンテナにカプセル化された複数のサービスとを含み、
    前記サービスは、第1の1つ以上のコンテナにカプセル化され、前記動作はさらに、
    前記要求は前記サービスのデバッグインスタンスにルーティングされねばならないと判断することと、
    前記サービスの前記デバッグインスタンスをインスタンス化することとを含み、前記デバッグインスタンスは、第2の1つ以上のコンテナにカプセル化され、
    前記サービスを実現するコードと、
    1つ以上のデバッグユーティリティとを含み、前記動作はさらに、
    前記サービスメッシュを通じて、前記要求を前記デバッグインスタンスにルーティングすることを含む、プログラム。
  9. 前記サービスは単一のコンテナにカプセル化される、請求項8に記載のプログラム。
  10. 前記単一のコンテナはさらに、前記1つ以上のデバッグユーティリティを含む、請求項9に記載のプログラム。
  11. 前記1つ以上のデバッグユーティリティは、前記単一のコンテナ以外の少なくとも1つのコンテナにカプセル化される、請求項9に記載のプログラム。
  12. 前記1つ以上のデバッグユーティリティは、メモリ使用量またはプロセッサ使用量をモニタリングするプロセスを含む、請求項9から11のいずれか1項に記載のプログラム。
  13. 前記1つ以上のデバッグユーティリティはデバッグデーモンを含む、請求項9から12のいずれか1項に記載のプログラム。
  14. 前記サービスを実現する前記コードは、前記サービスのデバッグビルドを含む、請求項9から13のいずれか1項に記載のプログラム。
  15. 1つ以上のプロセッサと、
    1つ以上のメモリデバイスとを備えるシステムであって、前記1つ以上のメモリデバイスは、前記1つ以上のプロセッサによって実行されると前記1つ以上のプロセッサに動作を実行させる命令を含み、前記動作は、
    コンテナ環境において、サービスを求める要求を受けることを含み、
    前記コンテナ環境は、サービスメッシュと、複数のコンテナにカプセル化された複数のサービスとを含み、
    前記サービスは、第1の1つ以上のコンテナにカプセル化され、前記動作はさらに、
    前記要求は前記サービスのデバッグインスタンスにルーティングされねばならないと判断することと、
    前記サービスの前記デバッグインスタンスをインスタンス化することとを含み、前記デバッグインスタンスは、第2の1つ以上のコンテナにカプセル化され、
    前記サービスを実現するコードと、
    1つ以上のデバッグユーティリティとを含み、前記動作はさらに、
    前記サービスメッシュが、前記要求を前記デバッグインスタンスにルーティングすることを含む、システム。
  16. 前記サービスの前記デバッグインスタンスは、前記要求を受ける前にインスタンス化される、請求項15に記載のシステム。
  17. 前記サービスのデバッグインスタンスは、前記要求を受けたことに応じてインスタンス化される、請求項15に記載のシステム。
  18. 前記要求は前記サービスのデバッグインスタンスにルーティングされねばならないと判断することは、前記要求のソースを特定することを含む、請求項15から17のいずれか1項に記載のシステム。
  19. 前記要求は前記サービスのデバッグインスタンスにルーティングされねばならないと判断することは、前記要求をデバッグ要求として指定する前記要求におけるヘッダを認識することを含む、請求項15から17のいずれか1項に記載のシステム。
  20. 前記要求は、前記サービスの他の要求のルーティングを妨害することなく、前記サービスの前記デバッグインスタンスに転送される、請求項15から19のいずれか1項に記載のシステム。
JP2020518500A 2017-09-30 2018-09-28 デプロイされたコンテナプラットフォームにおけるインスタンスのリアルタイムデバッグ Active JP7203096B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201762566351P 2017-09-30 2017-09-30
US62/566,351 2017-09-30
PCT/US2018/053628 WO2019068037A1 (en) 2017-09-30 2018-09-28 REAL TIME DEBUGGING UNITS IN A PLATFORM DEPLOYED WITH CONTAINERS

Publications (3)

Publication Number Publication Date
JP2020536318A JP2020536318A (ja) 2020-12-10
JP2020536318A5 JP2020536318A5 (ja) 2021-09-30
JP7203096B2 true JP7203096B2 (ja) 2023-01-12

Family

ID=63963482

Family Applications (8)

Application Number Title Priority Date Filing Date
JP2020518513A Active JP7493450B2 (ja) 2017-09-30 2018-09-28 コンテナのグループの動的マイグレーション
JP2020518519A Active JP7196164B2 (ja) 2017-09-30 2018-09-28 Apiレジストリにおけるバックエンドサービスエンドポイントからapi関数へのバインディング
JP2020518487A Active JP7182618B2 (ja) 2017-09-30 2018-09-28 マイクロサービスの構成および管理を可能にするapiリポジトリ
JP2020518526A Active JP7246381B2 (ja) 2017-09-30 2018-09-28 環境要件に基づくコンテナのデプロイメント
JP2020518500A Active JP7203096B2 (ja) 2017-09-30 2018-09-28 デプロイされたコンテナプラットフォームにおけるインスタンスのリアルタイムデバッグ
JP2022185721A Pending JP2023027098A (ja) 2017-09-30 2022-11-21 マイクロサービスの構成および管理を可能にするapiリポジトリ
JP2022199646A Active JP7481421B2 (ja) 2017-09-30 2022-12-14 Apiレジストリにおけるバックエンドサービスエンドポイントからapi関数へのバインディング
JP2023115382A Pending JP2023139086A (ja) 2017-09-30 2023-07-13 コンテナのグループの動的マイグレーション

Family Applications Before (4)

Application Number Title Priority Date Filing Date
JP2020518513A Active JP7493450B2 (ja) 2017-09-30 2018-09-28 コンテナのグループの動的マイグレーション
JP2020518519A Active JP7196164B2 (ja) 2017-09-30 2018-09-28 Apiレジストリにおけるバックエンドサービスエンドポイントからapi関数へのバインディング
JP2020518487A Active JP7182618B2 (ja) 2017-09-30 2018-09-28 マイクロサービスの構成および管理を可能にするapiリポジトリ
JP2020518526A Active JP7246381B2 (ja) 2017-09-30 2018-09-28 環境要件に基づくコンテナのデプロイメント

Family Applications After (3)

Application Number Title Priority Date Filing Date
JP2022185721A Pending JP2023027098A (ja) 2017-09-30 2022-11-21 マイクロサービスの構成および管理を可能にするapiリポジトリ
JP2022199646A Active JP7481421B2 (ja) 2017-09-30 2022-12-14 Apiレジストリにおけるバックエンドサービスエンドポイントからapi関数へのバインディング
JP2023115382A Pending JP2023139086A (ja) 2017-09-30 2023-07-13 コンテナのグループの動的マイグレーション

Country Status (5)

Country Link
US (8) US10838788B2 (ja)
EP (5) EP3688579A1 (ja)
JP (8) JP7493450B2 (ja)
CN (7) CN111279309A (ja)
WO (5) WO2019068029A1 (ja)

Families Citing this family (182)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8560604B2 (en) 2009-10-08 2013-10-15 Hola Networks Ltd. System and method for providing faster and more efficient data communication
US9225638B2 (en) 2013-05-09 2015-12-29 Vmware, Inc. Method and system for service switching using service tags
US9241044B2 (en) 2013-08-28 2016-01-19 Hola Networks, Ltd. System and method for improving internet communication by using intermediate nodes
US11296930B2 (en) 2014-09-30 2022-04-05 Nicira, Inc. Tunnel-enabled elastic service model
US9935827B2 (en) 2014-09-30 2018-04-03 Nicira, Inc. Method and apparatus for distributing load among a plurality of service nodes
US10594743B2 (en) 2015-04-03 2020-03-17 Nicira, Inc. Method, apparatus, and system for implementing a content switch
US11057446B2 (en) 2015-05-14 2021-07-06 Bright Data Ltd. System and method for streaming content from multiple servers
US11824863B2 (en) * 2016-11-03 2023-11-21 Nicira, Inc. Performing services on a host
US10447811B2 (en) * 2017-07-18 2019-10-15 Citrix Systems, Inc. Cloud to on-premises debug service routing
EP3770773B1 (en) 2017-08-28 2024-01-24 Bright Data Ltd. Method for improving content fetching by selecting tunnel devices
US11947489B2 (en) 2017-09-05 2024-04-02 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
JP7493450B2 (ja) 2017-09-30 2024-05-31 オラクル・インターナショナル・コーポレイション コンテナのグループの動的マイグレーション
US10805181B2 (en) 2017-10-29 2020-10-13 Nicira, Inc. Service operation chaining
US11792284B1 (en) * 2017-11-27 2023-10-17 Lacework, Inc. Using data transformations for monitoring a cloud compute environment
US11582168B2 (en) 2018-01-11 2023-02-14 Robin Systems, Inc. Fenced clone applications
US11748203B2 (en) * 2018-01-11 2023-09-05 Robin Systems, Inc. Multi-role application orchestration in a distributed storage system
US11392363B2 (en) 2018-01-11 2022-07-19 Robin Systems, Inc. Implementing application entrypoints with containers of a bundled application
US10805192B2 (en) 2018-03-27 2020-10-13 Nicira, Inc. Detecting failure of layer 2 service using broadcast messages
US11128530B2 (en) 2018-03-29 2021-09-21 Hewlett Packard Enterprise Development Lp Container cluster management
US10942788B2 (en) 2018-06-15 2021-03-09 Vmware, Inc. Policy constraint framework for an sddc
US10812337B2 (en) 2018-06-15 2020-10-20 Vmware, Inc. Hierarchical API for a SDDC
US11023328B2 (en) 2018-07-30 2021-06-01 Robin Systems, Inc. Redo log for append only storage scheme
US11595250B2 (en) 2018-09-02 2023-02-28 Vmware, Inc. Service insertion at logical network gateway
US10805154B2 (en) * 2018-10-16 2020-10-13 Hartford Fire Insurance Company Secure configuration management system
US10747556B2 (en) * 2018-10-18 2020-08-18 Sap Se Serverless function as a service (FAAS)
US11036439B2 (en) 2018-10-22 2021-06-15 Robin Systems, Inc. Automated management of bundled applications
US10846078B2 (en) * 2018-11-06 2020-11-24 Sap Se Synchronization of master data across multiple cloud-based systems
US11457080B1 (en) * 2018-11-23 2022-09-27 Amazon Technologies, Inc. Service mesh management
US20200167215A1 (en) * 2018-11-28 2020-05-28 Centurylink Intellectual Property Llc Method and System for Implementing an Application Programming Interface Automation Platform
US11243813B2 (en) * 2018-11-28 2022-02-08 International Business Machines Corporation Process as a network service hub
US10715388B2 (en) * 2018-12-10 2020-07-14 Sap Se Using a container orchestration service for dynamic routing
US11381476B2 (en) 2018-12-11 2022-07-05 Sap Se Standardized format for containerized applications
US11212366B2 (en) 2018-12-11 2021-12-28 Sap Se Kubernetes as a distributed operating system for multitenancy/multiuser
US10700949B1 (en) * 2018-12-13 2020-06-30 Sap Se Stacking of tentant-aware services
CN109743367B (zh) * 2018-12-24 2021-08-17 青岛海信智能商用系统股份有限公司 服务处理方法、装置、电子设备及可读存储介质
US10962946B2 (en) * 2018-12-31 2021-03-30 Johnson Controls Technology Company Building automation system with microservice architecture to support multi-node on-premise bas server
US11018956B2 (en) * 2019-01-18 2021-05-25 Fidelity Information Services, Llc Systems and methods for rapid booting and deploying of an enterprise system in a cloud environment
US11038926B2 (en) * 2019-01-23 2021-06-15 Vmware, Inc. System and method for embedding infrastructure security services into management nodes
US10860364B2 (en) * 2019-01-23 2020-12-08 Vmware, Inc. Containerized management services with high availability
US11003482B2 (en) 2019-02-22 2021-05-11 Vmware, Inc. Service proxy operations
EP4236263A3 (en) 2019-02-25 2023-09-06 Bright Data Ltd. System and method for url fetching retry mechanism
US11019157B2 (en) * 2019-03-06 2021-05-25 At&T Intellectual Property I, L.P. Connectionless service and other services for devices using microservices in 5G or other next generation communication systems
US10942855B2 (en) * 2019-03-18 2021-03-09 Microsoft Technology Licensing, Llc Contextual loading based on dynamic context
US11086725B2 (en) 2019-03-25 2021-08-10 Robin Systems, Inc. Orchestration of heterogeneous multi-role applications
EP3935792A4 (en) 2019-04-02 2022-11-30 Bright Data Ltd. SYSTEM AND METHOD FOR MANAGING A NON-DIRECT URL RETRACTION SERVICE
CN110018962A (zh) * 2019-04-11 2019-07-16 重庆猪八戒知识产权服务有限公司 基于分布式服务框架和注册中心的服务调试方法及系统
US11256434B2 (en) 2019-04-17 2022-02-22 Robin Systems, Inc. Data de-duplication
US11416285B1 (en) * 2019-04-30 2022-08-16 Splunk Inc. Efficient and secure scalable-two-stage data collection
DE102019112485A1 (de) * 2019-05-13 2020-11-19 Eberhard-Karls-Universität Tübingen Verfahren zum selektiven Ausführen eines Containers
US10911558B1 (en) * 2019-05-15 2021-02-02 Pivotal Software, Inc. On-demand network segmentation
WO2020234792A1 (en) * 2019-05-21 2020-11-26 Politecnico Di Milano An fpga-as-a-service system for accelerated serverless computing
CN110162405A (zh) * 2019-05-31 2019-08-23 福建南威软件有限公司 一种自动服务发现与负载均衡的方法及系统
CN110266679B (zh) * 2019-06-14 2023-02-28 腾讯科技(成都)有限公司 容器网络隔离方法及装置
TW202101322A (zh) * 2019-06-19 2021-01-01 和碩聯合科技股份有限公司 管理軟體服務的方法及伺服器
US11681278B2 (en) * 2019-06-19 2023-06-20 Honeywell International Inc. High availability for container based control execution
US11507880B2 (en) * 2019-06-25 2022-11-22 Kyndryl, Inc. Automatic and continuous monitoring and remediation of API integrations
CN112187841B (zh) * 2019-07-02 2022-07-08 北京百度网讯科技有限公司 基于SaaS平台的服务托管方法、装置、电子设备及存储介质
US11422785B2 (en) * 2019-07-23 2022-08-23 Paypal, Inc. Container orchestration framework
US11411733B1 (en) * 2019-08-08 2022-08-09 Citibank, N.A. Systems and methods for identity and access control
US11226847B2 (en) 2019-08-29 2022-01-18 Robin Systems, Inc. Implementing an application manifest in a node-specific manner using an intent-based orchestrator
US11520650B2 (en) 2019-09-05 2022-12-06 Robin Systems, Inc. Performing root cause analysis in a multi-role application
US11249851B2 (en) 2019-09-05 2022-02-15 Robin Systems, Inc. Creating snapshots of a storage volume in a distributed storage system
US10972548B2 (en) * 2019-09-09 2021-04-06 International Business Machines Corporation Distributed system deployment
US10965752B1 (en) * 2019-09-13 2021-03-30 Google Llc Live migration of clusters in containerized environments
US11714638B2 (en) * 2019-09-18 2023-08-01 International Business Machines Corporation Availability level-based service management
US11176245B2 (en) 2019-09-30 2021-11-16 International Business Machines Corporation Protecting workloads in Kubernetes
US11347684B2 (en) 2019-10-04 2022-05-31 Robin Systems, Inc. Rolling back KUBERNETES applications including custom resources
US11113158B2 (en) 2019-10-04 2021-09-07 Robin Systems, Inc. Rolling back kubernetes applications
US11140218B2 (en) 2019-10-30 2021-10-05 Vmware, Inc. Distributed service chain across multiple clouds
US11157304B2 (en) * 2019-11-01 2021-10-26 Dell Products L.P. System for peering container clusters running on different container orchestration systems
CN112783642A (zh) * 2019-11-11 2021-05-11 阿里巴巴集团控股有限公司 容器内逻辑配置方法、设备以及计算机可读介质
US11347491B2 (en) * 2019-11-15 2022-05-31 Mastercard International Incorporated Containerized application deployment
WO2021095943A1 (ko) * 2019-11-15 2021-05-20 대구대학교 산학협력단 서비스 프로파일을 고려한 컨테이너의 배치 방법
US11403188B2 (en) 2019-12-04 2022-08-02 Robin Systems, Inc. Operation-level consistency points and rollback
CN111193783B (zh) * 2019-12-19 2022-08-26 新浪网技术(中国)有限公司 一种服务访问的处理方法及装置
CN114846444A (zh) * 2019-12-19 2022-08-02 皇家飞利浦有限公司 基于动态要求的动态个性化平台生成
US11397630B2 (en) 2020-01-02 2022-07-26 Kyndryl, Inc. Fault detection and correction of API endpoints in container orchestration platforms
US11216155B2 (en) * 2020-01-06 2022-01-04 Fmr Llc Systems and methods for data processing
US11659061B2 (en) 2020-01-20 2023-05-23 Vmware, Inc. Method of adjusting service function chains to improve network performance
US11301285B1 (en) * 2020-01-30 2022-04-12 Parallels International Gmbh Methods and systems for seamless virtual machine changing for software applications
CN111615066B (zh) * 2020-02-07 2021-07-16 中国海洋大学 一种基于广播的分布式微服务注册及调用方法
CN111367659B (zh) * 2020-02-24 2022-07-12 苏州浪潮智能科技有限公司 一种Kubernetes中节点的资源管理方法、设备以及介质
US11210205B2 (en) * 2020-02-28 2021-12-28 Sap Se Application debugging
US11409555B2 (en) * 2020-03-12 2022-08-09 At&T Intellectual Property I, L.P. Application deployment in multi-cloud environment
US11762742B2 (en) 2020-03-31 2023-09-19 Honeywell International Inc. Process control system with different hardware architecture controller backup
WO2021196080A1 (en) 2020-04-01 2021-10-07 Vmware Information Technology (China) Co., Ltd. Auto deploying network elements for heterogeneous compute elements
US11438257B2 (en) 2020-04-06 2022-09-06 Vmware, Inc. Generating forward and reverse direction connection-tracking records for service paths at a network edge
CN111541746B (zh) * 2020-04-09 2022-04-15 哈尔滨工业大学 面向用户需求变化的多版本并存的微服务自适应方法
US11853330B1 (en) * 2020-04-30 2023-12-26 Splunk Inc. Data structure navigator
US11144362B1 (en) * 2020-05-05 2021-10-12 International Business Machines Corporation Container scheduling in a container orchestration system
US11108638B1 (en) 2020-06-08 2021-08-31 Robin Systems, Inc. Health monitoring of automatically deployed and managed network pipelines
US11528186B2 (en) 2020-06-16 2022-12-13 Robin Systems, Inc. Automated initialization of bare metal servers
US11336588B2 (en) 2020-06-26 2022-05-17 Red Hat, Inc. Metadata driven static determination of controller availability
US11645193B2 (en) * 2020-07-07 2023-05-09 International Business Machines Corporation Heterogeneous services for enabling collaborative logic design and debug in aspect oriented hardware designing
US11501026B2 (en) * 2020-07-13 2022-11-15 Avaya Management L.P. Method to encrypt the data at rest for data residing on Kubernetes persistent volumes
US10901704B1 (en) * 2020-07-19 2021-01-26 Xmodn Security, Llc Computer-aided design, simulation, and code generation for cryptography
CN111858370B (zh) * 2020-07-28 2023-12-26 浪潮云信息技术股份公司 DevOps的实现方法、装置、计算机可读介质
US11803408B2 (en) 2020-07-29 2023-10-31 Vmware, Inc. Distributed network plugin agents for container networking
US11863352B2 (en) 2020-07-30 2024-01-02 Vmware, Inc. Hierarchical networking for nested container clusters
US11153227B1 (en) 2020-08-05 2021-10-19 International Business Machines Corporation Managing communication between microservices
US11805076B2 (en) * 2020-08-21 2023-10-31 Kyndryl, Inc. Microservice placement in hybrid multi-cloud using graph matching
CN111857977B (zh) * 2020-09-21 2020-12-25 腾讯科技(深圳)有限公司 弹性伸缩方法、装置、服务器和存储介质
CN112256384B (zh) * 2020-09-22 2023-10-24 杭州指令集智能科技有限公司 基于容器技术的服务集合处理方法、装置和计算机设备
US11740980B2 (en) 2020-09-22 2023-08-29 Robin Systems, Inc. Managing snapshot metadata following backup
US11989084B2 (en) 2020-09-23 2024-05-21 Honeywell International Inc. Self-healing process control system
CN112130880B (zh) * 2020-09-27 2022-12-02 深圳平安医疗健康科技服务有限公司 微服务的发布方法、装置、计算机设备及存储介质
EP3979081B1 (de) 2020-09-30 2023-06-07 Siemens Aktiengesellschaft Verfahren zum testen einer microservice-anwendung
CN112035220A (zh) * 2020-09-30 2020-12-04 北京百度网讯科技有限公司 开发机操作任务的处理方法、装置、设备以及存储介质
US11743188B2 (en) 2020-10-01 2023-08-29 Robin Systems, Inc. Check-in monitoring for workflows
US11347622B1 (en) 2020-10-06 2022-05-31 Splunk Inc. Generating metrics values for teams of microservices of a microservices-based architecture
US11321217B1 (en) * 2020-10-06 2022-05-03 Splunk Inc. Generating metrics values at component levels of a monolithic application and of a microservice of a microservices-based architecture
US11271895B1 (en) 2020-10-07 2022-03-08 Robin Systems, Inc. Implementing advanced networking capabilities using helm charts
US11456914B2 (en) 2020-10-07 2022-09-27 Robin Systems, Inc. Implementing affinity and anti-affinity with KUBERNETES
US11475078B2 (en) 2020-10-19 2022-10-18 Clearwater Analytics, Llc Endpoint identifier for application programming interfaces and web services
CN112269738B (zh) * 2020-10-26 2023-04-07 杭州光通天下网络科技有限公司 Ctf靶场调试方法、装置、电子设备及介质
CN112349165A (zh) * 2020-10-29 2021-02-09 国网甘肃省电力公司 基于调控云的电网调度员仿真培训方法、装置及系统
CN112328359B (zh) * 2020-10-30 2022-06-17 烽火通信科技股份有限公司 避免容器集群启动拥塞的调度方法和容器集群管理平台
US11874938B2 (en) 2020-11-03 2024-01-16 Honeywell International Inc. Admittance mechanism
US11750451B2 (en) 2020-11-04 2023-09-05 Robin Systems, Inc. Batch manager for complex workflows
EP4002098A1 (de) * 2020-11-18 2022-05-25 Deutsche Telekom AG Verfahren zur bereitstellung der funktionalität von mehreren mikrodiensten und/oder der funktionalität von mehreren software-containern mittels einer cloud-infrastruktur, system, verwendungssystem, computerprogramm und computerlesbares medium
CN112486495A (zh) * 2020-11-23 2021-03-12 珠海格力电器股份有限公司 一种工业视觉算法部署方法、系统及存储介质
KR102439056B1 (ko) * 2020-11-24 2022-09-01 주식회사 솔박스 노드 레이블링 방법 및 장치
CN112328297B (zh) * 2020-11-30 2021-04-20 北京技德系统技术有限公司 一种在Linux上兼容运行的Android系统的升级方法与装置
US11556361B2 (en) 2020-12-09 2023-01-17 Robin Systems, Inc. Monitoring and managing of complex multi-role applications
KR102480731B1 (ko) * 2020-12-09 2022-12-22 대구대학교 산학협력단 클라우드 컴퓨팅의 다중 노드 환경을 위한 배치 스케줄링 장치 및 배치 스케줄링 방법
KR102466231B1 (ko) * 2020-12-09 2022-11-10 대구대학교 산학협력단 오케스트레이터 환경에서의 프로세스 마이그레이션을 위한 컨테이너 관리 장치 및 관리 방법
US20220188089A1 (en) * 2020-12-15 2022-06-16 Baker Hughes Holdings Llc Framework for industrial analytics
US11734043B2 (en) 2020-12-15 2023-08-22 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
US11611625B2 (en) * 2020-12-15 2023-03-21 Vmware, Inc. Providing stateful services in a scalable manner for machines executing on host computers
CN112579199A (zh) * 2020-12-15 2021-03-30 北京动力机械研究所 基于开放式数据平台的处理方法及装置
JP2022095016A (ja) * 2020-12-16 2022-06-28 株式会社日立製作所 演算装置、共通リソース生成方法
CN112511560B (zh) * 2020-12-21 2021-10-22 北京云思畅想科技有限公司 一种基于服务网格的混合云环境下数据安全保障方法
CN112698970A (zh) * 2020-12-31 2021-04-23 北京千方科技股份有限公司 用于微服务架构的服务调用方法、装置及计算机存储介质
US11223522B1 (en) * 2021-01-15 2022-01-11 Dell Products L.P. Context-based intelligent re-initiation of microservices
US11567740B2 (en) * 2021-02-11 2023-01-31 Oracle International Corporation Techniques for building and optimizing contact service centers
CN112631739A (zh) * 2021-03-09 2021-04-09 北京世纪好未来教育科技有限公司 容器控制方法及装置、介质、计算机设备
US11671401B2 (en) 2021-03-25 2023-06-06 Cisco Technology, Inc. Providing persistent external internet protocol address for extra-cluster services
US20220309164A1 (en) * 2021-03-29 2022-09-29 International Business Machines Corporation Secure placement of processing elements
US11456931B1 (en) 2021-04-06 2022-09-27 Amdocs Development Limited System, method and computer program for orchestrating loosely coupled services
CN113067890B (zh) * 2021-04-07 2022-08-19 武汉光庭信息技术股份有限公司 一种适用于智能座舱的动态注册服务方法及智能座舱
CN112802457A (zh) * 2021-04-14 2021-05-14 北京世纪好未来教育科技有限公司 语音识别的方法、装置、设备和存储介质
US11768713B2 (en) * 2021-04-19 2023-09-26 Microsoft Technology Licensing, Llc Dynamic relocation of pods to optimize inter-pod networking
US11645055B2 (en) * 2021-04-29 2023-05-09 Sap Se Custom integration flow step for integration service
US20220360504A1 (en) * 2021-05-05 2022-11-10 International Business Machines Corporation Adapting microservices to multi-platform deployments
US11797282B2 (en) * 2021-05-06 2023-10-24 Red Hat, Inc. Optimizing services deployment in a cloud computing environment
US11606254B2 (en) 2021-06-11 2023-03-14 Vmware, Inc. Automatic configuring of VLAN and overlay logical switches for container secondary interfaces
US11418550B1 (en) * 2021-07-12 2022-08-16 Sap Se Service-mesh session prioritization
US20230031434A1 (en) * 2021-07-28 2023-02-02 Hewlett-Packard Development Company, L.P. Exclusion registry
IT202100021161A1 (it) * 2021-08-04 2023-02-04 Marco Simoncini Sistema di containerizzazione di workstation aziendali con interfacce utente remote a basso costo
CN113392034B (zh) * 2021-08-17 2021-10-15 北京安普诺信息技术有限公司 Api自发现方法和基于此的测试覆盖率统计方法及装置
US20230073891A1 (en) * 2021-09-09 2023-03-09 Beijing Bytedance Network Technology Co., Ltd. Multifunctional application gateway for security and privacy
US20230093868A1 (en) * 2021-09-22 2023-03-30 Ridgeline, Inc. Mechanism for real-time identity resolution in a distributed system
US11922163B2 (en) * 2021-09-24 2024-03-05 Sap Se Cloud version management for legacy on-premise application
US11841731B2 (en) 2021-09-24 2023-12-12 Sap Se Cloud plugin for legacy on-premise application
CN113672273B (zh) * 2021-10-21 2022-04-15 阿里云计算有限公司 数据处理方法、系统及设备
CN113709707B (zh) * 2021-10-29 2022-03-15 中兴通讯股份有限公司 服务网格中边车部署的方法、装置、电子设备和存储介质
US11893373B2 (en) * 2021-11-05 2024-02-06 Microsoft Technology Licensing, Llc Exposure and de-duplication of input parameters for complex Helm chart deployment
WO2022072953A1 (en) * 2021-11-17 2022-04-07 Innopeak Technology, Inc. Automatic app resource adaptation
CN114090126A (zh) * 2021-11-23 2022-02-25 浩云科技股份有限公司 一种自定义系统变量方法、装置、终端设备及存储介质
US20230171243A1 (en) * 2021-11-29 2023-06-01 Salesforce.Com, Inc. Administration of services executing in cloud platform based datacenters for web-based applications
US11907687B2 (en) * 2021-12-03 2024-02-20 Sap Se Re-usable integration component configuration in a microservice based integration service
CN114205342B (zh) * 2021-12-10 2023-05-16 易保网络技术(上海)有限公司 服务调试的路由方法、电子设备及介质
CN114253854B (zh) * 2021-12-21 2024-05-14 四川启睿克科技有限公司 基于多类型设备模拟上报数据的自动化测试方法
US20220121470A1 (en) * 2021-12-23 2022-04-21 Intel Corporation Optimizing deployment and security of microservices
US11659027B1 (en) * 2022-01-06 2023-05-23 Vmware, Inc. Multi-network/domain service discovery in a container orchestration platform
US20230231741A1 (en) 2022-01-14 2023-07-20 Vmware, Inc. Per-namespace ip address management method for container networks
DE102022200460A1 (de) * 2022-01-17 2023-07-20 Siemens Aktiengesellschaft Verfahren zur Verteilung von Rechendiensten verteilter Softwareapplikationen auf Rechenknoten eines Rechenknotennetzwerks, Verteileinrichtung und Rechenknotennetzwerk
US11915063B2 (en) 2022-04-05 2024-02-27 Red Hat, Inc. Managing a presentation mode for application programming interface functions
CN114706596B (zh) * 2022-04-11 2023-12-01 中国电信股份有限公司 容器部署方法、资源调度方法、装置、介质和电子设备
CN114938396A (zh) * 2022-05-09 2022-08-23 阿里巴巴(中国)有限公司 服务调用请求的路由方法、创建服务的方法及装置
DE102022111836A1 (de) 2022-05-11 2023-11-16 Cariad Se Verfahren und Kraftfahrzeug-Steuergerät zum Betreiben einer Containervirtualisierung mit Logging-Funktion sowie computerlesbares Speichermedium
US11711315B1 (en) 2022-05-24 2023-07-25 Red Hat, Inc. Dynamic endpoint resources discovery in Kubernetes clusters via stable URI locator for workflow services
EP4293512A1 (de) * 2022-06-14 2023-12-20 Siemens Aktiengesellschaft Verfahren zum bereitstellen einer mehrzahl von anwendungen und kommunikationssystem
KR20230174137A (ko) * 2022-06-20 2023-12-27 삼성전자주식회사 컨테이너 기반 다중 클러스터 환경에서 데이터 동기화를 위한 방법 및 장치
US20240031229A1 (en) * 2022-07-20 2024-01-25 Vmware, Inc. Synchronization of logical network configuration between multi-tenant network manager and local network manager
CN115048087A (zh) * 2022-08-15 2022-09-13 江苏博云科技股份有限公司 Kubernetes环境下实现在线IDE工具的方法、设备及存储介质
CN117857548A (zh) * 2022-09-30 2024-04-09 华为技术有限公司 一种通信方法及装置
US11848910B1 (en) 2022-11-11 2023-12-19 Vmware, Inc. Assigning stateful pods fixed IP addresses depending on unique pod identity
US11831511B1 (en) 2023-01-17 2023-11-28 Vmware, Inc. Enforcing network policies in heterogeneous systems
CN117112074B (zh) * 2023-06-19 2024-03-12 领悦数字信息技术有限公司 将http应用自动转换成无服务器函数的方法、系统和介质
CN117041330B (zh) * 2023-10-10 2023-12-15 三峡高科信息技术有限责任公司 一种基于强化学习的边缘微服务细粒度部署方法及系统
CN117390105B (zh) * 2023-12-11 2024-03-01 中核武汉核电运行技术股份有限公司 一种工业服务开放平台的服务录入方法及系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006146434A (ja) 2004-11-17 2006-06-08 Hitachi Ltd 分散アプリケーションテスト方法及び分散アプリケーションテスト装置
WO2016191639A1 (en) 2015-05-28 2016-12-01 Oracle International Corporation Automatic anomaly detection and resolution system
JP2017525232A (ja) 2014-10-30 2017-08-31 エクイニクス,インコーポレイティド クラウドベースのサービス交換をリアルタイムに構成及び管理するための相互接続プラットフォーム
WO2017165713A1 (en) 2016-03-23 2017-09-28 FogHorn Systems, Inc. Tools and methods for real-time dataflow programming language

Family Cites Families (93)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7472349B1 (en) 1999-06-01 2008-12-30 Oracle International Corporation Dynamic services infrastructure for allowing programmatic access to internet and other resources
US7401131B2 (en) * 2000-05-22 2008-07-15 Verizon Business Global Llc Method and system for implementing improved containers in a global ecosystem of interrelated services
US7159224B2 (en) 2002-04-09 2007-01-02 Sun Microsystems, Inc. Method, system, and articles of manufacture for providing a servlet container based web service endpoint
US7870241B2 (en) 2002-11-27 2011-01-11 International Business Machines Corporation Automated power control policies based on application-specific redundancy characteristics
US7284054B2 (en) 2003-04-11 2007-10-16 Sun Microsystems, Inc. Systems, methods, and articles of manufacture for aligning service containers
US7698398B1 (en) 2003-08-18 2010-04-13 Sun Microsystems, Inc. System and method for generating Web Service architectures using a Web Services structured methodology
US8346929B1 (en) 2003-08-18 2013-01-01 Oracle America, Inc. System and method for generating secure Web service architectures using a Web Services security assessment methodology
US7822826B1 (en) * 2003-12-30 2010-10-26 Sap Ag Deployment of a web service
US7500225B2 (en) * 2004-02-10 2009-03-03 Microsoft Corporation SQL server debugging in a distributed database environment
US8200823B1 (en) * 2004-03-30 2012-06-12 Oracle America, Inc. Technique for deployment and management of network system management services
WO2005106666A1 (en) * 2004-04-29 2005-11-10 International Business Machines Corporation A system and method for modeling and dynamically deploying services into a distributed networking architecture
US7877735B2 (en) * 2004-05-25 2011-01-25 Sap Ag Application cloning
US7702779B1 (en) 2004-06-30 2010-04-20 Symantec Operating Corporation System and method for metering of application services in utility computing environments
US7634759B2 (en) 2004-12-01 2009-12-15 Microsoft Corporation Distributed debugger environment
US9009181B2 (en) 2007-08-23 2015-04-14 International Business Machines Corporation Accessing objects in a service registry and repository
US20140201218A1 (en) * 2008-06-19 2014-07-17 Servicemesh, Inc. Systems and methods for providing ranked deployment options
MY164485A (en) 2009-07-20 2017-12-29 Mimos Berhad A method and system for an intelligent framework of a service orientated architecture
WO2011015488A1 (en) 2009-08-04 2011-02-10 International Business Machines Corporation Service registry policy editing user interface
US9274848B2 (en) 2009-12-03 2016-03-01 International Business Machines Corporation Optimizing cloud service delivery within a cloud computing environment
US8245083B2 (en) 2009-12-24 2012-08-14 At&T Intellectual Property I, L.P. Systems, methods, and apparatus to debug a network application
US9201762B1 (en) 2010-04-21 2015-12-01 Marvell International Ltd. Processor implemented systems and methods for reversible debugging using a replicate process system call
US9459925B2 (en) * 2010-06-23 2016-10-04 Twilio, Inc. System and method for managing a computing cluster
US8479211B1 (en) * 2010-06-29 2013-07-02 Amazon Technologies, Inc. Dynamic resource commitment management
JP2012037935A (ja) 2010-08-03 2012-02-23 Fujitsu Ltd 情報処理装置
US9483312B2 (en) * 2010-08-16 2016-11-01 International Business Machines Corporation Locating service endpoints from a service registry
US8862933B2 (en) 2011-02-09 2014-10-14 Cliqr Technologies, Inc. Apparatus, systems and methods for deployment and management of distributed computing systems and applications
US10225335B2 (en) * 2011-02-09 2019-03-05 Cisco Technology, Inc. Apparatus, systems and methods for container based service deployment
US8701128B2 (en) 2011-02-14 2014-04-15 General Electric Company Method, system and computer program product for a client application programming interface (API) in a service oriented architecture
CN102681825A (zh) 2011-03-09 2012-09-19 北京航空航天大学 服务运行容器管理系统和方法
US20120271949A1 (en) 2011-04-20 2012-10-25 International Business Machines Corporation Real-time data analysis for resource provisioning among systems in a networked computing environment
CN102223398B (zh) * 2011-05-30 2013-09-11 北京航空航天大学 一种部署在云计算环境中部署服务的方法
US8924542B1 (en) * 2011-05-31 2014-12-30 Amazon Technologies, Inc. Methods and apparatus for scalable private services
US9781205B2 (en) 2011-09-12 2017-10-03 Microsoft Technology Licensing, Llc Coordination engine for cloud selection
GB2502998A (en) 2012-06-13 2013-12-18 Ibm Automatic creation of endpoint definition documents for different environments
GB2504491A (en) * 2012-07-30 2014-02-05 Ibm Remote debug service in a cloud environment
US9563480B2 (en) * 2012-08-21 2017-02-07 Rackspace Us, Inc. Multi-level cloud computing system
US8825550B2 (en) 2012-08-23 2014-09-02 Amazon Technologies, Inc. Scaling a virtual machine instance
US10419524B2 (en) * 2012-09-07 2019-09-17 Oracle International Corporation System and method for workflow orchestration for use with a cloud computing environment
US8938053B2 (en) * 2012-10-15 2015-01-20 Twilio, Inc. System and method for triggering on platform usage
WO2014145777A1 (en) 2013-03-15 2014-09-18 Servicemesh, Inc. Systems and methods for providing ranked deployment options
JP2014197340A (ja) 2013-03-29 2014-10-16 富士ゼロックス株式会社 分散処理システム及びプログラム
US9904266B2 (en) 2013-04-25 2018-02-27 General Electric Company Real-time debugging systems and methods
US9201759B2 (en) 2013-07-26 2015-12-01 Sap Se Debugging applications in the cloud
EP3103239B1 (en) * 2014-02-07 2023-10-11 Oracle International Corporation Cloud service custom execution environment
US9678731B2 (en) * 2014-02-26 2017-06-13 Vmware, Inc. Methods and apparatus to generate a customized application blueprint
US9984158B2 (en) 2014-03-18 2018-05-29 Axis Ab Finding services in a service-oriented architecture (SOA) network
US9270553B1 (en) 2014-03-26 2016-02-23 Amazon Technologies, Inc. Dynamic service debugging in a virtual environment
JP6207463B2 (ja) 2014-05-28 2017-10-04 Kddi株式会社 Itシステムにおけるサーバの性能の抽象化方法および資源管理方法
US20170199770A1 (en) * 2014-06-23 2017-07-13 Getclouder Ltd. Cloud hosting systems featuring scaling and load balancing with containers
US10362059B2 (en) * 2014-09-24 2019-07-23 Oracle International Corporation Proxy servers within computer subnetworks
US9396091B2 (en) * 2014-09-29 2016-07-19 Sap Se End-to end, lifecycle aware, API management
US9256467B1 (en) * 2014-11-11 2016-02-09 Amazon Technologies, Inc. System for managing and scheduling containers
US9672123B2 (en) * 2014-12-31 2017-06-06 Oracle International Corporation Deploying services on application server cloud with high availability
US9462427B2 (en) 2015-01-14 2016-10-04 Kodiak Networks, Inc. System and method for elastic scaling using a container-based platform
US10007584B2 (en) 2015-01-28 2018-06-26 Red Hat, Inc. Automated container migration in a platform-as-a-service system
US9930103B2 (en) * 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9727374B2 (en) * 2015-04-21 2017-08-08 International Business Machines Corporation Temporary virtual machine migration for improved software application warmup
US9515993B1 (en) 2015-05-13 2016-12-06 International Business Machines Corporation Automated migration planning for moving into a setting of multiple firewalls
US9632914B2 (en) 2015-05-21 2017-04-25 International Business Machines Corporation Error diagnostic in a production environment
US10503532B2 (en) 2015-06-26 2019-12-10 Vmware, Inc. Creating a virtual machine clone of the host computing device and handling of virtual machine clone requests via an I/O filter
JP6374845B2 (ja) * 2015-08-07 2018-08-15 株式会社日立製作所 計算機システム及びコンテナ管理方法
US10656929B2 (en) * 2015-08-11 2020-05-19 International Business Machines Corporation Autonomously healing microservice-based applications
US9965261B2 (en) 2015-08-18 2018-05-08 International Business Machines Corporation Dependency-based container deployment
JP6387330B2 (ja) 2015-08-21 2018-09-05 日本電信電話株式会社 管理サーバ装置及び管理プログラム
US10623514B2 (en) 2015-10-13 2020-04-14 Home Box Office, Inc. Resource response expansion
CN106603594B (zh) * 2015-10-15 2019-07-09 中国电信股份有限公司 一种分布式服务的管理方法和系统
US10348808B2 (en) * 2015-10-30 2019-07-09 International Business Machines Corporation Hybrid cloud applications
CN105893010A (zh) * 2015-11-17 2016-08-24 乐视云计算有限公司 用于容器部署的主机调度方法及系统
US11182140B2 (en) 2015-11-25 2021-11-23 Red Hat, Inc. Active representation of a composite application
US10002247B2 (en) * 2015-12-18 2018-06-19 Amazon Technologies, Inc. Software container registry container image deployment
US10261782B2 (en) 2015-12-18 2019-04-16 Amazon Technologies, Inc. Software container registry service
KR102057269B1 (ko) * 2016-01-15 2020-01-22 구글 엘엘씨 애플리케이션 컨테이너를 사용한 코드 및 종속 데이터의 전달 관리
US9733834B1 (en) * 2016-01-28 2017-08-15 Weka.IO Ltd. Congestion mitigation in a distributed storage system
US10114732B2 (en) 2016-01-29 2018-10-30 Ca, Inc. Debugging in-cloud distributed code in live load environment
US11388037B2 (en) * 2016-02-25 2022-07-12 Open Text Sa Ulc Systems and methods for providing managed services
EP3423941B1 (en) * 2016-03-04 2023-05-10 Bladelogic, Inc. Provisioning of containers for virtualized applications
US10574584B1 (en) * 2016-03-22 2020-02-25 Amazon Technologies, Inc. Controlling network device capacity
JP6680028B2 (ja) * 2016-03-24 2020-04-15 日本電気株式会社 監視システム、監視方法および監視プログラム
US9942354B1 (en) 2016-03-29 2018-04-10 Amazon Technologies, Inc. Managing service message rates in a computing service environment
US10496987B2 (en) * 2016-09-13 2019-12-03 Verizon Patent And Licensing Inc. Containerization of network services
US10942839B2 (en) 2016-10-28 2021-03-09 Ingram Micro Inc. System and method for debugging applications on a developer workstation
US10489215B1 (en) 2016-11-02 2019-11-26 Nutanix, Inc. Long-range distributed resource planning using workload modeling in hyperconverged computing clusters
US20180165177A1 (en) 2016-12-08 2018-06-14 Nutanix, Inc. Debugging distributed web service requests
CN106776212B (zh) * 2016-12-09 2020-02-25 中电科华云信息技术有限公司 容器集群部署多进程应用的监管系统及方法
US10574736B2 (en) 2017-01-09 2020-02-25 International Business Machines Corporation Local microservice development for remote deployment
US10601871B2 (en) 2017-01-18 2020-03-24 International Business Machines Corporation Reconfiguration of security requirements for deployed components of applications
US20180288740A1 (en) 2017-03-28 2018-10-04 Telefonaktiebolaget Lm Ericsson (Publ) Technique for Allocating Radio Resources in a Radio Access Network
US10356214B2 (en) * 2017-03-29 2019-07-16 Ca, Inc. Composing monolithic applications based on multi-container applications
US11038947B2 (en) 2017-04-21 2021-06-15 Microsoft Technology Licensing, Llc Automated constraint-based deployment of microservices to cloud-based server sets
US10225140B2 (en) 2017-04-26 2019-03-05 Oracle International Corporation Portable instance provisioning framework for cloud services
US11343352B1 (en) 2017-06-21 2022-05-24 Amazon Technologies, Inc. Customer-facing service for service coordination
JP7493450B2 (ja) 2017-09-30 2024-05-31 オラクル・インターナショナル・コーポレイション コンテナのグループの動的マイグレーション
US10521246B1 (en) * 2018-06-13 2019-12-31 International Business Machines Corporation Application programming interface endpoint analysis and modification

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006146434A (ja) 2004-11-17 2006-06-08 Hitachi Ltd 分散アプリケーションテスト方法及び分散アプリケーションテスト装置
JP2017525232A (ja) 2014-10-30 2017-08-31 エクイニクス,インコーポレイティド クラウドベースのサービス交換をリアルタイムに構成及び管理するための相互接続プラットフォーム
WO2016191639A1 (en) 2015-05-28 2016-12-01 Oracle International Corporation Automatic anomaly detection and resolution system
WO2017165713A1 (en) 2016-03-23 2017-09-28 FogHorn Systems, Inc. Tools and methods for real-time dataflow programming language

Also Published As

Publication number Publication date
US10599500B2 (en) 2020-03-24
US20190102238A1 (en) 2019-04-04
US20220012111A1 (en) 2022-01-13
EP3688593A1 (en) 2020-08-05
CN114035975A (zh) 2022-02-11
CN111279321B (zh) 2021-11-05
JP7196164B2 (ja) 2022-12-26
JP2023139086A (ja) 2023-10-03
JP2023040001A (ja) 2023-03-22
JP7246381B2 (ja) 2023-03-27
WO2019068024A1 (en) 2019-04-04
EP3688592A1 (en) 2020-08-05
JP7481421B2 (ja) 2024-05-10
US20200218589A1 (en) 2020-07-09
EP3688592B1 (en) 2024-04-03
WO2019068036A1 (en) 2019-04-04
JP7493450B2 (ja) 2024-05-31
CN111263933A (zh) 2020-06-09
US20190102239A1 (en) 2019-04-04
US10824489B2 (en) 2020-11-03
JP2020536319A (ja) 2020-12-10
WO2019068037A1 (en) 2019-04-04
CN111279309A (zh) 2020-06-12
WO2019068029A1 (en) 2019-04-04
US10838788B2 (en) 2020-11-17
US20190102157A1 (en) 2019-04-04
EP3688594B1 (en) 2023-10-25
US20190102280A1 (en) 2019-04-04
US20200226013A1 (en) 2020-07-16
JP2020536316A (ja) 2020-12-10
US11132241B2 (en) 2021-09-28
CN111279320A (zh) 2020-06-12
US20190102226A1 (en) 2019-04-04
EP3688594A1 (en) 2020-08-05
EP3688579A1 (en) 2020-08-05
JP2020536321A (ja) 2020-12-10
US11681573B2 (en) 2023-06-20
EP3688595A1 (en) 2020-08-05
CN113641460A (zh) 2021-11-12
JP7182618B2 (ja) 2022-12-02
WO2019068031A1 (en) 2019-04-04
EP3688593B1 (en) 2022-06-22
JP2023027098A (ja) 2023-03-01
JP2020536318A (ja) 2020-12-10
JP2020536320A (ja) 2020-12-10
CN111279320B (zh) 2021-09-17
US11755393B2 (en) 2023-09-12
CN111279319A (zh) 2020-06-12
CN111279321A (zh) 2020-06-12
US10599499B2 (en) 2020-03-24

Similar Documents

Publication Publication Date Title
JP7203096B2 (ja) デプロイされたコンテナプラットフォームにおけるインスタンスのリアルタイムデバッグ

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210817

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210817

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220726

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220729

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221020

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20221206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20221226

R150 Certificate of patent or registration of utility model

Ref document number: 7203096

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150