ポートレットによるSOA開発
先日からLiferayポータルによるSOA開発について説明をしているが、読んだ人からなぜポートレットの開発がSOAなのか理解できないといわれた。
簡単にいうと、ポートレット(warファイル)間でサービスを呼び出せるようになっているため、他ポートレットのサービスを組み合わせて新しいサービスを定義できるからだ。
例えば、自体にはエンティティを持たなくて、すべて他ポートレットのサービスを組み合わせるファサードポートレットを作成することもできる。
また、jBPMやDroolsなどのようなワークフローエンジンやビジネスルールエンジンを呼び出すプロキシーサービスを作成することもできる。
また、jBPMをActivitiなどと入れ替える場合は、インターフェースが異なるので、アダプターポートレットを使って、インターフェースのマッピングを行う。
従来のポートレット開発はポートレット(warファイル)内で完結するように設定されていたと思う。ポートレットをデプロイ/アンデプロイすることはできるが、ポートレットの内部機能を外部から利用することはできなかった。
勿論、このようなようにポートレットを設計/開発された場合は、SOA型の開発ではない。ポートレットによるSOA開発を行う場合は、ポートレット内の機能を外部から利用できるようにする。ポートレットの単位は、責務に分割して、ポートレット間でサービスを呼び出して、サービスの入れ替えや再利用をできるようにしたのでポートレットSOA開発である。
ポートレットによるSOA型開発が、正しいポートレットの設計/開発だと思う。また、正しいWebアプリケーションの開発の仕方だと思う。
現在、同じプロジェクトをLiferayによるSOA型開発、スクラッチ開発、クラウドプロバイダを利用した開発を3チームで行っている。このらの3種類の技法によって、開発費用、品質、期間などを比較することができる。
既にLiferayによるSOA型開発ではシステム開発が終了している。スクラッチ開発はまだ設計段階である。クラウドは予算申請段階である。納期までの成果物の機能及び品質の比較が楽しみだ。