IBM Business Process Manager...Process Designer...
Transcript of IBM Business Process Manager...Process Designer...
© 2017 IBM Corporation
IBM Business Process Manager
連載:事例に学ぶパフォーマンスの向上
第2回 スナップショットの運用
2Page © 2017 IBM Corporation
概要
BPMはProcessCenter上に開発成果物の情報が登録されるため、プロダクション環境の運用の設計だけではなく、開発開始前、もしくは初期の段階において、ProcessCenterの運用、特にスナップショットの運用方針を設計することが重要です。
運用を正しく行わなかった場合、ProcessCenterのパフォーマンスが大幅に低下し開発生産性が下がる、あるいは、プロダクション環境でのアプリケーションのパフォーマンスが劣化するなどの問題が生じます。
本ドキュメントでは、ProcessCenterのパフォーマンス劣化に陥りやすい典型的なシナリオと、パフォーマンス劣化の主な原因である、スナップショットの運用方法についてまとめます。
3Page © 2017 IBM Corporation
事象と事例
以下のような事象が発生した場合には、ProcessCenterのスナップショットを整理することで改善する可能性があります。
• ProcessDesignerで作業をしていると、少し変更をするたびに、数十秒フリーズすることがある。• サービスの呼び出しや、画面の初期表示が以前より時間がかかるようになっている。• スナップショットの取得や削除、デプロイに時間がかかる
事例:あるプロジェクトにおいては、プロダクション環境の運用設計は行っていたものの、開発環境の運用という観点が欠如しており、特に何も対応せずに開発を進めていた。10名以上の開発者で開発を進めていたところ、徐々にProcessCenterのパフォーマンスが低下し、開発が佳境にさしかかるころには、ProcessCenterのパフォーマンスが原因で、開発作業に遅延が発生するようになった。調査の結果、このプロジェクトは1日に数回スナップショットを作成しており、100個近くの名前付きスナップショットと、数万個の名前なしスナップショットが蓄積されており、そららを削除することでパフォーマンスは改善した。
4Page © 2017 IBM Corporation
問題の背景
通常のWebアプリケーションの開発と異なり、BPMでは、リポジトリ(ProcessCenter)上で開発作業を行うため、“開発環境の運用”が必要であるという認識を持つことが重要です。しかし、多くのプロジェクトにおいて運用の検討は後回しにされがちです。
また、BPMはスナップショットと呼ばれるツール上でのバージョン管理機能を提供していますが、これらがリポジトリのパフォーマンスに大きく影響を及ぼすことを理解し、適切にスナップショットを管理することが重要です。
5Page © 2017 IBM Corporation
スナップショットとは
Process Center リポジトリーでは、いくつものプロセス開発作業を管理する際に役立つ構造化階層が用意されています。
スナップショットは、特定の時点におけるプロセス・アプリケーション内またはトラック内の成果物の断面を記録します。
Process Center Console から、プロセス・アプリケーションのスナップショットを作成可能です。 開発環境、テスト環境、ステージング環境、および実稼働環境の Process Server にはプロセス・アプリケーションの特定のスナップショットがデプロイされます。
スナップショットには、開発者が作成する名前付きスナップショットと、開発時に自動的に作成される名前なしスナップショットの2つの種類のスナップショットが存在します。
6Page © 2017 IBM Corporation
名前付き・名前なしスナップショットとは
名前付きスナップショットとは、バージョン番号やその他の ID を持つスナップショットです。開発者によって明示的に作成されます。
名前なしスナップショットは、名前付きスナップショットの間に作成される。Process Designer ユーザーが作業を保存するたびに、自動的に作成されるスナップショットです。
本格的な開発を行うと、数千個から数万個もの名前なしスナップショットが、すぐに蓄積されます。特に、Process Center 内に開発中のプロジェクトが多数ある場合は、Process Center データベースのサイズが急速に膨らむ可能性が高くなります。この名前なしスナップショットを除去することで、肥大化したデータベースを小さくすることができます。また、Process Center サーバーのパフォーマンスが徐々に低下している場合にも、名前なしスナップショットを削除することができます。
ProcessCenterの運用においては、スナップショットの運用方針を策定することが非常に重要です。
7Page © 2017 IBM Corporation
スナップショットの運用方針の策定
スナップショットを適切に管理するためには、運用方針を策定し、開発チーム内で合意しておく必要があります。
具体的には以下のような項目について方針を決めます。
• スナップショット作成基準• 名前付きスナップショットのアーカイブ・削除方針• 名前なしスナップショットの削除方針• 各作業の担当者
8Page © 2017 IBM Corporation
スナップショットの作成基準
IBMBPMにおいては、スナップショットの作成は、容易に行うことが可能です。そのため、開発者が個人の判断でスナップショットを作成し、スナップショットの数が必要以上に増加したり、作成されたスナップショットを削除して良いのか判断できなくなってしまうケースがあります。
そこで、あらかじめスナップショットの作成に関する以下のような項目について合意しておくことが重要です。開発者にトラックの作成を許可する場合にはトラックについても同様の基準を策定する必要があります。
• スナップショット作成のタイミング(日次、週次、マイルストーン毎など)• スナップショット名のネーミング・ルール• 説明に含めるべき項目• スナップショット取得の担当者
9Page © 2017 IBM Corporation
名前付きスナップショットの削除・アーカイブ方針
名前付きスナップショットとは、バージョン番号やその他の ID を持つスナップショットで、開発者によって明示的に作成されます。そのため名前なしスナップショットと比較するとスナップショット数は多くはありませんが、日次でスナップショットを作成しているようなケースでは無視できない数になります。前述のスナップショットの作成基準と併せて、削除やアーカイブの方針を決めておくことが重要です。
• 名前付きスナップショットの管理のタイミング• 名前付きスナップショットのアーカイブ方針
例)最新の3つのスナップショットを残してアーカイブする• 名前付きスナップショットの削除方針
例)アーカイブが10個以上になったらtwxをエクスポートし、削除する• エクスポートしたtwxの管理方法• スナップショット管理の担当者
10Page © 2017 IBM Corporation
名前なしスナップショットの削除方針
名前なしスナップショットは、名前付きスナップショットの間に作成される。Process Designer ユーザーが作業を保存するたびに、自動的に作成されるスナップショットです。名前なしスナップショットは自動的に削除されないため、放置しておくとすぐに数千から数万の単位のスナップショットが蓄積され、ProcessCenterのパフォーマンスに大きく影響します。名前なしスナップショットの削除方法を定め、メンテナンスをすることが重要です。
以下のような方針を定めておくことが重要です。
• 名前なしスナップショットの削除のタイミング• 名前なしスナップショットの削除方針(手動、自動)• スナップショット管理の担当者
11Page © 2017 IBM Corporation
名前付きスナップショットのアーカイブ手順
名前付きスナップショットは削除する前にアーカイブする必要があります。名前付きスナップショットをアーカイブすると、DBのテーブル上のアーカイブフラグが有効となり、検索などから除外されパフォーマンスが改善する可能性があります。しかしながら、データ自体は存在するため、アーカイブのみではパフォーマンスの改善に不十分なケースが多く、古くなったアーカイブは削除することを推奨します。
スナップショットをアーカイブするには、ProcessCenterより、以下の手順を実行します。1. 「Process App」または 「Toolkit」タブを選択します。2. スナップショットのアーカイブ対象にするプロセス・アプリケーションまたはツールキットを選
択します。 複数のトラックが存在する場合は、ドロップダウン・メニューから目的のトラックを選択します。
3. 目的のスナップショットを探し、そのポップアップ・メニュー (下向き矢印アイコン) で「アーカイブ」をクリックします。
4. プロンプトが表示されたら、「アーカイブ」をクリックして選択内容を確定します。
12Page © 2017 IBM Corporation
スナップショットの削除手順(手動)
名前つきスナップショット、もしくは名前なしスナップショットはwsadminコマンドによって削除します。Process Designer でのパフォーマンス低下やタイムアウトを防ぐには、Process Center で何も操作が実行されておらず、Process Designer と Process Center の間に接続が開かれていないときに、BPMSnapshotCleanup コマンドを実行します。Designerで編集中にコマンドを実行すると最悪のケースではデータベースに不整合が生じる可能性があるため注意してください。
スナップショットを削除するには、ProcessCenterより、以下の手順を実行します。1. Process Designer のインスペクター、もしくはProcessAdminコンソールを利用し、削除するス
ナップショットに関連するすべての BPD インスタンスを削除します。2. アプリケーションが稼動しているNodeに対し、wsadminコマンドで接続します。3. BPMSnapshotCleanupコマンドにより、スナップショットを削除します。
例)./wsadmin.sh -conntype SOAP -port 8880 -host hostname -user user -password pass -langjythonwsadmin>AdminTask.BPMSnapshotCleanup ('[-containerAcronym TEST -keptNumber 100]‘)
BPMSnapshotCleanupコマンドの詳しい説明については以下のリンク先の文書を参照してください。https://www.ibm.com/support/knowledgecenter/ja/SSFTBX_8.5.7/com.ibm.wbpm.ref.doc/topics/rref_bpmsnapshotcleanup.html
13Page © 2017 IBM Corporation
スナップショットの削除手順(自動)
100Custom.xmlに設定を記述することで、名前なしスナップショットを自動的に削除するタスクをスケジューリングすることが可能です。
<設定例><unnamed-snapshots-cleanup-config>
<enabled>true</enabled><cleanup-start-time>23:59:59</cleanup-start-time><cleanup-duration-minutes>5</cleanup-duration-minutes><clean-after-number-named-snapshots>4</clean-after-number-named-snapshots>
</unnamed-snapshots-cleanup-config>
自動削除についての詳しい説明については以下のリンク先の文書を参照してください。https://www.ibm.com/support/knowledgecenter/ja/SSFTBX_8.5.7/com.ibm.wbpm.admin.doc/topics/managing_snapshots_j.html
14Page © 2017 IBM Corporation
スナップショットの自動削除の注意点
スナップショットの自動削除を有効にする場合には以下点に注意が必要です。
• 自動削除では、操作対象のプロセス・アプリケーションおよびツールキットがランダムに選択されるため、Process Center 内のすべてのアクティブなプロジェクトを処理できるだけの十分な所要時間を指定してください。
• 自動削除は、サーバーの稼働中にのみ実行されます。構成された開始時間の時点でサーバーが停止している場合は、次に削除機能が開始されるように構成されている時間まで、自動削除は実行されません。
• 名前なしスナップショットを削除する前に、Process Designer のインスペクターに移動して、削除する各名前なしスナップショットに関連するすべてのプロセス・インスタンスを削除します。プロセス・インスタンスが残っていた場合にはそのスナップショットの削除タスクは中止されます。
• 名前なしスナップショットの削除は、Process Center に操作がなく、Process Designer と Process Center の間に接続がないときに実行してください。
• 名前なしスナップショットが大量に蓄積されているケースなど、処理がタイムアウトするようなケースがあるため、自動削除が正しく行われているか、定期的にログを確認してください。
15Page © 2017 IBM Corporation
参考)Process Admin Consoleからのスナップショットの削除
スナップショットの削除は、wsadminだけではなく、ProcessAdminConsoleから実行することも可能です。IBM BPMの管理 > ヘルスチェック > スナップショットの削除 から実行可能です。
16Page © 2017 IBM Corporation
参考)スナップショット数の確認方法
BPMDBデータベースに対して以下のSQLを用いて直接照会をかけることで、スナップショットの数などを確認することが可能です。
select count(*) as lsw_snapshot from lsw_snapshot
17Page © 2017 IBM Corporation
ProcessServerのスナップショットの運用について
ProcessCenterと異なり、ProcessServer上にデプロイされるスナップショットの数は少ないため、スナップショットの数がパフォーマンスに影響することは多くありません。ですが、頻繁にデプロイを繰り返したり、アプリケーションの数が多い場合などにはスナップショットの数が必要以上に増加し、パフォーマンスの劣化につながるケースがあります。
そこで、ProcessServerにおいてもスナップショット運用の方針を定めておくことが重要です。基本的には、ProcessCenterと同等の管理を行いますが、ProcessCenterと異なり、ProcessServer上では稼働中のインスタンスを削除することは難しいため、スナップショットの数を必要以上に増やさない運用が必要です。
18Page © 2017 IBM Corporation
まとめ
IBMBPMを用いた開発においては、プロダクション環境の運用の設計だけではなく、開発開始前、もしくは初期の段階において、ProcessCenterの運用、特にSnapshotの運用方針を設計することが重要です。
具体的には、以下のような項目を定めプロジェクト内で合意し、適切にスナップショットを運用・管理することが重要です。
• スナップショット作成基準
• 名前付きスナップショットのアーカイブ・削除方針
• 名前なしスナップショットの削除方針
• 各作業の担当者
19Page © 2017 IBM Corporation
参照情報
IBM Business Process Manager V8.5 Performance Tuning and Best Practiceshttp://www.redbooks.ibm.com/abstracts/sg248216.html?Open
Snapshotの管理https://www.ibm.com/support/knowledgecenter/ja/SSFTBX_8.5.7/com.ibm.wbpm.admin.doc/topics/managing_snapshots.html
Issues with BPMDeleteSnapshot and BPMSnapshotCleanup commands in IBM Business Process Manager (BPM)https://www-01.ibm.com/support/docview.wss?uid=swg21669992