はじめに
こんにちは! インフラチームの高畑です。 最近のコロナ自粛で自宅にいることが多くなっている今日この頃、みなさまはいかがお過ごしでしょうか。
私は最近 DIY にハマっていて大きめの机を作ったりして割と楽しんでいたりします。
さて、今回は全ての主婦の味方で月間総 PV 4000 万を誇る「暮らしニスタ」の画像配信サーバを Oracle Cloud へ移行して 3 ヶ月ちょっとが経過したので、どのように移行したのかなどをご紹介しようと思います。
今までの構成について
1 年ほど前、さくらのクラウドで稼働していた暮らしニスタのサーバ群を AWS へと移行し、各種画像は EC2 に構築しているサーバとさくらのウェブアクセラレータという CDN を通して配信を行ってきました。
当初はこの構成であまり問題にはならなかったのですが、昨今の新型コロナウィルス流行などの影響でアクセスが急増してきており、CDN のネットワーク転送料が右肩上がりで上昇してきていました。
転送量に関しても、最終月が月約 25TB の転送を行っており、料金がグッと上がる結果となりました。
さくらのウェブアクセラレータは日本国内にのみ(東京と大阪の 2 拠点)データセンタが配置されているため、もちろん各社 CDN に比べるとかなりお手頃な料金(500GB まで無料、超過分は GB あたり 5 円の従量課金)で利用できますが、それでも現状のコストパフォーマンスを考えた結果ホスティング先を移行することに決めました。
ホスティング先の選定
移行を決定するにあたり、どこのホスティング先へ移行するか比較検討を行いました。 今回比較したのは 3 社で、どれも弊社で利用実績のあるベンダとなります。
また、前提条件として下記を考慮した上での選定としました。
- ロードバランサを利用して複数台で負荷分散ができること
- アウトバウンド転送料金などネットワークに関するものが安価であること
- 84Mbps ほどのデータ転送に耐えられること
ConoHa
まず最初に検討を行なったのは ConoHa の VPS です。
ConoHa の VPS はネットワーク転送量は無料かつ、VPS とロードバランサ、ディスクも安価で手軽に運用できるため有力候補だったのですが、そもそもネットワーク帯域が 100Mbps 共通のため、PV が増えた場合ネットワーク帯域がボトルネックとなってくる可能性があり今回は見送りとなりました。
さくらのクラウド
元々暮らしニスタはさくらのクラウド上で運用しており、後に AWS へ移行したという経緯があるのですが、こちらも再度見積もりから取り直し検討を行いました。
結果的にスイッチなどのネットワーク機器やストレージが高額で移行するメリットがあまりなかったのでこちらも今回は見送りとなりました。
Oracle Cloud
Oracle Cloud は弊社で Grafana Loki を運用するために最近利用し始めたクラウドベンダです。
こちらはネットワークのアウトバウンド転送料金が月 10TB まで無料で、10 TB 以降の超過分は GB あたり 3 円の従量課金制となります(2020 年 8 月 6 日時点)。 また、24 時間 365 日のサポートが無料で利用ができるため、何か困りごとができたら気軽にサポートへ相談することも可能です。
Oracle の担当者の方に見積もりを出していただき、比較した結果今回は Oracle Cloud を採用することになりました。
構成の検討
Oracle Cloud の利用が決定し、本格的に移行の計画を行なっていきました。
ある程度の要件は決まっていたのですが、インスタンスのシェイプ(AWS で言うインスタンスタイプ)やインスタンスの台数、ロードバランサのプランなど、 チームメンバーや Oracle の担当者の方々と相談させていただきながら決めていきました。
元々 CDN を利用していたため、バックエンドとなるインスタンスは 2 台程度あれば余裕がある状態ではあったのですが、今回は CDN を挟まないため全てのリクエストがバックエンドへと到達することになります。 そのため、何台インスタンスを用意すればある程度余裕を持たせて運用できるのか慎重に検討を行っていきました。
また、画像配信サーバは Nginx から AWS S3 に保存されている画像データをキャッシュして返すような構成となっているのですが、最初どの程度のリクエストを Oracle Cloud 上に構築したインスタンスを流してキャッシュを温めるかなどの検討もこの段階で行なっていきました。
色々と検討を行なった結果、最終的に下記のような構成でスタートすることに決定しました。
サーバの構築
Oracle Cloud の契約も終え、諸々の構成が決定したので実際にサーバの構築に取り掛かりました。 サーバのミドルウェアなどは全て Ansible でコード管理されているので、実際にはインスタンスをたてて Ansible を流してロードバランサを設定してという流れで作業を行なっていきました。
こちらの作業自体は動作確認を含めて 1 日程度で完了しました。 やはり Ansible などコードベースでミドルウェアが設定できる環境が整っていると便利ですね。
移行作業
今回、ある程度キャッシュを溜める必要があり、メンテナンスを実施するとキャッシュが思うように温められないことが予想されたので、ノーメンテで挑むことにしました。
移行の際、DNS ラウンドロビンを利用して最初はほんの一部のリクエストを Oracle Cloud 側へ流しキャッシュを温めていき、サーバ負荷の様子などを Grafana 上で確認しながら数日かけてちょっとずつウェイトを Oracle Cloud 側へ寄せていきました。 nginx-module-vts めちゃくちゃ便利。
移行作業を終えて
実際に移行を終えて 3 ヶ月ほど経過していますが、かなりのコスト削減に成功しましたし今のところ安定して稼働できています。 元々 CDN を利用していた頃は平均月額 8 万円ほど、最大で 12 万円ほどの料金が画像配信の部分でかかっていましたが、Oracle Cloud に切り替えてからは平均 4 万円ほどに落ち着きました。
嬉しいことに、暮らしニスタの PV もどんどん増えていき今では月間総 PV 4000 万に到達しています。この先 PV が増えるにつれて CDN の料金もどんどん上がっていたことを考えると、今回の移行は効果抜群だったと思えます。
おわりに
今回、各方面から協力してもらい、結構なスピード感かつ障害なしで移行作業を終えることができて正直ホッとしています。 また今回の移行で Oracle Cloud を利用してみて、やはり月 10TB までの転送料が無料なのは大きいと感じました。
今後 Oracle Cloud にマネージドな SSL 証明書などが出たら全てを載せ替えたりも検討できるので勝手に熱望していたりします。
結構なボリュームになってしまいましたが、最後までお読みいただきありがとうございました!