type holyshared = Engineer<mixed>

技術的なことなど色々

個人アプリのherokuからGCPへの移行

運用している個人アプリをherokuからGCPに移行しました。

前から移行したかったのですが、面倒で着手していませんでした。
作業自体は土日の休みに少しずつ作業を進めて完了させました。

手順としては、機能単位でGCPのサービスに置き換えていく方針で進めました。

フェーズ1

まず機能単位での置き換えを進めました。
worker用のdynoを使用した非同期JobをCloud Tasksに置き換えたり、セッション情報の格納をDatastoreに置き換えたりして、既存のherokuのAddonを外していきます。

ログもCloud Loggingに置き着替えて、BigQueryに保存するようにします。

フェーズ2

次はアプリケーションをコンテナ化できるように、CI/CDを準備します。
これはアプリケーションをCloud Runで実行させる為です。

Cloud Runでは利用するイメージを指定する必要があるので、先にCloud Buildでコンテナをビルドして、Artifact RegistryにコンテナイメージをPushしています。

フェーズ3

最後にherokuからCloud Runに置き換えます。
先にステージング環境を置き換えて、アプリケーションが正常に稼働するか確認してから、本番環境を置き換えました。

作業後の感想

Terraformのテンプレートがなかったので、新規で定義ファイルを用意する必要がありましたが、仕事でも利用しているので、そんなに大変ではなかったです。

自分のアプリの場合は、自分ひとりしか使用していないので、herokuよりコストは安くすみそうです。