こんにちは、LIGブログの開発を担当するづやです。現在、8月に増床したオフィスで働いているのですが、以前のオフィスに比べオフィスグリコのお菓子の種類が少なくなったような気がして少しさみしいです……。
さてお気づきの方も多いと思いますが、LIGブログでは9月末にリニューアルをおこないました。オウンドメディアとして運営してきたLIGブログを、現在の月間800万PVから目標の月間5000万PVに達成するための一歩として、マーケティングや旅、キャリア、英語などの「チャンネル」を新設し、新たなジャンルを開拓できるようにしました。
リニューアル後は、流入するキーワードの幅が広がったことで検索流入が増加したり、テレビで紹介されたキーワードでLIGブログが上位表示され、リアルタイムの読者数が3000人に迫ったりすることもありました。そんなとき、絶対に避けなければならないのが、LIGブログが落ちること。その対策として、LIGブログのサーバー構築では負荷に応じた自由な拡張や運用ができる必要があります。
今回、EC2やS3をはじめとするAWSプロダクトを完全支援するサービス「cloudpack」を運営するAWSのプロ、アイレットさんにアドバイスをいただきましたので、改めて「絶対に落ちない」AWSサーバー構築をする上で大切なことをまとめました。
(おさらい)AWSとはなにか
まず、AWSについて復習しておきましょう。AWSは「Amazon Web Services」の略で、Amazonが提供するクラウドサービスの総称です。
AWSの中にはさまざまなサービスが含まれています。例えばEC2(仮想サーバー)、S3(ストレージ)、RDS(リレーショナルデータベース)、CloudWatch(監視)など。AWSでは、これらのITインフラのリソースを、いつでも、どれでも、使いたい時に、使いたいだけ、必要なスペックで、利用することができるのが特長です。ほとんどのサービスが管理画面から操作できて、利用するまでに必要な時間もごくわずかです。
コストを抑えつつ、スピーディーにサービスを立ち上げることができるのが、AWSの最大のメリットでしょう。とにかく簡単にサーバー構築ができるAWS。サーバー構築については下記の記事が詳しいので、立ち上げに不安があればご確認ください。
わずか5分!? AWSのEC2でクラウドなウェブサーバーを構築してみた AWSのEC2でのウェブサーバーを簡単に構築する方法【2014年版】
そもそも、どのような場合にAWSを利用するのか
サーバーの使用状況にあわせて自由に拡張・縮小できるのが、AWSをはじめとするクラウドサービスの特長です。
プレスリリースをうったり、広告をうったりすればアクセスは集まりますし、時期によってもアクセスは変動するでしょう。LIGブログでも「お中元 時期」などのキーワードによって、お盆前くらいは定常的にアクセスが多いことがあります。
サーバーの使用状況に、このように大幅な波があるサービスやサイトの場合、拡張性がないサーバーを使っていると、CPUの負荷が限界を超えて、エンジニアの大敵、503エラーが発生してしまいます。503エラーについては、別の機会にまとめたいと思います。
クラウドなら「勝手に拡張(スケール)してくれる」というのは思い込み
ここで重要なのが、クラウドは「勝手に拡張(スケール)してくれる」と思われているが、そうではない、ということです。
たしかにAWSは自由に拡張できるのですが、それはあくまでも扱う人の手によります。ある程度は初期設定でも対応できますが、成長をはじめたサイトでは放っておいてもなんとかなる、なんてことはありませんので注意してください。
アイレットの後藤さんにお話を伺ったところ、「拡張(スケール)には『どういうときに拡張し、どういうときに縮小するか』の仕掛け作りや、事前の予測と準備が必要です。具体的には、曜日・時間ごとのピークのトラフィック負荷を事前にある程度予測しておく必要があります」とのことでした。
通常はCPUの負荷に応じてアラートが鳴るようになっていますが、経験的にも、アラートが鳴ってから対応するのでは手遅れになる場合が多いです。
では、このサーバー使用量の拡張(スケール)にはどのような方法があるのでしょうか。こちらもざっと振り返ってみましょう。