ISUCON9 on Alibaba Cloud

こんにちは、クラウドソリューションアーキテクトの安齋です。
今回は2016年から個人的に毎年参加しているISUCONの、ISUCON9 on Alibaba Cloudの参戦記録を書き連ねたいと思います。

ISUCONとは

イイ感じにスピードアップコンテストという名前の通り、Webアプリのレスポンスの速さを競うコンテストです。
http://isucon.net/

ISUCON9のお題

https://gist.github.com/sota1235/a7356a5909af264c1c1c840dd216c98f
イス専門のフリーマーケットで、出品・購入ができます。
画像がいっぱいありますね!これは、Alibaba Cloud CDNが炸裂しますね!!

トップ画面

やったこと

アプリチューニングやNginxチューニングなど、したいことは山ほどあったのですが、せっかくAlibaba Cloudを使っているので、インフラ構成を中心にチューニングしてみました。

最終的な構成

構成図

1. 画像の保存先をECSからOSSに変更

ECSにアップロードされた画像の保存先をECSのローカルストレージからOSSに変更しました。

1-1. OSSバケットを非公開で作成

OSSへの書き込み権限はECSのみに付与しました。

2. 画像をCDNから配信

2-1. CDN用にドメインを作成

外部で作成したドメインをAlibaba Cloud DNSに委譲し、Alibaba Cloud CDN用にサブドメインを作成しました。

2-2. CDN用ドメインにCDNのCNAMEを登録

2-3. OSSバケットにCDN用ドメインを紐づけ

OSSのドメインをAlibaba Cloud CDN用のドメインに紐づけました。

2-4. CDNのオリジンにOSSを設定

Alibaba Cloud CDNのオリジンサイトにOSSを設定しました。
OSSへの読み取り権限をAlibaba Cloud CDNのみに付与しました 。

2-5. CDN用ドメインをHTTPS化

DVレベルの無料のSSL証明書をAlibaba Cloud CDNに設置して、HTTPS化しました。

2-6. リファラー設定

空のリファラーを許可しない設定とECSのパブリックIPのリファラーのみを許可しました。

3. できあがり!

クライアントがアップロードした画像がCDNから配信されるようになりました!!これで大幅にレスポンスが早くなるはず!

まとめ

ドメインを取り、CDNを設置していたら日が暮れて夜になっていました。
ISUCON自体は予選まででしたが、特にCDNを触ることで大いに勉強になりました。