Google CloudからOracle Cloud（OCI）に移行したらコストが半分以下になった話

みなさん、マルチクラウドやってますか！僕は案件ではAWS、Azure、個人や自社ではGoogle Cloudが多かったのですが、このたびOracle Cloud（OCI）にメインの運営サービスを移管しまして、パフォーマンスよくコストも半分以下になったので記事にまとめました。ただし、万人にお勧めというわけでもないのでそのあたりは記事をご覧ください。

# 円安しんどい

なぜ我々の収入はドル建てじゃないのに支出はドル建てなのか、月980円じゃなく9.8ドルにしてたら今頃は売り上げも1.5倍くらいになってたのに[^1]。そんな気持ちを抱えながら増え続けるクラウドコストに苦しんでいました。また、サービスがおかげさまで成長し、トラフィックの課金もお小遣いと呼べないレベルになってきました。

安いクラウドサービスを探し続け、CDN、VPS、もちろんN大クラウドもチェックし「どうせPHP/MySQLなんだからエックスサーバの一番いいやつ借りとけばいいのでは」「いまどきのflyioとかsupabaseとかplanetscaleとかどうなん」なんてことも脳裏によぎりましたが、後述する理由によりいろいろ見送りました。

# 結論Oracle Cloud（OCI）にお引越ししました

Google Cloudで運営していたサービスを1か月くらいかけてOCIにお引越ししました。執筆時点で引っ越しから約1か月がたちました。

**構成**
- Google Cloud CDN → Cloudflare + Bunny CDN
- Cloud Run → OCI Container Instance
- Memorystore for Redis → OCI Cache / NoSQL DB（検証中）
- Cloud SQL (MySQL) → MySQL Heat Wave DB
- Cloud Tasks → OCI Queue
- BigQuery → 移管せず

コストでいうと、(コンテナ)インスタンス群が無料～月1.5万円くらい、MySQLがHA構成で4割安いくらい、ネットワークコストが無料になり、全体として半額以下になりました。やったね！

Always Free枠というのがあり、コンテナインスタンスもArmを選べば4台まで無料、ネットワークは10TB（テラ！）まで無料で超えた後もその他のクラウドの1/3程度です。

https://www.oracle.com/jp/cloud/free/


# OCIどうなの？

基本的には後発のクラウドで、2018年に第一世代のクラウドをぶっ潰していまの仕組みを作り直しました。なので技術的負債が少なくて安い（意訳）と聞きました。

「こういうのでいいんだよ こういうので」という感じのクラウドです。AWSのよく使われている機能のうち上位30％くらいを用意しました、みたいな感じです。IaaS系はだいたい網羅され、PaaS系、SaaS系は厳しいです。

なのでオンプレで育ったおじさんにもやさしく、ロードバランサーを立てて、配下にインスタンスを立てて、ファイアーウォールで疎通していいIPとポートを指定して、というのでよければめちゃくちゃコスパいいです。

逆に、ソースコードのあるディレクトリでCLI叩いたら勝手にビルド・デプロイされて実行可能なURLが返ってくる、とかそういうのは（Functionとか無くはないですが）いまいち充実していません。

セキュリティ、コスト、パフォーマンスは強いけど機能は少ない、というのがOCIです。本当はCDNとかもOCIにしたかったのですが好みのやつがなかったです。そもそもSSL/TLSの証明書をコンソールポチポチして発行する機能すらありません。自分でLet's Encryptを毎月実行する必要があります。そういうクラウドなんです。

まとめると、新規サービス向きというよりは、運営1年以上たってトラフィックの見通しもたつし、インフラのメンテもだいぶなれて手順も確立してるな～コストが月〇万円を超えて気になってきたな～というサービスに向いています。そのため自分も新規サービス群はGoogle Cloudにおいたままとなっています。

余談ですが、移管した話をすると、上の世代のひとたちはOracleと聞くと邪悪さを感じるようです。そんな過去のイメージにこたえるかのように、〇年間前払いするとその期間は(割引)価格で単価を **日本円** で固定しますという契約方法を採用しているようです（ほかのクラウドは定価の〇%引きなので為替・価格改定リスクが残る）。今回も2桁万円くらいですが前払いしました。そのレベルでも営業さんが丁寧に対応してくれます。

# 採用されなかったサービス

- AWS/Azure/Google Cloudでのコスト最適化は劇的には変わらなかったので却下
- いまどきのイケてるサービスはDBのHA構成を有効にするとへたするとGoogle Cloudより高くなったので却下
- エックスサーバ（占有）はDBをHAにできなかったのとRedisなど機能不足で却下
- VPSは最後まで検討したけどちょっとだけ機能不足orそこまで安くならずで却下（VultrやLinodeなど）

参考：

https://zenn.dev/kusuke/scraps/a9635e32741d5b?ref=qiita

# Cloud Runのオートスケールから卒業しちゃって大丈夫そ？？

管理画面からデプロイするだけで勝手にスケールして、アクセスがないときは0台になる夢の技術、それがGoogle Cloud Runですが、よく考えたらそこまでオートスケールしなくて大丈夫なのではという結論に至りました。詳しくはこちらのメモに書きましたが、DBはオートスケールしない、ネットワークコスト含むご予算はオートスケールしないという点です。

https://zenn.dev/kusuke/scraps/851b20fa6b488c?ref=qiita

あとはデプロイが簡単という点に関しては、OCIもがんばってJS SDKを使ってコードを書けば同様のことはできるようになりました。Claude 3様様ですね。

# OCIで困ったことその他

やはり情報が少ない。公式っぽいドキュメントや中の人と思われるQiita記事があるので、他のメジャーなクラウドのように質の低い情報や古い情報がネットにあふれることはないのはいいところですが、細かいところになると手探りが続きます。
ただし今回は前払いプランにしたのもあり、がっつり担当エンジニアの方がメールで質問に答えてくれました。なかなか手厚かったです。

自力だとまず用語とか「あのクラウドにおけるああいう概念はないの？」みたいな部分でつまづきます。コンパートメントってなんだよ、とか、大阪リージョンから一生抜け出せないんですが、、とか。

あとはPHPのSDKが弱い、エンプラ志向な気もするので、ですよね～という感じですが、Java/Python/NodeJS/Goあたりなら大丈夫そうです。PHP SDKはObject Storageくらいしか機能がありませんでした。


現場からは以上です。

あと、はじめてOCIのユーザー会イベントにも顔を出してみようと思うので、質問とかがあればぜひ。（仕事の都合とかでドタキャンしたらすみません）

https://fullenergy-oci.connpass.com/event/322754/

[^1]: とくに980円のサービスを運営しているわけではありません。みんなのお気持ちを代弁しました