isucon11-qualifyをAWS環境に建ててみる
こちらのAMIを利用させて頂く。
その他下記を参考にさせて頂きました。
環境
- macOS Big Sur
- M1 Mac端末
AWSでパブリックAMIからEC2インスタンスを起動
セキュリティグループを作成
インバウンド、アウトバウンド共にすべてのトラフィックを許可するセキュリティグループを作成しておく(あくまで検証用の設定。実務ではちゃんと絞りましょう)。VPCやサブネットはデフォルトのものを使う。
AMIからEC2インスタンス起動
AWSマネジメントコンソールでEC2を開く。メニューからAMIを選択しパブリックイメージ→ ami-0796be4f4814fc3d5
(aws-isucon一覧にあるisucon11-qualify AMIの識別子)を入力し検索。
すると目当てのAMIが1件ヒットするのでそこからEC2インスタンスを起動する。
- 今回はインスタンスタイプ
t2.micro
を選択 - ネットワーク周りはセキュリティグループ以外はデフォルトの値のままにする
- セキュリティグループは先ほど作成した全許可のものをセットする
-
isucon11-qualify
という名前(何でも良い)でKey pairを作成しpemファイルをダウンロードしておく
上記設定で起動ボタンを押下。
EC2インスタンスに割り振られたIPアドレスを控えておく。
sshする
ダウンロードしたpemファイルを ~/.ssh
に置く。pemの権限を適切に設定しておく。
mv ~/Downloads/isucon11-qualify.pem ~/.ssh/
chmod 600 ~/.ssh/isucon11-qualify.pem
参考: https://qiita.com/mountcedar/items/43157ff1225c56500655
先ほど控えたIPアドレスにubuntuユーザでsshする。
ssh ubuntu@**.***.***.** -i ~/.ssh/isucon11-qualify.pem
ブラウザでアプリを見る
http://**.***.***.**:3000
にChromeでアクセスするとアプリが開けた。
Sign Upするには http://**.***.***.**:5000
を見れば良さそう?
benchコマンド叩いてみる
ここを見ながら。
sshした状態でisuconユーザに切り替える。
sudo -i -u isucon
そしてbenchディレクトリに移動しコマンドを叩く。
./bench -all-addresses 127.0.0.11 -target 127.0.0.11:3000 -jia-service-url http://127.0.0.1:4999
結果:
14:27:24.588455 ISUCON11 benchmarker
14:27:24.588837 ===> PREPARE
14:27:24.588925 start: load initial data
14:27:24.592116 finish: load initial data
(...省略...)
14:28:30.233766 score: 955(1000 - 45) : pass
14:28:30.235853 deduction: 2 / timeout: 435
14:28:30.235931 <=== sendResult finish
初期状態でscore 955でした。
ローカル環境を作ってみる
- Dockerfile
- docker-compose.yml
- Makefile
が用意されているのでこれらを利用してローカル環境を立ち上げてみる。
git clone https://github.com/isucon/isucon11-qualify
cd isucon11-qualify/development
make up-ruby # Rubyを言語に選択
すると以下のようなエラーが出る。
=> ERROR [internal] load metadata for public.ecr.aws/ubuntu/ubuntu:20.04 2.1s
ECRにログインすることでも回避できそうだが、今回はDockerHubのイメージを使うようにDockerfileを修正する。
# vim: ft=dockerfile
-FROM public.ecr.aws/ubuntu/ubuntu:20.04
+FROM ubuntu:20.04
この状態で make up-ruby
を再度叩き、Dockerイメージのビルドとコンテナ起動に成功した。