MicroAd Developers Blog

マイクロアドのエンジニアブログです。インフラ、開発、分析について発信していきます。

Kotlinのアップグレードをした話

マイクロアドシステム開発部の東です。業務では主にUniverse Adsの管理画面開発をしています。

今回はUniverse Adsの管理画面で使用しているKotlinのアップグレードについて、お話ししていきます。

はじめに

Universe Adsの管理画面(以下、管理画面)ではサーバーサイドの言語でKotlin(バージョン1.3.71)を用いています。 Kotlinのバージョンは頻繁にアップグレードされており、2021年12月時点での最新バージョンは1.6.101と使用しているバージョンと乖離していました。 そこで開発チームでは、以下のメリットを享受できると考え、管理画面で使用しているKotlinのアップグレードを行うことになりました。

  • 使用しているバージョンが非推奨(サポート対象外)になることを防止できる
  • 開発で言語の最新機能(文法の簡略化や処理速度向上)を利用できる
  • (今まで行ってこなかったこともあり、)今後の管理画面に関わる言語・フレームワークのアップグレードの検証方法を確立できる

アップグレード完了までの手順

アップグレードするにあたり、デグレを出さないかつ検証にかかる工数を削減するために、以下の手順で踏みました。

  1. 設定ファイルに記述しているバージョンを変更
  2. コンパイルや自動テストでエラーが発生しないことを確認
  3. 画面の一部機能を実際に操作して、問題がないことを確認
  4. 利用できるユーザーを制限しているサーバへリリースし、問題がないことを確認
  5. 本番サーバにリリース

それぞれについて、詳しく話していきます。

設定ファイルに記述しているバージョンを変更

管理画面で使用しているKotlinのバージョンは設定ファイル(pom.xml)で指定されています。 設定ファイル内で指定されているバージョンの値を、アップグレードしたいバージョンに指定します。

  <properties>
     <kotlin.version>1.6.10</kotlin.version>
  </properties>

コンパイルや自動テストでエラーが発生しないことを確認

設定ファイルに記述しているバージョンの値を変更した後、コンパイルをします。 また、自動テストでプログラムが想定している動作をするかどうかを確認します。

まず、アップグレードを行った際はこの段階でエラーが発生すると考えられます。 実際、今回のアップグレードでは、既存の関数について一部記述形式が変更になっていたため、ここでエラーになりました。 エラーになった箇所を修正し、再度コンパイル・自動テストを行います。

画面の一部機能を実際に操作して、問題がないことを確認

ここでは、実際に操作することで問題がないことを確認します。 しかし、管理画面には数多くの機能が存在しており、網羅的に検証するには工数が多くかかってしまいます。 そこでこの段階では、管理画面で多く使用されている機能(例: ログイン、トップページ表示など)に絞り検証します。

利用できるユーザーを制限しているサーバへリリースし、網羅的に機能を使用してもらう。

Kotlinで書かれたコードの影響範囲の広さや想定外のユーザ操作を考慮すると、上記までの方法では網羅的に検証ができません。 そこで、実際に多くのユーザに検証を兼ねた本番利用をしてもらう必要があると考えました。 ただし、ここでは社内ユーザのみが利用可能な本番サーバをリリースの対象とします。 そうすることで、仮にバグが見つかった際の影響範囲を最小限に止めることができると考えました。

また、具体的な計測方法や基準がなければ、網羅的に使用されているかどうかを判断できません。 そこでKibanaによりどれくらい使用されているか、エラーが出ていないかを可視化2させることで計測ができるようにします。 網羅的に使用されているかの基準を以下とし、その基準をクリアできれば問題なしと判断しました。

  • 検証期間中の総リクエスト数が指定回数以上か
  • 機能別で分かれている各APIに指定回数以上アクセスされているか

Kibanaの可視化画面(アクセス数)
Kibanaの可視化画面(アクセス数)

Kibanaの可視化画面(APIのパス別ログ件数)

本番サーバにリリース

以上の手順全てで問題がないと判断されたのちに、社外でも利用されている本番サーバにリリースします。 本番サーバにも監視が導入されているため、万が一アップグレードによるエラーが発生した場合でも、アラートが通知される仕組みになっています。

終わりに

今回はUniverse Adsの管理画面で使用しているKotlinのアップグレードについて、お話しさせていただきました。 今後の予定としては、Java17へのアップグレードを控えています。 その先駆けとして今回、管理画面に関わる言語・フレームワークのアップグレードの検証方法を確立できてよかったです。

ここまで読んでいただき、ありがとうございました。