mycontestエンジニアブログ

mycontestに関する技術的なブログ

2016年12月22日

mycontestで欠かせない3つの技術的キーワード!


皆さん、こんにちは!mycontestのエンジニアです。
この一年どうでしたか?僕はてんやわんやで大変でしたので、来年は何事もなく平穏無事に過ごしたいなと思っています。

今回は前回・前々回と違って技術的な話をしたいと思います。mycontestは特性上大量のアクセスをさばいたりすることが多く、様々な工夫を凝らしています。
その中で特に欠かせないであろうというキーワードを3つピックアップしたいと思います。

「Nginx」で大量の同時アクセスを処理

NginxはフリーかつオープンソースなWebサーバです。
ちなみに一般的に言われているWebサーバだったり、Linuxに最初から入っているWebサーバは大体Apacheになります。
そもそもApacheとの違いはたくさんありますが、処理性能並行性メモリ使用量の小ささが乗り換える大きな違いとして挙げられます。

で、 どうしてNginxをmycontestで採用したのか?
mycontestにはソーシャル投票でバズを起こす仕組みがあるので、SNS経由での流入が大半を占めるので、大量に同時アクセスがされることが多く、 またApacheには「クライアント1万台問題」と言われる、クライアント数(同時アクセス数)によって処理がパンクしてしまう問題があります。
大量の同時アクセスをうまく処理するためにはNginxだと思い、導入することにしました。

ApacheをWebサーバとして持つ弊社サービスのbuzz.getstage.com (mycontestの前身である音楽に特化したコンテストプラットフォーム)と比べて、かなりの数のクライアントを裁くことが実際にできました。

「Redis」を使ってページ表示速度を大幅改善

Redisとはメモリ上で動作するキー・バリュー型の揮発性データベースのことです。キー・バリュー型のデータベースはNoSQLとも呼ばれ、 MongoDBやApache Cassandra、DynamoDBやBigTableなどたくさんあります。
それぞれ特徴が違うのですが、今回Redisを選んだ理由としてメモリに展開されるので高速にデータの読み書きが可能かつ揮発性を 所有するという点が挙げられます。

先ほどの大量の同時アクセスと合わせての話になりますが、同時アクセス数が多いとページの表示速度は遅くなります。
もちろんNginxでかなりの改善は見られるのですが、MySQLなどRDBMSはHDDもしくはSSDにて読み書きがされるのでやはり多少の時間はかかります。
そこで、MySQLの結果をメモリ上(Redis)にキャッシュしておくことで、MySQLにアクセスすることがないので大幅に表示速度が改善されます。

ただそこでネックとなってくるのが、このデータは本当に最新なのか?ということです。
そこで何秒後にこのデータは消えるという揮発性を利用することで、データを保ちつつ、時には新しいデータをキャッシュするということができます。

「AWS Certificate Manager」でSSL対応

SSL対応、これってかなり面倒ですよね。
特にmycontestのようにコンテスト毎にサブドメインを使用している場合は都度SSLを発行しないといけないのか?となると値段がすごいことになってしまいます。
ワイルドカード指定できるSSLであってもそれなりに値段がはってしまう…そこでAWS Certificate Managerです。

そもそもAWSでは証明書をロードバランサーにつけることができるので、各インスタンス(サーバ)にSSL証明書を割り当てるという作業も発生しないので簡単です。
そこに加えて証明書をAWS Certificate Managerによって発行することで、無料でかつサブドメインやワイルドカードにも対応したSSL証明書を発行することができます。

今ではSSL対応をしているWebサイトではSEO的に有利になるだかならないだかという話もありますね。
入れておくのもいいかもしれません。

まとめ

mycontestで欠かせないキーワード3つを紹介しました。
Nginxはほぼほぼ最近のサイトでは導入されてきていますし、色々と知見も溜まってきているので導入しやすくなっていると思います。
もちろん自分たちが楽に組めるかどうか?これも重要ではあると思いますが、最終的にアクセスしてくれるユーザのことを考えてサイトを作るとなると、 大量アクセスや速度、ひいてはSSLというものに対応するのは欠かせないのではないでしょうか。


  • LINEで送る

その他の記事を読む

まずは無料でデモ版をお試しください

アカウント作成からテストページの作成まで、すべての機能を無料でご利用いただけます。
キャンペーンページの作成でお困りの際は電話やチャットでサポートいたします。

デモをお試し下さい

無料ですべての機能をご利用いただけるログインアカウントを発行いたします。是非お気軽にお試しください。

*入力した内容ですぐに送信されます