アプリケーションを物理コンピューター・システム上で実行するのはなく、仮想マシン上で実行する方法へと切り替えるユーザーが増えるにつれ、一般的な IT インフラストラクチャーでは、仮想マシン・インスタンスの数と仮想マシンの仮想イメージの数が急激な勢いで増加しています。仮想マシンの仮想イメージが膨大な数に上るなかで、個々の仮想イメージの内容と構成を調べていくのは至難の業です。ユーザーは、必要とする仮想マシンが簡単に見つからなければ、新しい仮想マシンを作成するでしょう。このことが、問題をさらに悪化させます。
図 1 と図 2 に示されているように、デプロイされる仮想マシンの増加がそのまま保守コストの増大につながらないようにする上で、カギとなるのは標準化です。
図 1. 標準化されていない仮想化の概略図
図 2. 標準化された仮想化の概略図
けれども、各仮想イメージの内容を完全に把握し、それに基づいて仮想イメージのライブラリーを慎重に管理しない限り、標準化を実際に実現することはできません。
各仮想イメージの内 容を把握することによって、以下のことが可能になります。
- 似通った一連のイメージを見つけ出し、イメージ同士を比較して違いを判断し、それらを別々のイメージとして保持したほうがよいかどうかを決定する
- ユーザーの要求を満たすイメージをユーザーに紹介する
- ユーザーが必要とするイメージは存在しないため、イメージを作成する必要があることを確実に認識する
参照イメージを標準イメージとして確立するときには、そのイメージをむやみに変更が加えられる可能性のない安全な場所に保管することが重要です。また、参照イメージにバージョン番号を付けるようにすれば、標準イメージが時間とともにどのように変更されたかを明らかにし、変更内容を把握することができるようになります。
この記事では、IBM Virtual Image Library のアーキテクチャーと、そこで使われている技術について説明した後、Virtual Image Library が対処するように作られている、イメージ管理の一般的な 4 つのシナリオのそれぞれについて詳しく説明します。
IBM Virtual Image Library は、IBM SmartCloud Provisioning 製品のなかの重要なコンポーネントであり、最近リリースされた SmartCloud Provisioning バージョン 1.2 の一部として追加されました。Virtual Image Library が開発された目的は、ユーザーがインフラストラクチャー内の仮想イメージとデプロイ済み仮想マシンを把握して管理できるように支援することです。ユーザーを支援するための最も重要な手段として、このライブラリーは以下の機能を提供します。
- 特定の検索基準 (名前、説明、オペレーティング・システム、インストール済みソフトウェア、最終変更日時など) を使用して、仮想インフラストラクチャー全体で仮想イメージを検索する機能
- デプロイ済み仮想マシンと、その仮想マシンを作成するために使用された仮想イメージとの違い (「ドリフト」) を識別する機能
- 少数の標準イメージに整理統合できる、似通った一連の仮想イメージを見つけ出す機能
- 仮想イメージに対してバージョン参照を定義して採用し、仮想イメージの配布とデプロイメントの履歴を追跡する機能
以上の重要なユーザー・シナリオのそれぞれについては、後で詳しく説明します。
基本的には、IBM Virtual Image Library は WebSphere Application Server 内で実行される Web アプリケーションと通信する、ブラウザー・ベースの GUI です。
Virtual Image Library サーバー・システム (図 3) 内には、以下の主要コンポーネントがあります。
- グラフィカル・ユーザー・インターフェース (GUI)
- REST API
- イメージ・メタデータ・ストア (Image metadata)
- 参照リポジトリー (Reference repository)
- ナレッジ・ベース (Knowledge base)
- インデクサー (Indexer)
- アナリティクス・エンジン (Analytics engine)
図 3. Virtual Image Library サーバー・システムのコンポーネント
では、それぞれのコンポーネントについて詳しく見ていきましょう。
Virtual Image Library のブラウザー・ベースの GUI は、DOJO、JavaScript、および HTML 要素を組み合わせて作られています。GUI から開始できるユーザー・コマンドのすべて、そして GUI に表示されるデータのすべては、Virtual Image Library の REST API を通じて処理されます。
Virtual Image Library のユーザー操作は、GUI から開始されるコマンドを含め、すべて REST API を使用して行われます。このインターフェースを使用することで、他のプログラムやツールも、プログラムによって Virtual Image Library にアクセスすることができます。
ユーザーが REST API から正常にコマンドを送信するためには、まず、LTPA (Lightweight Third-Party Authentication) 技術による認証を行って LTPA トークンを取得する必要があります。取得した LTPA トークンを使用して REST API コマンドを送信することで、そのユーザーが識別され、ライブラリーによって認識される役割を持つユーザーであることが確認されます。
イメージ・メタデータ・ストアは、登録済みのハイパーバイザー・マネージャー (運用リポジトリー) に関する情報とそのマネージャーが持つ仮想イメージとデプロイ済み仮想マシンに関する情報を Virtual Image Library が保持する場所です。ここには、ハイパーバイザー・マネージャーが仮想イメージとデプロイ済み仮想マシンのそれぞれに関して提供できる、すべてのメタデータが格納されます。
参照リポジトリーは「ゴールデン・マスター」イメージの正式ストアであり、ここに格納されているイメージは変更することができません。
参照リポジトリーの役割は、ソフトウェアの開発でソース・コード管理サーバーが果たす役割と同様です。仮想イメージのバージョン管理を行う参照リポジトリーは、仮想イメージの開発と進化の協調ポイントとなり、チェックインされたものが変更されないことを保証します。
参照リポジトリーに仮想イメージを格納するには、Virtual Image Library から新しい外部イメージをインポートするという方法、または運用リポジトリーのいずれかに格納されている仮想イメージでチェックイン操作を行うという方法のいずれかを使用することができます。参照リポジトリーは、Tivoli Provisioning Manager for Images 製品のセクター・ベースのリポジトリー技術を利用し、ディスク・フォーマット変換機能と非重複化機能を使用して、ストレージ要件を最小限にします。
インデクサーは、参照リポジトリーまたは運用リポジトリーに保管されている仮想イメージに接続し、そのファイルシステムにアクセスして可能な限りの情報を収集し、収集した情報をナレッジ・ベースに格納します。収集する情報のタイプには以下のものがあります。
- ディスク・レベルの情報 (パーティション、ファイルシステムのタイプとサイズなど)
- OS 情報 (OS のタイプ、ディストリビューション、バージョン、パッチ・レベルなど)
- 製品情報 (インストール済み製品とパッチ・レベルなど)
- ファイル・レベルの情報 (ファイル・リストおよび内容の要約など)
Virtual Image Library が基本とするのは、ユーザーが仮想イメージのメタデータに対して作成したアノテーションを信用するのではなく、イメージに実際に含まれるもの、あるいは実際にインストールされているものを収集することです。ユーザーが作成するアノテーションは、作成されるとほぼ同時に正確でないものになっていくからです。
仮想イメージに関してインデクサーが収集し、Virtual Image Library に表示される情報は、すべてナレッジ・ベースに保管されます。ナレッジ・ベースには、アナリティクス・エンジンが導き出した (推定した) 情報も、それが個々の仮想イメージに関する情報であるか仮想イメージ間の関係に関する情報であるかに関わらず、保管されます。
アナリティクス・エンジンは、ナレッジ・ベースに保管された情報から、イメージ、およびイメージ間の関係に関する追加の特性を導き出します。
アナリティクス・エンジンが導き出す情報のタイプには、一例として、イメージ類似性メトリックが挙げられます。イメージ類似性メトリックは、個々の仮想イメージが、Virtual Image Library 内で可視となっている他のすべての仮想イメージと、どの程度似ているかを定量的に明らかにします。
アナリティクス・エンジンは、ナレッジ・ベース内の仮想イメージ情報に対するアクセスまたはクエリーを可能にするメカニズムも提供します。
これらの機能が、Virtual Image Library のコア機能となっているディープ検索、比較、および類似性分析のベースとなります。
Virtual Image Library のデプロイメント
Virtual Image Library を仮想環境にデプロイすると、デプロイ先の環境には何もインストールされませんが、Virtual Image Library はその仮想環境の仮想イメージ・ライブラリーとして機能します。Virtual Image Library に VMware または SmartCloud Provisioning 環境にアクセスするための資格情報さえあれば、Virtual Image Library はその特定の環境のライブラリーとしての役目を開始します。
Virtual Image Library は、WebSphere Application Server 内で実行される Web アプリケーションとして、専用の仮想マシンにデプロイされます。この仮想マシンには、Virtual Image Library によってリストアップされて分析される仮想イメージとデプロイ済み仮想マシンを保管するハイパーバイザー・マネージャーへのネットワーク・アクセスが必要です。
図 4 に、デプロイ後の Virtual Image Library が本番環境とどのようにやりとりするかを示します。
図 4. Virtual Image Library のデプロイメントの概念図
ハイパーバイザー・マネージャー (SmartCloud Provisioning サービス領域など) との接続が追加されると、最初のアクションとして、そのハイパーバイザー・マネージャーが管理するすべての仮想イメージとデプロイ済み仮想マシンの検索が行われます。検出された仮想イメージおよびデプロイ済み仮想マシンのリストが Virtual Image Library に保管されると、ユーザーはこれらのリストのすべての項目を表示して操作できるようになります。
Virtual Image Library はインデクサーを使用して、個々の仮想イメージに関する情報を収集します。情報を収集するために、ターゲット・システムにエージェントをインストールする必要はありません。代わりに仮想イメージにアクセスして情報を収集します。したがって、仮想イメージは大きな単一のディスクのように見なされます。仮想イメージが運用リポジトリーに保管されている場合、そのディスクにアクセスするにはネットワークを介して仮想イメージをコピーするのではなく、リモートからそのディスクをマウントすることでアクセスします。イメージにリモートから索引を付けるだけで、イメージを Virtual Image Library にコピーする必要はないことから、ネットワーク帯域幅の要件は最小限に抑えられます。
仮想イメージがマウントされて使用可能になると、インデクサーは稼働中のシステム上にこのディスクのファイルシステムがあるかのように、インベントリー・ツールとメソッドを使用して、このファイルシステムをトラバースします。エージェントは不要なので、情報を収集するために対象のシステムに何かをインストールすることはありません。
あらゆる仮想イメージに関する詳細情報を収集する必要はない場合もあります。この事実を踏まえ、Virtual Image Library では情報の収集を、基本索引付けと完全索引付けという 2 つのレベルに分けています。
基本索引付けでは以下の情報を収集します。
- ディスク・レベルの情報 (パーティション、ファイルシステムのタイプとサイズなど)
- OS 情報 (OS のタイプ、ディストリビューション、バージョン、パッチ・レベルなど)
- 製品情報 (インストール済み製品とパッチ・レベルなど)
完全索引付けの場合には、以下の情報を収集します。
- 基本索引付けで収集するすべての情報
- ファイル・レベルの情報 (ファイル・リストおよび内容の要約など)
デフォルトでは、Virtual Image Library は情報収集対象のすべての仮想イメージに対して基本索引付けを行います。運用リポジトリー内の仮想イメージについては、その仮想イメージにリモートからアクセスして基本索引付けを実行します。つまり、仮想イメージは元の場所に維持されるということです。
Virtual Image Library のユーザーはデプロイ済み VM に対して索引付けをするように要求することもできますが、デプロイ済み VM には可変性があることから、デプロイ済み VM に対する索引付けが自動的に行われることはありません。イメージが参照リポジトリーにチェックインされるときには、自動的に完全索引付けが行われます。
ただし、完全索引付けを行えるのは、参照リポジトリーには限られていません。運用リポジトリー内の仮想イメージやデプロイ済み VM に対しても、ユーザーからの要求時に完全索引付けを行うことができます。
アナリティクス・エンジンは、イメージに関して収集した情報に基づき、LSH (Locality-Sensitive Hash) を計算します。LSH は、イメージの内容を大幅に凝縮したものと考えてください。LSH が持つ強力な特性は、LSH によって表される仮想イメージの比較において、LSH をプロキシーとして使用できることです。これらの LSH の任意の 2 つの類似性を示すパーセンテージは、それぞれの LSH が表す 2 つのイメージのおおよその類似性を表しています。この類似性のパーセンテージは、Virtual Image Library 内のすべてのイメージ全体にわたって、インストールされている製品ごとの類似性メトリックや、イメージ・ファイルの内容による類似性メトリックを提供するスケーラブルな方法となります。
Virtual Image Library のユーザー・シナリオ
Virtual Image Library は、以下の 4 つの主要なユーザー・シナリオを対象に設計、開発されました。
- イメージのディープ検索
- ドリフト分析
- イメージ・スプロールの抑制
- 参照イメージのバージョン管理と追跡
ここからは、上記のシナリオのそれぞれを詳しく説明していきます。
Virtual Image Library では、従来の仮想イメージの検索方法 (ユーザーがイメージのメタデータ (名前、作成日時、ユーザーが作成したメタデータなど) を検索基準に仮想イメージを検索するという方法) の他に、イメージのディープ検索を行うこともできます。
イメージのディープ検索では、ユーザーが仮想イメージに対して作成したメタデータに基づいて検索するだけでなく、仮想イメージの実際の内容に基づいて検索することが可能です。そのため、ユーザーが提供したメタデータで起こりがちなエラーに影響されることなく、正確な検索結果が得られるようになっています。
図 5 に示すように、ユーザーは要件を満たすイメージを検索することができます。
図 5. IBM Virtual Image Library の検索画面
Virtual Image Library では、ユーザーは以下の基準を指定してイメージを検索することができます。
- 場所: 仮想イメージが保管されている場所。ある特定の場所にある仮想イメージのみを返すように検索を絞り込むことができます。これにより、ユーザーは参照イメージのみを検索したり、特定の運用リポジトリーに保管されているイメージのみを検索したり、運用パラメーターを指定して検索したりすることができます。
- イメージ・タイプ: 仮想イメージのみ、デプロイ済みの仮想マシンのみ、あるいはその両方を検索することができます。
- 名前: ユーザーが入力した内容や正規表現によって指定されたパターンと、名前とがマッチするイメージを検索します。
- 説明: ユーザーが入力した内容や正規表現によって指定されたパターンと、説明とがマッチするイメージを検索します。
- OS の種類およびバージョン: 仮想イメージの分析時にインデクサーが検出したオペレーティング・システムの種類とバージョン、または正規表現によって指定されたパターンと、OS の名前とがマッチするイメージを検索します
- インストール済みソフトウェア、ソフトウェアのバージョン、およびターゲット・アーキテクチャー: これらの検索基準は、仮想イメージの分析時にインデクサーが検出した情報に基づきます。したがって、これらの基準は、イメージに含まれていると「考えられている」内容ではなく、イメージに実際に含まれている内容を表します。Virtual Image Library は、仮想イメージにインストールされていると認識されているすべてのソフトウェアのリストを表示するため、ユーザーはそのリストから目的のソフトウェアを選択することができます。選択したソフトウェアの「いずれか」または「すべて」が含まれるイメージ、あるいは選択したソフトウェアが「含まれない」イメージを返すように検索を構成することができます。
- 最終変更日時: 仮想イメージまたはデプロイ済み仮想マシンが最後に変更された日時。この基準は、めったに使用されないイメージをフィルタリングする際に役立ちます。
仮想イメージを使用して仮想マシンがデプロイされた時点から、仮想マシン・イメージの内容は変更され、仮想イメージの元の内容から推移 (「ドリフト」) します。ドリフトの大部分は問題ありませんが、パッチの適用や、ソフトウェアの追加や削除、または既存のソフトウェアのアップグレードなどの変更を行うことによって、システムが正常に機能しなくなる場合があります。
システムが正常に機能しなくなった場合、最初に答えを見つけなければならない質問は「何が変更されたのか?」です。その質問に答えるのが、ドリフト分析です。
図 6 に、ドリフト分析のフローを示します。
図 6. ドリフト分析フローの概要
ドリフト分析は、正常に動作しなくなった仮想マシンを特定し、その仮想マシンをデプロイするために使用した仮想イメージを見つけるところから始めます。そのための情報は、仮想マシンのファミリー・ツリー機能から取得されます (この機能の詳細は、バージョン管理とイメージ追跡についてのセクションで説明します)。
仮想イメージには、あらかじめ索引が付けられていなければなりません。したがって、次のステップでは、仮想マシンに索引を付けます。仮想化技術によっては、索引付けの処理を開始する前に、仮想マシンを停止するか、少なくとも一時停止する必要がある場合があります。
索引付けが完了すると、ユーザーが Virtual Image Library から仮想マシンとデプロイ済み仮想マシンの比較を実行している間に、仮想マシンはレジュームすることができます。ドリフト分析によって 2 つのイメージの差異がリストアップされるので、ユーザーはこのリストを精査して、どの違いが原因で正常に動作しなくなったのかを判断することができます。
イメージ・スプロールは、似てはいるものの、まったく同じではないイメージが大量に作成されることによって発生します。通常は、そのようなイメージが大量に作成される原因は、すべてのユーザーが同じ 1 つのイメージから始めるとしても、ユーザーによって異なるパッチを適用したり、アプリケーションをインストールまたはアップグレードしたり、あるいはアプリケーションを削除したりするためです。
それぞれのユーザーが、変更結果をイメージに取り込んで、それを仮想イメージとして保存します。
イメージ・スプロールを抑制するために、Virtual Image Library は特定のイメージに似たイメージの検索をサポートしています。一般に使用されるために公開されている標準イメージを基準として、そのイメージに似たすべてのイメージを検索することで、イメージ・ライブラリーの管理者はそのイメージに似た仮想イメージを特定することができます。
図 7 のスクリーン・キャプチャーに、このような検索による結果を示します。
図 7. 類似性を基準とした検索結果
索引が付けられたすべての仮想イメージのリストは、類似性が高いものから低いものへと順に並べ替えられます。リストの先頭にある仮想イメージが、回収して置き換えられるイメージの最有力候補です。
IT インフラストラクチャー内の重要なアセットになる仮想イメージは、安全な場所に保管して、イメージに対する変更を管理することが非常に重要です。イメージを変更するごとに、バージョン番号を使用して、その変更を識別可能にする必要があります。そしてバージョン番号によって、該当するイメージのバージョンを取得できなければなりません。
基本的に、この機能はイメージに対するソース・コード管理システムのようなものです。
Virtual Image Library では、参照リポジトリーでバージョン管理を行います。イメージが参照リポジトリーにチェックインされると、そのコピーが作成されてリポジトリー内に保管されます。イメージは既存のイメージ・バージョン・チェーンに追加されるか、新しいチェーンが作成されて、そのイメージにチェーン内で固有のバージョン番号が割り当てられます。
図 8 に、参照イメージの変更フローを示します。
図 8. 新しいバージョンを作成する場合の参照イメージの更新フロー
A1 のラベルが付いたボックスは、すでに参照リポジトリーにチェックインされていて、今回更新する必要がある仮想イメージを表します。
更新のために A1 が運用リポジトリーにチェックアウトされて、新しい仮想マシンを作成するためにブートされます。この新しい仮想マシンが、例えばパッチを適用したり、新しいアプリケーションをインストールしたりすることによって変更されると、運用リポジトリー内に新規イメージが作成されます。この新規に作成されたイメージが参照リポジトリーにチェックインされると、参照イメージ A2 が作成されます。デフォルトでは、A2 は元のイメージ A1 と同じバージョン・チェーンに配置されます。
バージョン・チェーンを定義して管理するのは、Virtual Image Library のユーザーです。デフォルトでは新規 A2 イメージが A1 と同じバージョン・チェーンに配置されますが、これは必須ではありません。ユーザーが、A2 をルートとした新規バージョン・チェーンを開始したり、A2 を参照リポジトリー内の別のバージョン・チェーンの最後に追加したりすることもできます。また、仮想イメージが誤ったバージョン・チェーンに配置されているとユーザーが判断した場合には、仮想イメージを正しいバージョン・チェーンに移動することができます。
参照リポジトリーでイメージのバージョン・チェーンをサポートすることが、IT インフラストラクチャー内の重要なイメージを理解し、管理するための基礎となります。
しかし、参照リポジトリー内のイメージをデプロイして使用するためには、そのイメージを運用リポジトリーにチェックアウトしなければなりません。このことから、参照イメージが運用リポジトリーにチェックアウトされたことを記録し、参照イメージを使用してイメージがデプロイされたり、参照イメージをコピーして別の仮想イメージが作成されたりしたときに、その参照イメージを追跡できることが重要になります。Virtual Image Library はこの情報を収集し、イメージのファミリー・ツリーとして表示します。
図 9 に、バージョン・チェーンとファミリー・ツリーの一例を示します。
図 9. バージョン・チェーンとファミリー・ツリーの例
バージョン・チェーン (左側) では、2 つの参照イメージが、金色のタブ付きアイコンで識別されています。参照イメージが運用リポジトリーにチェックアウトされるたびに、分岐が作成され、1.x.y という形式のバージョン番号が割り当てられます。ここで、1.x はその分岐の派生元である参照イメージのバージョン番号です。
新規イメージの作成や仮想マシンのデプロイにイメージが使用されるたびに、新しい分岐が作成されて、バージョン番号が割り当てられます。ファミリー・ツリー (右側) には、イメージがコピーされて新しいイメージが作成されたり、イメージがデプロイされて新しい仮想マシンが作成されたりすると、イメージ間の関係がすべて表示されます。
IBM Tivoli Virtual Image Library が提供する高度なイメージ管理機能を使用することで、仮想インフラスストラクチャーの内容を把握して管理するという難題に対処することができます。イメージ・リポジトリー管理と、イメージ・アナリティクス、そしてバージョン管理を行う参照リポジトリーという 3 つの組み合わせによって、IBM Tivoli Virtual Image Library は以下の 4 つの主要なユーザー・シナリオをサポートする機能を提供し、仮想インフラストラクチャーの問題の解決を可能にします。
- イメージのディープ検索
- ドリフト分析
- イメージ・スプロールの抑制
- 参照イメージのバージョン管理と追跡
現在、上記のシナリオをサポートする機能は、組織で共通して必要とされています。
IBM Virtual Image Library では、仮想イメージにエージェントをインストールしたり、イメージを中央の場所にコピーしたりすることなく、これらのシナリオをサポートするために必要な情報が収集されます。このことから、IBM Virtual Image Library は、組織の IT インフラストラクチャーに単純かつ簡単に追加することができます。
学ぶために
- IBM Cloud でのタスクの実行方法についての詳細は、以下のリソースにアクセスしてください。
- 「IBM Cloud リリース 1.2 を使うためのヒント: Windows インスタンスとの間でのファイルのアップロードとダウンロード」
- 「IBM Cloud リリース 1.2 を使うためのヒント: Windows Server 2008 R2 に IIS Web サーバーをインストールする」
- 「Linux のコマンド・ラインを使用して IBM Cloud にインスタンスを作成する」
- 「Windows のコマンド・ラインを使用して IBM Cloud にインスタンスを作成する」
- 「IBM Cloud を利用して企業のネットワークを拡張する」
- 「IBM Cloud での高可用性アプリケーション」
- 「カスタム・インスタンスのクラウド・イメージをオンザフライでパラメーター化する」
- 「Windows-targeted approaches to IBM Cloud provisioning」
- 「IBM SmartCloud Enterprise についてのヒント: Rapid Deployment Service を使用して製品をデプロイする」
- 「IBM SmartCloud Enterprise tip: Integrate your authentication policy using a proxy」
- 「IBM SmartCloud Enterprise についてのヒント: Linux Logical Volume Manager を構成する」
- 「IBM SmartCloud Enterprise についてのヒント: 複雑なトポロジーをデプロイする: IBM Cloud でデプロイメント・ユーティリティー・ツールを使用する」
- 「IBM SmartCloud Enterprise についてのヒント: 別々の VLAN にまたがる: パブリック VLAN とプライベート VLAN にまたがるインスタンスをプロビジョニングし、構成する」
- 「IBM SmartCloud Enterprise についてのヒント: Android 機器からセキュアにアクセスする」
- 「IBM SmartCloud Enterprise のデータを復旧する」
- 「クラウドの仮想マシン・インスタンスをセキュアにする」
- developerWorks
のクラウド開発者向けリソースで、クラウド開発プロジェクトを作成しているアプリケーションおよびサービス開発者たちの知識と経験を調べて共有してください。
- IBM SmartCloud
Enterprise にアクセスする方法を調べてください。
製品や技術を入手するために
- IBM
SmartCloud Provisioning の試用版をダウンロードしてください。
- IBM SmartCloud Enterprise
に用意された製品イメージを調べてください。
議論するために
- developerWorks
のクラウド・コンピューティング・グループの一員になってください。
- developerWorks でクラウドに関する優れたブログのすべてを読んでください。
- 専門家のネットワークであるとともに、互いにつながりを持ち、共有、協力するためのコミュニティー・ツールが集められている
developerWorks コミュニティーに加わってください。
Joe Wigglesworth は、IBM のシニア・テクニカル・スタッフ・メンバーです。以前は IBM SmartCloud Provisioning の IBM Virtual Image Library コンポーネントのアーキテクトでした。Virtual Image Library を担当する前は、TPM (Tivoli Provisioning Manager) 開発チームの製品アーキテクトとして、仮想化技術とイメージ管理機能を中心に取り組んでいました。また、Toronto Lab の IBM Centre for Advanced Studies のマネージャーとして、IBM 開発チームと世界中の学術研究者たちと間の共同研究プロジェクトを奨励する職務も経験しています。彼は教科書『Java Programming: Advanced Topics』の共著者であり、University of Toronto School of Continuing Studies' Excellence in Teaching Award を受賞しました。