intra-martのメンテナンスを行う
この節では、運用中のintra-martのメンテナンスについて、製品アップデートやパッチの適用を中心に解説します。
製品カスタマイズを行うケースについては、開発の種類を参考してください。
intra-martをアップデートする
intra-martは基本的には年に2回アップデートを提供しています。製品、機能に関する強化、セキュリティやバグの改善などが含まれるため、最新のバージョンを利用できるように準備しましょう。
この項目では、intra-martをアップデートしたい時の手順と注意点を解説します。
手順の概要は以下の通りです。
- 事前準備: リリースノート確認、互換性確認、バックアップ取得、検証環境で事前検証
- IM-Juggling/WAR作成準備: IM-Jugglingで新WAR作成(オフライン対処)
- 検証環境でアップデート実行: 旧WARアンデプロイ → 新WARデプロイ、静的ファイル再配置、テナントセットアップ、メンテナンス実行
- 確認・テスト: スモークテスト・ログ監視
- 本番切替: 本番で検証環境と同様の手順(バックアップ → デプロイ → テナントセットアップ → メンテナンス → テスト)を行う
- ロールバック手順準備: 事前に明確化しておく
順番に詳細を見ていきましょう。
1. 事前準備
- 目的と対象範囲の明確化: アップデート対象のサーバ(開発/検証/本番)、対象モジュール、エディションを決める
- リリースノートと互換性確認: 対象バージョンのリリースノート・マイグレーションガイドで影響範囲(破壊的変更、必須メンテナンス、廃止機能)を確認する
- カスタマイズ/ユーザモジュール棚卸し: 標準ファイルを上書きしている箇所、独自mod(imm)やクラス差分、module.xmlの依存関係を洗い出す。必要ならソース再ビルドの計画を立てる
- 依存ソフトウェア確認: Javaバージョン、アプリサーバ、DB、外部ライブラリの対応状況を確認
- バックアップ取得(必須): DB(スキーマ+データ)、現行WAR、WEB-INF配下、静的ファイル(Webサーバ配下)、設定ファイル、カスタマイズ成果物を完全にバックアップ
- テスト環境準備: 本番と同等構成の検証環境で事前検証すること(本番直上での実施は避ける)
2. IM-Juggling/WAR作成準備
- WARファイル作成: IM-Jugglingでアップデート対象バージョンのプロジェクトを作成(または既存プロジェクトのバージョン変更)をして、アップデートバージョンのWARファイルを作成する
- IM-Jugglingへの取り込み: オフライン環境の場合はプロダクトリポジトリデータを事前取得(ライセンスキーが必要)してIM-Jugglingへ取り込む
- カスタムモジュールがある場合: 必要に応じてモジュールを新バージョンで再ビルドし、immをIM-Jugglingに取り込む/warに同梱する計画を立てる
3. 検証環境でアップデート実行
- サービス停止: 対象のアプリケーションを停止(Tomcatなどのアプリケーションサーバ、必要ならWebサーバ)
- 現行WARアンデプロイ: 旧WARのアンデプロイ(ただしロールバック計画により旧WARを保管しておく)
- 新WARデプロイ: IM-Jugglingで生成した新WARをデプロイ
- 静的ファイルの出力・再配置: Webサーバを使っている場合は、静的リソース(css/js/htmlなど)を生成・出力し、Webサーバのドキュメントルートへ再配置する
- テナント環境セットアップ: デプロイ後、テナント環境セットアップ(Webのセットアップ画面またはセットアップコマンド)を実行し、DBマイグレーションや設定初期化を行う
- メンテナンス処理: セットアップ後に必要なメンテナンスを実行(キャッシュクリア、インデックス再作成、マイグレーションSQL実行、バッチ/ジョブの再登録など)。製品ドキュメントに従って順序を守る
4. 確認・テスト
- 起動確認: アプリケーション起動ログのエラー確認、正常にWeb画面にアクセスできるかを確認
- 機能確認(スモークテスト): ログイン、主要業務フロー、ファイルアップロード、外部連携、バッチ実行などを実施
- カスタマイズ確認: 独自モジュールやUIカスタマイズ、拡張ポイントが正しく動作するかを確認。必要なら再ビルドや設定修正
- 性能・負荷・長時間テスト: 重要ならパフォーマンステスト、クエリやバッチの負荷確認を行う
- ログ・監視: アプリケーション/DBのログを数日モニタリングして異常を検出
5. 本番切替
- 事前通知: 切替時間帯、影響範囲(メンテナンスウィンドウ)を事前に関係者へ通知
- 本番環境に反映: 検証で問題なければ、本番で同様手順(バックアップ → デプロイ → テナント環境セットアップ → メンテナンス → テスト)を行う
6. ロールバック手順準備
- 復元手順の決定: 即時ロールバック方法を決めておく(旧WARと旧DBスナップショットからの復元手順)
- 手順のドキュメント化: 旧アプリケーション再デプロイ、DBのリストア、静的ファイル復元、キャッシュクリア、関連サービス再起動の手順をドキュメント化しておく
注意点・よくあるトラブル
- カスタマイズによる不具合: 標準ファイルを直接上書きしている場合、アップデートで上書きされたり互換性が壊れたりする場合がある。可能な限り拡張ポイントを使い、カスタム差分は再ビルドして適用する
- クラス競合: WEB-INF/classesとWEB-INF/libの読み込み順でクラス衝突が起きることがあるため注意
- モジュール依存: module.xml の設定を確認し、モジュールの適用順序や依存関係を満たすこと
- DBスキーマ変更: バージョン差によってはスキーマ変更(DDL)やマイグレーションSQLの適用が必要。必ずテスト環境で検証する
- Webサーバの静的ファイル: 古い静的ファイルが残ると画面崩れになるため、出力後に必ず差し替え・キャッシュクリアを行う
- オフラインIM-Juggling: インターネット接続不可環境ではリポジトリデータを事前取得(ライセンスキー必要)
コラム
上記はあくまでも基本の手順を簡略化したものです。詳細は、カスタマイズ状況、サーバ構成などに応じて以下のドキュメントを参照してください。
モジュールアップデート/テナント環境セットアップ/バックアップ・リストア:「セットアップガイド 」
バージョン毎の注意点・手順:「バージョンアップ、アップデートの手引き」
intra-martにパッチを適用する
製品のアップデートとは別に、緊急性の高い不具合や要望などを入れたパッチの提供も行っています。基本的な流れはアップデートと同一ですが、パッチについての手順もまとめていきましょう。
手順の概要は以下の通りです。
- 古いリポジトリ情報の削除: IM-Juggling起動、ローカルリポジトリの削除
- モジュールの選択/WARファイルの作成: パッチを適用、WARファイルの出力
- WARファイルのアンデプロイ: 旧WARアンデプロイ
- WARファイルの再デプロイ: パッチ反映済みのWARをデプロイ
- 静的ファイルの出力と再配置: IM-Jugglingから静的ファイル出力
- テナント環境セットアップ: テナント環境を最新に
順番に詳細を見ていきましょう。
1. 古いリポジトリ情報の削除
- IM-Juggling を起動:
設定→IM-Juggling→モジュールリポジトリを開く - 「ローカルリポジトリの削除」を実行: 処理中は操作不可
2. モジュールの選択/WARファイルの作成
- 画面右上の「パッチ」アイコンをクリック: パッチ適用方式を選択「すべてのパッチを適用(推奨)」「個別に適用するパッチを選択」
- 適用するパッチ内容を確認し「終了」をクリック: パッチ情報が取得され、プロジェクトのモジュール情報が更新される
- WARファイルの出力を実施: 「セットアップガイド - 5.4. WARファイルの出力」を参照
3. WARファイルのアンデプロイ
- 稼働中環境から既存WARをアンデプロイ: Resinは「セットアップガイド - 11.16.1. WAR ファイルのアンデプロイ」を参照
- Resin以外のWeb Application Server: 各ベンダー手順を参照
4. WARファイルの再デプロイ
- パッチ反映済みの新しいWARをデプロイ: Resinは「セットアップガイド - 7. デプロイ」を参照
- モジュールが反映されない場合:「セットアップガイド - 7. 11.18.3.3. Resin でWARファイルの再デプロイが正常にできない場合」を参照
5. 静的ファイルの出力と再配置
- Web Serverを利用している場合: IM-Jugglingから静的ファイル出力
- 出力した静的ファイルをエイリアスとして設定しているディレクトリ配下に配置: Web Server側のエイリアスディレクトリに既存ファイルと差し替えて配置
6. テナント環境セットアップ
- Web Application Serverを起動: システム管理者でログイン、「メニュー」→「テナント環境セットアップ」を実行
- 正常完了の表示:「テナント環境は最新です」
- 未完了の場合:「テナント環境セットアップ」ボタンが表示されるため、再度実行
注意点・よくあるトラブル
- Web Serverを経由してテナント環境セットアップを行う場合のタイムアウト値に注意:Web Serverのタイムアウト設置値を変更、またはWeb Application Server経由でのセットアップを実施を推奨
- サンプルデータ投入でエラーが起きた場合:再実行するとDBの一意制約違反が発生する可能性あり。その場合は「アンインストール」後に再セットアップを推奨
コラム
パッチ適用についての詳細は、 「セットアップガイド - 10.2.1. モジュールのパッチ適用」を参照してください。