運用している個人アプリを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よりコストは安くすみそうです。