UZABASE Tech Blog

株式会社ユーザベースの技術チームブログです。 主に週次の持ち回りLTやセミナー・イベント情報について書きます。

Hinemos5.0.1移行記(その2:保守サービスとエンタープライズオプションを契約)

ユーザベース インフラチームの小林です。

だいぶ時間が空いてしまいましたが、「Hinemos5.0.1移行記(その1:理想と現実の葛藤)」の記事から引き続き、Hinemos5.0.1への移行のお話です。



前回のおさらい

Hinemos環境をバージョンアップするために、以下の流れで行うことを考えていました。

  1. Hinemos5Managerを新規構築 、動作検証

  2. Hinemos3のデータをHinemos5に移行

  3. Hinemos3からHinemos5への順次切り替え

しかし、実際には思っていた通りにいかないことが判りました。

具体的には、3番目の「Hinemos3からHinemos5への順次切り替え」の部分で、以下の問題がでてきたというお話でした。

  • Agent用にサポート対象バージョンのOpenJDKを入れるか、OracleJDK1.8を使い続けるか。

  • Hinemos3とHinemos5のAgentが同居できるといっても、どちらかのインストールディレクトリを変えないといけない。



救世主が現る

前回の記事にも書いてありますが、アトミテックさんが上記の問題を解決してくれました。
もともと、Hinemos5が出る前から、データ移行の相談を何回かしておりました。 その際に、すごく頼りになりそうだったので
「データ移行+移行時のトラブルサポート」という形で、今回依頼をいたしました。
結果的にそれが大正解で、本当にいろいろなことをサポートしていただきました。

特に、OpenJDKを入れるかOracleJDK1.8を使い続けるかという問題を解決するうえで、非常に助かりました。 既存の環境で使用しているOracleJDK1.8を使い続けたかったのですが、これを短時間で動作検証するのは私達には不可能でした。
しかし、快くアトミテックさんにご対応いただけたおかげで、OracleJDK1.8でもHinemos5.0の動作が一通り問題ないことが判りました。
当然ながら自己責任の上で、弊社環境ではOracleJDK1.8でHinemos5.0のAgentを動かしてます(今のところ不具合はありません)。

OracleJDK1.8でHinemos5.0のAgentを動かすにあたって、何個か落とし穴がありましたが、そこら辺もご対応をいただいてます(起動shellにJavaのバージョンチェックがあったりなど)。

移行できたよ!

問題を踏まえた上で、HinemosのAgentは以下の手順で切り替えることになりました。

  1. Hinemos3.1のAgentのインストールディレクトリ変更

  2. Hinemos5.0のAgentをOracleJDK1.8で起動

  3. Hinemos3.1からHinemos5.0への順次切り替え


Hinemos3.1のAgentの変更に当たっては、Agentの再起動が入るのでできるだけ既存のジョブに影響が出ないように調整しながら行いました。 Hinemos5.0のAgentは既存のジョブがないので、一括で作業をしました。
ジョブの順次切り替えは、前回書いたように各ジョブネットは簡単な仕組みで連携していたため、一つのジョブネットがうまくいったら、Hinemos3側のスケジュールを無効化、Hinemos5側のスケジュールを有効化しながら、代替1ヶ月くらいかけて切り替えることができました。

その途中でもいろいろとあったのですが(Nagiosの監視用スクリプトのVerUpや、エラー時のジョブの挙動が変わってた事など)、一つ一つ真摯にご対応いただけたおかげで、非常にスムーズに作業が進みました。

結果、保守サービスとエンタープライズオプションの契約を結ぶ事に

おかげで、無事にHinemos5への移行ができたのですが、あまりにも真摯に対応していただいたので、アトミテックさん経由でHinemosの保守サービスとエンタープライズオプションの契約を結ばせていただきました。

保守サービスとエンタープライズオプションを契約すると、以下のメリットがあります。

  • 修正パッチを提供してもらえる
    →今回で言うと、Hinemos5.0.2のリリース前に、Hinemos5.0.1のメモリリークの修正パッチが提供されて、事前にその不具合を解消する事ができました。
  • エンタープライズオプションが使えるようになる

  • Hinemosでわからない事を相談できる

分からない事を相談できるという点が有難く、Hinemosの情報を検索しても出てこないことが多いのですが、何が起きても聞ける環境があると思えるだけで大きな安心感があります。

個人的に嬉しいのは、エンタープライズオプションを使って、更にHinemosの使える幅が広がりそうなので、いろいろ試していきたいと思ってます。
Hinemosの情報が意外と少ないので、弊社ブログでもHinemosユーザーの皆さんに有益な情報を発信できればと思っています。


今回の移行で思った事

今回移行をしてみてすごく実感したのが、「やはり、あまり一つの製品で凝った仕組みを作らない方が良いな」ということでした。
Hinemosの機能を試したいと言っておきながら矛盾する話ではありますが、うちはHinemosを使いこなしていなかったおかげで、移行に大きな工数がかからずに済んだと思っています。
Hinemosは確かに便利でまだまだ使いこなせる余地があると思っていますし、他の有償版のジョブ監視ツールももっと細かいところができるかもしれません。
この「細かいところ」が肝で、このせいで移行が大規模や製品選定のネックになる事が多い気がしています。

弊社のジョブの組み方は、最低限のジョブネットを作って、各ジョブネット間はファイル連携という単純な仕組みを用いています。
このファイル連携も、shellでファイル作成とファイル監視をしているので、Hinemosからみたらジョブの実行をしているだけになります。
おかげで、ジョブの切り替えタイミングに余裕を持たせることができたので、私を含めて2~3人程度でも余裕を持って切り替えることができたと思っています。
もし、この組み方がジョブ監視ツールの機能で、全部ジョブの前後関係を組んでいた場合、異なるHinemos間での先行条件はできないので、一括で変更をしないといけない状態でした。

極端な話をすれば、Hinemosから別製品に載せ替えることもできたと思います(ジョブデータの変換できればですが)。

そこら辺の自由度は最大限残しておくためにも、あまり凝った機能を使わずに、できるだけ単純な部分を組み合わせるのが良いのではないか、と実感した次第です。

そうはいっても、便利な機能は使うべきだと思うので、そこら辺を意識しながら、あまり依存しすぎることのないように使っていくことが大事かなと考えています。

今後の要望

上でいろいろ書きましたが、私自身はHinemosと末永く付き合うつもりでいます。
今後も長くおつきあいする上で、今回の移行で引っかかった以下の点を実現してもらえると、次回(何年後か判りませんが)のHinemosバージョンアップ作業のハードルがだいぶ下がるはずなので是非お願いしたいところです。

  • インストールディレクトリを/opt/hinemos_XXXみたいなバージョンごとに分けてほしい
  • Agentをインストールするときに、OpenJDKを/opt/hinemos_XXX以下に一緒に入れてほしい



エンタープライズオプションのExp/Imp機能の画面紹介

簡単に、エンタープライズオプションで使いたかったExp/Impについて紹介します。
このおかげで、ジョブの修正の工数が大幅に縮小されました。

オプションをインストールすると、こんな感じでメニューが増えます。 f:id:manabu-kobayashi:20160420202629p:plain
エクスポート・インポートの設定は、クライアント設定の画面から確認や変更ができます。
f:id:manabu-kobayashi:20160420202656p:plain
実際の画面はこんな感じ。ここらへんで、エクスポート・インポート・差分比較ができます。
f:id:manabu-kobayashi:20160420202707p:plain
変更用のExcelの画面はこんな感じで、
f:id:manabu-kobayashi:20160420202717p:plain
出力した内容との差分比較は、このようなCSVファイルで出力されて、変更されたところが一目でわかります (自分の作業が想定通りか一目でわかって便利です)。
f:id:manabu-kobayashi:20160420202911p:plain