こんにちは、今日はWordPressをHerokuからOracle Cloud Infrastructure(OCI)に引っ越しした流れを書きたいと思います。
*この記事では移行作業に移る前に、なぜHerokuを選んだのか、またなぜOCIに移行するのかを話していきます。
HerokuからOCIを選んだ理由
レンタルサーバとHerokuとOCI
私は学生時代にさくらレンタルサーバを借りて使用していました。料金は月額500円ほどで年間約6000円でした。しかし、Herokuというものを知り、Herokuならば大きなサイトでなければ無料で使えることを知りました。
「どうやらHerokuでWordPressを無料で構築して運営できる」ということで、早速Heroku環境でWordPressを立ち上げようとしました。それと同時にOracle製品を扱うブログを立ち上げるということで、Oracle Cloudを使ってみたいと思っていました。
私がプラットフォームを選ぶ条件としてはまず「無料」であること、そして「WordPress」がインストールできることでした。
HerokuとOCIの比較(無料枠)
当ブログを作る前にHerokuとOCIを比較しました。
Heroku、OCIともに共通する特徴は以下です。
- ある程度無料
- WordPress可
この時点ではどちらでも良かったのですが。両者のデメリットを見ました。
まずHerokuのデメリットから(無料枠)
- ストレージが永続ではない
- MySQLのデータベース容量が5MBまで無料
- dynoという概念とスリープ機能
1.ストレージが永続でない。これが一番の懸念点でした。通常WordPressを使用するときメディアファイル等はローカルストレージに保存してアクセスしますが。Herokuではローカルストレージがでは永続ではありません(無料枠)。git経由でデプロイしたデータは残りますが、WordPress側からアップロードしたファイルはスリープに入る毎に消えてしまうそうです。
これによってWordPressのダッシュボードからWordPressの更新もできませんし、プラグインのインストールもgitを経由しなければなりませんでした。
2.MySQLが5MBまで。HerokuでMySQLを使う際はClearDBというプラグインを使うのですが、5MBを超えると書き込みができなくなり、月額プランへ移行しなければなりません。
3.dynoという概念とスリープ機能。Herokuの無料枠では30分アクセスがない場合はシステムがスリープしてしまい、アクセスに時間がかかるという問題が起こります。
次にOCIのデメリット(無料枠)
- Instance立ち上げから、DBインストール等全て自分で作業
- 事例が少ない
- WordPress立ち上げの難しさ(当時)
1.Instance立ち上げから、DBインストール等全て自分で作業。これはOCIはIaaSのため、VMインスタンスを立ち上げてWebサーバをたてDBをインストールして、WordPressをインストールして、ドメインを設定して。この作業が全て1からになります。当時の私からしたらハードルが高めでした。
2.事例の少なさ。WordPressをOCIで動かしている記事を見つけることが少なく、当時の私は果たして本当にできるのか?と思っていました。またドキュメントも理解をするのが難しいと感じました。
3.WordPress立ち上げの難しさ(当時)。これは1.2とかぶる内容ですが、今だからこそ簡単にWordPress導入できますが、当時Cloudを使ったことがなかった私が1からインスタンス立ち上げ、そしてWordPressの運営まで果たしてできるのかと不安に思い、あまりOCIに積極的でありませんでした。
Heroku選択の経緯と問題点
私は最終的にHerokuを選択しました。理由としてはOCIのデメリットでも挙げた通り、WordPressの構築に失敗したからです。
OCIのVMインスタンスを立ち上げPHP、Apache、WordPressのインストールを試みましたがこのブログを立ち上げる前の私には完了することができませんでした(その後OCI上で環境構築ができ、当ブログでOCIにWordPressを構築する記事を書いています)。
仕方なく私はHerokuを選びました。Herokuも良いサービスで非常に使いやすく、簡単にWordPressの構築ができます。プラグインも豊富なので大抵のことはHeroku上でできてしまいます。しかし無料枠が思っていたよりブログ運営の”かせ”となってしまいました。
まず、メディアデータが永続されないことです。これは最初からわかっていたので外部クラウドストレージサービス(cloudinary)を利用して補いました。
*余談ですが、このときOCIのオブジェクトストレージという選択肢もあったのですが、API接続がうまくいかず断念してCloudinaryにしました。後にS3APIを使用して接続ができた記事を書きました。
また、プラグインインストールをローカルで行ってgitでpushというのがいちいち面倒でした。そして決め手が、WordPressの更新作業です。これもおそらくダッシュボードからはできないので、非常に面倒に感じました。
次に、懸念していたデータベースの容量5MBです。私は30日間記事を毎日書くことを目標としているので。これまで3週間以上毎日記事を作成しました。するとやはりデータベースの容量も圧迫されてきます。数回Herokuからアラートが届きましたが、そのつどWP-optimizeというDBの最適化を行うプラグインを使用して、容量を確保していました。
そしてやはりスリープ状態であるとサイト表示が遅くなってしまいました。
HerokuからOCIへ移行を決断
ブログを書き続けてきて、さらに実際OCI使ってみることでCloud操作にも慣れ、知識も少しつきました(Oracle Cloud Infrastructure 2020 Certified Associate取得)。
さらに、先ほど紹介した通りに過去記事でOCIにWordPressを構築する方法やオブジェクトストレージを使うやり方を身につけました。これはOCIに引っ越すしかないと思い、念願であったWordPressをOCI上で動かし、管理している今に至るわけです。
もちろんOCIのAlways Freeの枠内で無料で構築・運営を行っています。OCIのストレージ等のリソースもブログ運営では余るほどありますので、今後も問題ないと考えます。
こうしてHeroku上で動かしていたWordPressをOracle Cloud Infrastructureに移行して動かすまでに至りました。
おわりに
今日はWordPressをHerokuからOracle Cloud Infrastructureに移行する話の前置きでした。Herokuを選択したことでgitを使ったり、Paasというものを使うことができたりと非常に良い経験だったと思います。
私はOracle製品を使いたいという気持ちがあるためOCIに固執していた部分もありましたが、今回の件ではデメリット比較でOCIに軍配が上がりました。
今後もOCIのリソースを使っていきたいと思います。明日はHerokuからOCIに引っ越した実践編を書きたいと思います。
本日も最後までご覧いただきありがとうございました。
コメント