[FMW] Oracle SOA/BPM Suiteで継続的インテグレーション(Continous Integration)をやってみる(その0)

これはJPOUG Advent Calendar 23日目(12月23日)への参加記事です。
22日は @yamadamn さんによる、"WebLogicのExpressモード" でした。24日は Mototaka_Yoshida さんの"Let's Roll."です。

本日は、ロジ子の冬休みの自由研究課題(?)、「Oracleのミドルウェア製品、特にSOA/BPM製品群におけるContinuous Integration(継続的インテグレーション、以下CI)」の概要をご紹介します。詳細はこの冬休みに追加していきます。

CIの意味は今更感があるかと思いますので省略します(わからない方はGoogle先生やBing兄さんに聞いて下さい)。CIを実現するためのツールとして、JenkinsやHudson(この両者の間には色々大人の事情がありますが、そこには触れません)、Visual Studio Team Foundation Server/Serviceなどが有名です。

CIは、JavaやC#などでの開発で使うもの、と考えてしまいがちですが、別にそのような制限もしきたりもありません。というより、ビルド、デプロイ、テストを頻繁に回して不具合の混入を早い段階で探知し、品質向上を進めるための習慣・方法であるCIは、全てのシステム開発において取り入れるべきものと考えます。
では、Oracleのミドルウェア製品を使った開発でCIを実現するにはどうすればよいでしょうか。「開発」のイメージが強いOracle CoherenceやADF(Application Development Framework)はCIをイメージすることは容易ですが、Oracle SOA/BPM Suiteを用いた開発の場合は、どうでしょうか。

(1) 開発ツールとソース・リポジトリを連係する

Oracle SOA/BPM Suiteでの開発では、JDeveloperもしくはOracle Enterprise Pack for Eclipse(以下、OEPE)を使います。
[注]
Oracle Service Bus(以下、OSB)の場合、Webベースでの開発も可能ですが、チーム開発には適していません。
これらのIDE(統合開発環境)には、ソースコード管理ツールとかソース・リポジトリといった類のものと接続できるようになっています。つまり、作成・修正したSOAコンポジット、OSBの場合であればProxy Serviceなどをリポジトリにチェックインして、その後はCIツールにお任せする、という流れです。つまり、JavaやC#などでの開発と全く同じです。

(2) ビルド・デプロイする

antやmavenなどを使ってビルドし、テスト環境にデプロイするわけですが、Oracle SOA/BPM Suiteの場合、antでのビルドが可能なので、antスクリプトを作成して、CIツールから呼び出せるように仕込みます。
Oracle Service Busの場合は、通常、OEPEで作成したプロジェクト全体を開発環境のサーバーにデプロイしますが、この場合も同様、antで実行できます。antスクリプトから、WLSTを呼び出し、OSBのインポート機能で開発環境にデプロイするのが最も簡単です。プロジェクト単位にjarファイルを作成し、作成したjarをOSBにインポートします。
jarファイルでのインポートとなると、「プロジェクトが全て揃わないとだめなのか?」と考えてしまいますが、OSBのドキュメントにある通り、XQueryやXSLTなどだけでもインポートすることは可能ですし、必要なリソースだけインポートすることもできます。

(3) テストする

ビルドできるだけでは意味がないですね。テスト、テスト、テスト(大事なので3回言いました)。では、どうやってテストコードを書きましょう。。。
Oracle SOA/BPM Suiteでは、テスト・スイートを利用します。
Oracle® Fusion Middleware Oracle SOA Suite開発者ガイド 11g リリース1 (11.1.1.6.2)
SOAコンポジット・アプリケーションのテストの自動化
http://docs.oracle.com/cd/E28389_01/dev.1111/b56238/bp_testsuite.htm#CACFAGBC 
これを使ってテストケースを作成しておきます。もちろんantから呼び出せますので、自動化自体は問題ありません。OSBの場合はテスト・スイートを使うことはできませんが、リクエストメッセージに対するレスポンスメッセージを定義しておき、実際のレスポンスと一致するか否かを判断するように設定しておきます。
[注]
Oracle Enterprise Manager製品群の一つ、Application Testing Suiteを使って頂いたり、メッセージの監視にBusiness Transaction Managementなどを使って頂けると、Oracleとしては非常にありがたいです(もちろんCIを実践する上で必須ではないです)。
ここまでお読み頂くとおわかりの通り、Oracle SOA/BPM Suiteであっても、JavaやC#などと同じように、CIが可能なのです。今後のエントリで、Oracle SOA/BPM SuiteでのCIのポイントを記載していきます。みなさんもOracleのミドルウェアでCIやってみませんか?
[注]
テスト状況の可視化などはCIツールの機能なので、今回の自由研究では触れません。

0 件のコメント:

コメントを投稿