最近は使っているミドルウェアのバージョンアップ作業をしていた

題記の通りです。

例えばElasticsearchなら2.4 -> 5.0.1 -> 5.2とバージョンアップした。
Elasticsearch 2.4から5.0.1にアップグレードしていろいろはまった - wyukawa’s blog
Elasticsearch, Kibanaを5.0.1から5.2にアップグレードした - wyukawa’s blog

HadoopならHDP2.1から2.5.3にバージョンアップした。
HDP2.1からHDP2.5.3へアップグレードした - wyukawa’s blog

そのついでにAzkabanも3.1.0から3.15.0-1-g77411d7に上げたらH2DBがぶっ壊れたので、soloをやめてwebとexecutorを両方動かしてMySQLを使うように変更しました。
azkaban-solo-server-3.15.0-1-g77411d7を使っていたらH2DBがぶっ壊れた - wyukawa’s blog

これ以外にもPrestoは新しいバージョンが出ればすぐに追随してます。


この手のバージョンアップ作業って別にやらなくてもすぐ困るわけじゃないし、新機能がすぐ必要というわけでもないので、滞りがちです。重要だけど緊急ではない仕事の典型例です。逆に問い合わせ対応とかが緊急だけどそんなに重要ではない仕事の例。

まあでもやらないと徐々に辛くなるし、バージョンアップ後の新しいのを触ると古いのが相当色褪せて見えます。新しいiPhoneを2年ぶりとかに買い換えると味わうあの感じと似てます。

それに古いバージョン使い続けてると、新しいバージョンだと治っているバグを踏んだり、新機能が使えなくて困る時がいずれ来ます。すぐには来ないけどいずれ来ます。そうなったときに困らない程度にバージョンアップ作業をするのが良いと思います。


バージョンアップはPrestoのように簡単なものもあればHadoopのように大変なものもあります。Hadoopの場合はマシンの保守切れが近いとかの外部的要因があるとバージョンアップに踏切やすいかと思います。マシンを新しくすると当然ながらハードの性能も上がっていますし、OSを新しくする良い機会でもあります。

バージョンアップを誰がやるといいかというと、やっぱり最初にそのシステムを構築した人がやるのがいいと思います。そのシステムに依存するものは何があるかというのは新しく入ってきた人だとわかりづらいからね。まあノウハウの共有という意味では一緒にやるのがベストかも。

それに最初にシステム構築した人がバージョンアップ作業をやって何かぶっ壊した方が新しい人が何かぶっ壊すよりいい。

新しい人が既存の管理者の反対を押し切ってバージョンアップを敢行して、何かぶっ壊したら空気悪くなること間違いなし。さすがにそんな現場ないと思いますけど、既存の人が率先して新しいものを取り込んだいく姿勢を見せた方が周りに良い影響があると思ってます。

新しく入ってきた人だってレガシーなもの触りたくなりだろうしね。

まあそんな気持ちでバージョンアップ作業してました。