IBM SmarterCloud Enterprise のクラウド・サービス・フレームワーク (Cloud Services Framework: CSF) は、サービスを管理する手段を提供します。ここで言うサービスとは、SaaS (Software as a Service)、または Paas (Platform as a Service)、あるいは SmarterCloud 上でホストされる管理オファリングを指しています。ユーザーが相互に依存するリソースをデプロイして管理したり、VM インスタンスのプロビジョニングを調整したりする場合には、SmarterCloud ポータルからこれらのサービスにアクセスして利用します。
サービスを記述するために使用するのは、サービス記述子です。サービス記述子に複数のモデルを含め、これらのモデルによってクラウド・サービス・フレームワーク内でそのサービスを自動化するという仕組みです。サービス記述子については、「SmartCloud Customizing Services Guide」で詳しく説明しています (「参考文献」を参照)。
この記事でマッシュアップ・サービスを作成するために使用するのは、以前に掲載された全 2 回からなる連載「JSONP によるクロスドメインの通信」(「参考文献」を参照) で取り上げられたサンプル・マッシュアップです。その連載では、ブラウザーの同一生成元ポリシーによる制約を回避し、サード・パーティーのソースからのデータを組み合わせて、Yahoo! Query Language と jQuery を使って表示する方法を説明しています。
クラウド・サービス・フレームワーク (Cloud Services Framework: CSF) は SmarterCloud のエコシステムであり、開発費および管理費を削減する定義済みおよび統合済みのサービスを、企業のお客様、IBM、そして独立系ソフトウェア・ベンダー (Independent Software Vendor: ISV) が提供できるようにします。CSF は、クラウド上でサービスの提供、開発、管理、および課金を行うためのプラットフォームです。独立系ソフトウェア・ベンダーは、Rational Asset Manager 内にテンプレート・サービス・アセットを作成し、そのサービス・オファリングを CSF API に登録することによって、新たなサービス・オファリングを作成することができます。作成したサービス・オファリングはすぐに、お客様の企業のアカウントに含まれるユーザーがテストすることができます。テストが完了してプロモートされたサービス・オファリングは、他のユーザーにも使用可能になります。「Provider's Guide for Images, Services and Software Bundles」を参照してください (「参考文献」を参照)。
サービスは SmarterCloud 上にホストされる管理オファリングであり、ユーザーは SmarterCloud ポータルからサービスにアクセスすることができます。
- 「Control Panel (コントロール・パネル)」の「Service Instances (サービス・インスタンス)」タブでは、サービス・オファリングからサービス・インスタンスを作成することができます。
- サービス・オファリングにはサービス記述子が必要です。サービス記述子とは、そのサービスとサービス・リソースの定義が含まれるアーカイブのことです。
- クラウド・ユーザーがサービスを使用できるようにするには、そのサービスを SmarterCloud の「Asset Catalog (アセット・カタログ)」にオファリングとして登録する必要があります。
SmarterCloud インフラストラクチャーをサポートするモデルを使用してサービスを記述し、そのサービス記述子を提供することでサービスを自動化できるようになります。サービスがすべてのモデルを指定するとは限りませんが、指定できるモデルには以下のものがあります。
- 情報 (Information) モデルは必須です。このモデルは、サービスを識別する情報 (サービスの省略名、説明、グラフィック・アイコン、サービス・プロバイダー名、連絡先、サービス・タイプなど) を提供します。
- 構造 (Structural) モデルは、リソースを特定します。このモデルには、サービスのプロビジョニング時に割り当てるリソース (インスタンス、IP アドレス、キー、ストレージ・リソースなど) を指定します。
- 運用 (Operational) モデルは、サービス・インスタンスのライフサイクル中に行われる操作のワークフローを特定します。このモデルには、操作のプロビジョニング、デプロビジョニング (プロビジョニング解除)、詳細、管理に使用する Java スクリプト・ファイルの名前を指定します。バックエンドのプロビジョニング・モードも使用可能です。つまり、構造モデルから派生する依存関係に基づき、バックエンドで暗黙的にワークフローをプロビジョニング、およびデプロビジョニングすることができます。
- データ (Data) モデルは、入力パラメーターと出力パラメーターを定義します。
- ライセンス交付 (Licensing) モデルでは、エンド・ユーザーの使用条件を指定することができます。
- クラウド関連 (Cloud Concerns) モデルは、サービスに対するデータ・センターの可用性を指定します。
ある特定のサービス・オファリングをモデル化するサービス記述子の一部として、サービス・インスタンスをプロビジョニングまたはデプロビジョニング (プロビジョニング解除) するクライアント・サイドの JavaScript を作成して、ユーザー資格情報を使用したサービス・インスタンス所有者のブラウザー・セッションで実行することができます。サービス・インスタンスのプロビジョニングおよびデプロビジョニングをするためのブラウザー・ベースのスクリプトの開発を支援するために、ibmcloud.csf.Deployer ライブラリーには、コンポーネント・リソースをプロビジョニングおよびデプロビジョニングするための単純な JavaScript API が用意されています。さらに、特定のシーケンスで操作を行うための手段として、このライブラリーでコンポーネントが完全にプロビジョニングまたはデプロビジョニングされてからスクリプトの残りの部分が続行されるようにすることもできます。このデプロイヤー・ライブラリーの (この記事を執筆している時点での) 最新バージョンは、キー、IP アドレス、ボリューム、インスタンスをサポートしています。
詳細を表示するビューを更新するには、詳細ビュー・スクリプトを使用します。これによってポータルには、サービス・インスタンスのグリッドよりも下で、かつ「Getting Started (始めに)」ビューよりも上の領域に、任意のコンテンツを表示することができます。
管理スクリプトを使用すると、サービスのユーザーは、適切なユーザー・インターフェースにナビゲートしてサービス・インスタンスを管理することができます。
サービス記述子、モデル、ビュー、デプロイヤー・ライブラリーについての詳細は、「Customizing Services Guide」を参照してください (「参考文献」を参照)。
クラウド・サービス・フレームワークでは、ユーザーが自分で作成したサービス・インスタンスを表示できるだけでなく、該当するアカウントの管理ユーザーが一般ユーザーによって作成されたサービス・インスタンスを表示することもできます。ただし、サービス・インスタンスを管理できるのは、そのインスタンスを作成したユーザー自身のみです。
サービス・オファリングを SmarterCloud ポータルに表示するには、次の 2 つのステップを行う必要があります。
- サービス・テンプレート・アセットを Rational Asset Manager の「Asset catalog (アセット・カタログ)」にインポートする
- インポートしたアセットを、REST API を使用して登録する
この 2 つのステップはそれぞれ、図 1 に示されている「Create (作成)」、「Register (登録)」に該当します。
- SmarterCloud にログインして、「Control panel (コントロール・パネル)」で「View Asset Catalog (アセット・カタログの表示)」をクリックします。
図 1. クラウド・サービス・フレームワーク
- 「Submit an Asset (アセットの登録)」をクリックします (図 2 を参照)。
図 2. 「Asset catalog (アセット・カタログ)」の「Submit an Asset (アセットの登録)」リンク
- 図 3 に示すように情報を入力します。service.xml に入力した名前と説明を入力し、「Type (タイプ)」には「Template Service (テンプレート・サービス)」を選択します。MashupService.zip ファイルを参照して、「Submit (登録)」をクリックします。
図 3. zip ファイルを使用して新規テンプレート・サービス・アセットを作成する
- 図 4 に示すように、「Submitting asset (アセットの登録中)」というメッセージ・ウィンドウが表示され、zip ファイルが解凍されます。
図 4. アセットを登録する
- 詳細情報が表示されます。図 5 に示すように、「Service Name (サービス名)」については赤色の文字で「Required (必須)」と示されます。もう一度「Submit (登録)」をクリックします。
図 5. アセットの詳細を登録する
- アセットが保存されます。
図 6. 正常に登録されたアセット
次は、カタログ内にサービスとして表示されるように、このアセットを登録します。「Unique ID (固有の ID)」の「{41572B49-77CD-9481-1C92-75C2A5339453}」と「Versions (バージョン)」の「1.0」を書き留めておいてください。これらの情報は、登録時にそれぞれ RAMuuid、RAMversion のパラメーターとして使用します。
- REST API を呼び出すために、curl を使用した以下のコマンドを入力します。あるいは、RESTClient プラグインを使用するのでも構いません。この API についての説明は、「REST API リファレンス」を参照してください (「参考文献」を参照)。以下のコマンドに含まれる userid と password には、自分のユーザー ID とパスワードをコロンで区切って代入し、前のステップで書き留めた
RAMuuidを使用します。curl -k -H 'Accept: application/json' -o /tmp/my.text -u "$userid:$password" -d RAMuuid="{41572B49-77CD-9481-1C92-75C2A5339453}" -d RAMversion="1.0" -X POST https://www-147.ibm.com/computecloud/enterprise/api/rest/20100331/offerings/service
- コマンドへの応答は /tmp/my.text に保管されます。このファイルを開くと、登録されたサービス・オファリングの詳細が示されます。
ramArtifactIdを書き留めておいてください。後でこの ID を使用して、Rational Asset Manager の「Asset catalog (アセット・カタログ)」内でアセットを検索することができます。”visibility” (可視性) は、エンタープライズ・コミュニティーの中で “shared” (共有) に設定されます。このサービスの “location” (提供場所) は、“EHN” (ドイツのエーニンゲン) であることに注意してください。この提供場所は、service.xml ファイルで指定されます。{"serviceOfferings":[{"offeringType":"PaaS","thumbnailUrl": "artifact/{41572B49-77CD-9481-1C92-75C2A5339453}/1.0/cloud.png", "resourceOfferingIDs":[], "serviceLevels":["DEFAULT_SERVICE_LEVEL"], "ramArtifactVersion":"1.0", "name":"MashupService", "ramArtifactId":"{41572B49-77CD-9481-1C92-75C2A5339453}", "manifest": "https://www-147.ibm.com/cloud/enterprise/ram/artifact/ {41572B49-77CD-9481-1C92-75C2A5339453}/1.0/META-INF/service.xml", "state":1,"provider":"IBM Corp.","supportedServiceTypes": [{"label":"DEFAULT_SERVICE_LEVEL","id":"DEFAULT_SERVICE_LEVEL"}, "visibility":"SHARED","owner":"name":"karve@us.ibm.com", "id":"karve@us.ibm.com"},"communityName":"2230", "createdTime":1345049205440,"location":{"name":"EHN","id":"61"}, "documentation":"https://www-147.ibm.com/cloud/enterprise/ram/artifact/ {41572B49-77CD-9481-1C92-75C2A5339453}/1.0/GettingStarted.html", "id":"730","description": "Building a mashup service with JSONP, jQuery, and Yahoo! Query Language"}]} - アセットの状態が「Approved (承認)」になると、e-メールが送信されます。
図 7. アセットが承認されたことを通知する e-メール・メッセージ
- クラウド・ポータルに戻ります。
- 「Control panel (コントロール・パネル)」をクリックして「Service Instances (サービス・インスタンス)」タブを選択します。
- 「Add Service Instance (サービス・インスタンスの追加)」をクリックします。「Type (タイプ)」には「Shared (共有)」を選択し、「Data Center (データ・センター)」には「Ehningen, Germany (エーニンゲン、ドイツ)」を選択します。カタログ内の「MashupService」を選択して「Next (次へ)」をクリックします。
図 8. サービス・インスタンスを追加する
- サービス・インスタンスの名前と説明を入力したら、「Next (次へ)」をクリックします。
図 9. サービス・インスタンスの名前および説明を入力する
- パラメーターを入力して「Next (次へ)」をクリックします。ここに表示されるパラメーター名は、service.xml マニフェスト・ファイルのサービス・パラメーター・セクションに設定されているものです。後でマッシュアップの詳細を表示するときに、REST API を使ってこれらのパラメーター値を取得する必要があります。
図 10. サービス・インスタンスのパラメーターを入力する
- 表示された情報を確認して「Next (次へ)」をクリックします。
図 11. 入力を確認する
- サービス・アグリーメントに同意して「Submit (送信)」をクリックします。使用許諾条件の詳細が表示されるので、内容を確認して「Next (次へ)」をクリックします。
図 12. 使用許諾条件に同意する
- メッセージ・ウィンドウに「Submitting (送信中)」と表示された後、リクエストが正常に送信されたことを示すメッセージが表示されます。
図 13. 正常に送信されたサービス・インスタンス・リクエスト
サービス・インスタンスが追加される際に、provision.js ファイルを使用してリソースが作成されます。このマッシュアップの例では、リソースはありません。従って、ibmcloud.csf.provision 関数は、クラウド・サービス・フレームワークに必要なコールバックを呼び出すだけです。
- 「Control panel (コントロール・パネル)」の「Service Instances (サービス・インスタンス)」グリッドに戻ります。前の段階で指定した名前である「MyMashup」をクリックします。すると、「Loading Service details... (サービスの詳細をロード中…)」というメッセージに続き、詳細パネルに「Stock Quotes (株価)」、「News Headlines (ニュース・ヘッドライン)」、「Weather (天気)」の情報が表示されます。Google Chrome ブラウザーでは、外部 URL がブロックされることに注意してください。外部 URL からのコンテンツを表示するには、「This page has insecure content. (このページには安全でないコンテンツが含まれています。)」と示されている URL の隣にある盾アイコンをクリックします。次に「Load anyway (読み込む)」をクリックして、MyMashup サービスに戻ると、コンテンツが表示されます。
図 14. サービス・インスタンスの詳細パネル
- 図 14 では、サービス・インスタンスの詳細パネルに表示されている「Service ID (サービス ID)」に注目してください。details.js ファイルの中では、以下の行によって serviceConfig.id が設定されており、最終的に (true の場合には) コールバックが呼び出されます。
serviceConfig.id = serviceId;
このコールバックにより、details.template ファイルがレンダリングされるときに、このテンプレート・ファイル内で serviceConfig.id の値が使われるようになります。つまり、このテンプレートの中にあるすべての
${serviceConfig.id}は、details.js ファイルの中で設定された実際の値に置き換えられます。<h5 class="itemLabel">Service ID: </h5> <p>${serviceConfig.id}</p><br/>
${serviceConfig.id}をタグ名として使用する方法に注意してください。この方法は、後で manage.js ファイルで使用します。さらに、details.js ファイルに設定するタイムアウトでも使用します。このマッシュアップは、「Stock Quotes (株価)」、「News Headlines (ニュース・ヘッドライン)」、「Weather (天気)」の情報を 3 つの列で表示します。これらの列を移動したり、情報の再配置をしたりするには、details.template ファイル内のエントリーを更新します。
- details.template ファイルのローカル・コピーに必要な調整を加えて変更し、アセットを更新します。それには、Rational Asset Manager の「Asset catalog (アセット・カタログ)」に戻り、「My Dashboard (マイ・ダッシュボード)」をクリックします。
- 鉛筆アイコンをクリックして、MashupService を編集します。サービスを登録したときに受け取った
ramArtifactIdを使用して、アセットを検索することもできます。
図 15. Rational Asset Manager の「Asset catalog (アセット・カタログ)」からアセットを選択する
- 「Choose file (ファイルの選択)」をクリックし、details.template ファイルを選択します。
図 16. アセットを更新する
- 「Update (更新)」をクリックします。
図 17. 更新に関するコメントを追加する
- コメントを追加した後、「Update (更新)」をクリックします。
図 18. 更新中のアセット
- アセットを更新中であることを通知するメッセージ・ウィンドウが表示されます。この更新処理により、Rational Asset Manager の「Asset catalog (アセット・カタログ)」内の details.template ファイルが新しいファイルに更新されます。「Return to Cloud portal (クラウド・ポータルに戻る)」をクリックして、「Control panel (コントロール・パネル)」に戻ります。
- 「Service Instances (サービス・インスタンス)」を選択して、「MyMashup」をクリックします。これで、再配置された情報が表示されます。
図 19. 新しいテンプレートに従って更新されたサービス・インスタンスの詳細
SmarterCloud が REST API に対する認証に使用するのは OAuth です。使用可能な REST API は、いずれもこのメカニズムを使って呼び出すことができます。サービス・インスタンスがプロビジョニングされたときに指定された郵便番号と株の銘柄記号のパラメーター値を取得するには、/services/$serviceInstanceId/configuration API を明示的に呼び出します。details.js ファイル内の getOAuthToken 関数が呼び出す /computecloud/enterprise/api/oauth20/authorize は、レスポンスの Location ヘッダーに組み込む形でハッシュを返します。このハッシュ・トークンをリクエストの Authorization ヘッダーに Bearer として含めて REST リクエストを送信することによって、構成パラメーターを取得します。さらに、郵便番号が「Weather (天気)」ウィジェットに提供され、銘柄記号が「Stock Quotes (株価)」ウィジェットに提供されると、これらのウィジェットが外部クエリーを送信し、そのレスポンスを構文解析して、サービス・インスタンスの詳細を更新します。
サービスの詳細を表示する 4 番目のウィジェットは、複数の REST リクエストを送信する方法を明らかにします。OAuth を取得した後、このウィジェットは最初にサービス・インスタンスの詳細を取得するために REST リクエストを送信します。サービス・オファリング の ID を取得すると、今度はそのサービス・オファリングの詳細を取得するために別の REST リクエストを送信します。そして最後に、サービス・オファリングの名前、説明、提供場所、ramArtifactId、ramArtifactVersion、およびマニフェストとドキュメントへのリンクを抽出して表示します。この記事を執筆している時点で、REST API によって返されるドキュメントへのリンクは、service.xml で参照されている getting-started.html を指すのではなく、常に GettingStarted.html を指しています。このリンクを機能させたいとしたら、getting-started.html のコピーを GettingStarted.html という名前で作成してアセットに追加してください。
図 20. サービス・オファリングの詳細
ウィジェットの詳細がレンダリングされるのは、details.template ファイルがロードされた後です。従って、details.js ファイルではコールバックを true に設定して、ウィジェットのレンダリングを開始する前に、details.template ファイルのロードを完了できるようなタイムアウト値を設定します。このコールバックが完了するまで、ウィジェットの dojo.byId は機能しません。
サンプル・マッシュアップで詳細を更新するには、「Manage Service Instance (サービス・インスタンスの管理)」ボタンを使用します。このボタンを使用すると、「News Headlines (ニュース・ヘッドライン)」、「Weather (天気)」、「Stock Quotes (株価)」の詳細を動的に更新することができます。OAuth に対する呼び出しと、外部 Web サイトへのクエリーに対する呼び出しは、manage.js ファイルと details.js ファイルとで基本的に同じですが、manage.js ファイルの場合にはタイムアウトは必要ありません。「Manage Service Instance (サービス・インスタンスの管理)」ボタンがクリックされる時点で、details.template ファイルはすでにレンダリングされているからです。また、サービスの詳細が更新されることもないので、「News Headlines (ニュース・ヘッドライン)」、「Weather (天気)」、「Stock Quotes (株価)」ウィジェットだけが再ロードされます。
サービス・インスタンスの詳細は、REST API を使用して取得することができます。すべてのサービス・インスタンスを取得するには、以下のリクエストを送信します。
curl -k -H 'Accept: application/json' -o /tmp/my.text -u "$userid:$password" -X GET https://www-147.ibm.com/computecloud/enterprise/api/rest/20100331/services |
上記のリクエストによって、サービス・インスタンスの完全なリストが返されます。MyMashup サービス・インスタンスの ID に注目してください。この例の場合、ID として 3452 が返されています。
{"services":[{"launchTime":1345133890836,"status":5,"owner":"karve@us.ibm.com",
"location":"61","serviceOffering":{"serviceOfferingType":"PaaS",
"serviceOfferingName":"MashupService","serviceOfferingID":"730",
"serviceOfferingProvider":"IBM Corp."},"name":"MyMashup","id":"3452",
"description":""},...]}
|
このサービス・インスタンスに関連付けられたリソースの詳細を取得するには、以下のコマンドを使用します。
curl -k -H 'Accept: application/json' -o /tmp/my.text -u "$userid:$password" -X GET https://www-147.ibm.com/computecloud/enterprise/api/rest/20100331/services/3452 |
この例では、関連付けられているリソースがないことから、空の配列が示されます。
{"launchTime":1345133890836,"requestId":"3452","name":"MyMashup",
"serviceType":"DEFAULT_SERVICE_LEVEL ","status":5,"owner":"karve@us.ibm.com",
"associatedIPAddresses":[],"location":"61","associatedKeys":[],"requestName":"MyMashup",
"id":"3452","serviceOffering":{"serviceOfferingType":"PaaS",
"serviceOfferingName":"MashupService","serviceOfferingID":"730",
"serviceOfferingProvider":"IBM Corp."},"description":"","instances":[],
"associatedStorages":[]} |
「Delete service instance (サービス・インスタンスの削除)」をクリックすると、deprovision.js ファイルが呼び出されます。サービスによって作成されたリソースや使用中のリソースは、このファイルの中で削除することができます。このサンプル・マッシュアップではリソースを一切使用していないため、ibmcloud.csf.deprovision 関数は単にクラウド・サービス・フレームワークに必要なコールバックを呼び出すだけです。サービスが作成したリソースのなかに、deprovision.js ファイルで明示的に削除されなかったリソースがある場合 (例えば、VM インスタンスなど)、これらのリソースは「Control panel (コントロール・パネル)」の「Instances (インスタンス)」タブに表示されるので、サービス・インスタンスの削除後に削除することができます。ただし、サービス・インスタンスで割り当てたすべてのリソースは、deprovision.js ファイルで削除するのが望ましい手段です。
こ記事では、SmarterCloud のクラウド・サービス・フレームワークでマッシュアップ・サービスを作成するためのモデルについて簡単に説明しました。今回は、リソースをプロビジョニングまたはデプロビジョニングすることも、サービスの状態を維持することもしませんでしたが、サービスのこれらの側面とオーバーレイについては、連載の今後の記事で解説します。さらに今後の記事では、プロキシー VM についてもロード・バランサー・サービスとモニター・サービスの例を用いて説明します。サービス・コンポーネントのプロビジョニングは、サービス・プロバイダーのサービス・スクリプトによって行います。サービス・シェル、つまりデータベース内のサービス・エントリーが作成された時点から、クラウドはそのサービスをアクティブなものとして扱います。課金のために、サービス・プロバイダーがサービスの状況を操作することはできません。サービスの表示とクラウド自体を統合すると、表示できる内容に対していくつかの制約が課せられます。具体的には、ユーザーはサービス・リストの下を除く他の画面領域を操作してはならないというものです。次回の記事では、さらに詳細に踏み込んで、複数のコンポーネントを使用してサービスをプロビジョニングする方法を説明します。
| ファイル名 | サイズ | ダウンロード形式 |
|---|---|---|
| MashupService.zip | 22KB | HTTP |
学ぶために
- 連載「JSONP によるクロスドメインの通信」を読んでください。この連載では、ブラウザーの同一生成元ポリシーによる制約を回避し、サード・パーティーからのデータを組み合わせる方法を説明しています。
- 以下の資料を読むには、有効な SmarterCloud アカウントが必要です。
- サービスの作成およびカスタマイズについて参照してください。
- Image Center Wiki で、IBM プロバイダーが使用できるイメージ、サービス、およびソフトウェア・バンドルに関するプロバイダー向けガイドを参照してください。
- IBM SmarterCloud REST API の使用方法を調べてください。
- Deployer.js JavaScript ライブラリーには、クラウド・サービス・フレームワークでブラウザーをベースにサービス・インスタンスをプロビジョニング、デプロビジョニングするためのスクリプトの開発を支援するユーティリティー関数が揃っています。
- developerWorks のクラウド・コンピューティング・サイトで、クラウド・コンピューティング技術について詳しく学んでください。
- developerWorksの Open source で、さまざまなオープンソース技術の詳細を学んでください。
- Twitter で developerWorks をフォローしてください。
- developerWorks のDemos で、初心者向けの製品のインストールおよびセットアップから熟練開発者向けの高度な機能に至るまで、さまざまに揃ったデモを見てください。
製品や技術を入手するために
- IBM SmarterCloud Enterprise にアクセスしてください。
- ご自分に最適な方法で IBM 製品を評価してください。評価の方法としては、製品の試用版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。また、SOA Sandbox では、数時間でサービス指向アーキテクチャーの実装方法を効率的に学ぶことができます。
議論するために
- developerWorks コミュニティーに参加してください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者によるブログ、フォーラム、グループ、Wiki を調べることができます。
Alexei Karve は、IBM Thomas J Watson Research Center のシニア・ソフトウェア・エンジニアです。IBM SmarterCloud Enterprise 設計チームの一員として、クラウド・ビジネス・サポート・システムのソフトウェア・バンドル、サービス、および VPN/VLAN に取り組んでいます。運用サポート・サービス、仮想化、および Tivoli Provisioning Manager でさまざまな経験を積む彼は、1993年に IBM に入社して以来、システム管理の分野で長い多彩な職歴を重ねてきました。

Alla Segal は、IBM Thomas J Watson Research Center の顧問ソフトウェア・エンジニアです。SmarterCloud Enterprise 設計開発チームの一員として、サービス・インスタンスのライフサイクル分野を専門に取り組んでいます。さまざまな分野でのソフトウェアの設計、開発に 20 年以上の経験を積む彼女は、アーバナ・シャンペーンにあるイリノイ大学でコンピューター・サイエンスの理学修士号を取得しました。
Eugene Chan は、IBM Toronto Lab の顧問ソフトウェア開発者です。SmarterCloud Enterprise チームの一員として、サービス管理分野を専門に取り組んでいます。彼は、さまざまな分野でのソフトウェアの設計に 12 年以上の経験を積んでいます。SmarterCloud を担当する前は、Eclipse TPTP Tracing and Profiling Project のメンバー、プロジェクト・リーダー、そして Eclipse TPTP Architecture Group の議長も務めました。
Ignacio Silva Lepe は、IBM Research の研究スタッフ・メンバーです。オブジェクト指向システム、コンポーネント・ソフトウェア、分散メッセージング・システム、拡張エンタープライズ・ミドルウェア、および PaaS (Platform as a Service) などの研究分野で 20 年以上の経験を持ちます。IBM Research に入社する前は、Texas Instruments の Corporate Research and Development 部門に技術スタッフの一員として在籍していました。その前は、彼がコンピューター・サイエンスの博士号を取得したノース・イースタン大学で研究助手を務めていました。コンピューター・システム・エンジニアリングの学士号は、メキシコ・グアダラハラの ITESO 大学で取得しました。