log > DigitalOceanからHerokuとS3に移行した

さくらのレンタルサーバ→さくらのVPS→DigitalOceanの順に移行してきた。レンタルサーバでは自由にcronを使うなどの自由を求めてVPSに移行した。DigitalOceanへは簡単にCPUや容量を増やせる手軽さを求めて移行した。

Ansibleを学び、DigitalOceanのセットアップを自動で行った私だったが、度重なる脆弱性の対応に不安になり、管理することが重荷になっていた。GHOST、Heartbleed、DROWN、POODLEなどに対策しても、次々出てくる脆弱性にこのまま対応できるのか、忙しくてもパッチを当てられるのかが不安だった。果たして今後も素早く対応できるのかわからない。なら少しコストがかさんでも他人に任せた方がいいだろうと考えたのだった。

レンタルサーバに戻ることを真っ先に考えた。試算すると、レンタルサーバも悪くはなかった。年5000円でいいのだから。しかし制約が多すぎるため、PHPを動かすのであれば別のところがいいだろう。1

であれば、やはりPaaSを使うのが得策だろうと思った。いろいろ調べた結果、Herokuなら楽にプログラムを走らせられそうだった。PHPも対応しており、他の言語も問題なさそうだったので少しずつプログラムを移行していった。全てのプログラムを移行し終えたとき、静的ウェブサイトだけが残った。

あまり気乗りではなかったが、AWSのS3を使うことにした。気乗りでなかった理由は、リージョンの違うRDSが表示されず、知らない間に課金されていると勘違いしてアカウントごと停止していたから。忘れていたい黒歴史である。何年も前のことだったのだが、AWSを停止したままでは使えないので、サポートにメールをしてAWSのアカウントを再開した。

それから2FAの設定やIAMの作成、Billing Alertの設定などセキュリティ対策を行い、ようやくS3でウェブサイトを表示できたのだった。最終的にはRoute53とCloudFront、SES、AWS ACMを使い、独自ドメインとHTTPS対応も行った。なお、HTTPS対応は2週間くらい放置していたため、httpsページはエラー表示のまま放置されており、大変申し訳なかった。

何はともあれ、Heroku+S3で管理しなくてもいい状態になり、ストレスフリーな環境へ無事に移行したのだった。2今後移行するとしたらDocker swarm&AWS Lambdaだと思う。


  1. ただし1枚PHPをcronで毎時動かしたい程度であれば、レンタルサーバでいい。
  2. 移行したけど、DigitalOceanはSnapshot(すぐ復元できるバックアップ)を使用しているので月10円くらいかかってる。