private-isuのベンチマーカーをLambdaで実行する仕組みを公開しました

  • URLをコピーしました!

こんにちは、PR TIMESでバックエンド開発をしている宮崎(@sucalul)です。

先日、private-isuのベンチマーカーをLambdaで実行する仕組みを公開したので、そちらの紹介をします。

目次

公開リポジトリ

GitHub
GitHub - PRTIMES/private-isu-bench-lambda Contribute to PRTIMES/private-isu-bench-lambda development by creating an account on GitHub.

使い方についてはGitHubのREADMEを参照してください。

背景

private-isuのベンチマーカーはREADMEにEC2を起動する方法が書いてありますが、Lambdaで立ち上げる方が比較的簡単であり、集計などの処理も必要だったためこちらのLambdaを実装しました。

こちらのLambdaについては、過去のイベントで使用しています。以下のブログにて一部実装の解説も書いているのでぜひご覧ください。

あわせて読みたい
デジタル創作同好会traPさんと社内ISUCONイベントを開催しました こんにちは、22新卒で、PR TIMES開発本部でバックエンド開発をしている宮崎です。 先日、デジタル創作同好会traPさんと、社内ISUCONイベントを開催しました。今回は、そ...

構成

チーム情報をスプレッドシートで管理し、競技者がcurlでLambda 関数 URL で作成したURLを叩くことでベンチマーカーを動かし、その結果をMackerelに送信します。

Lambda 関数 URL (Lambda function URLs)を使うことで、API Gatewayを用意せずに済みます。API Gateway は30秒でタイムアウト(2024年1月時点)になってしまう制限がありますが、Lambda 関数 URL は Lambda の タイムアウトの制限が適用されるため、最大15分(2024年1月時点)まで伸ばすことが可能という利点があります。

構成をまとめると以下のようになります。

この仕組みは、ある程度スコアの高いチームはLambdaのファイルディスクリプタが足りなくなり、ベンチマーカーが動かなくなってしまうという欠点もあるので、とりあえず手軽に動かしてみたいという方におすすめです。Lambdaではファイルディスクリプタを増やすことはできないので、そこまでいったら初心者脱却と思っていいかもしれません。

Lambdaのデプロイパッケージのサイズは、S3に上げた際の上限が250 MB (解凍後)(2024年1月時点)です。private-isuのuserdataをそのまま配置した際、250MBを超えてしまうので、ある程度画像を削除することで解決できます(使い方 2を参照)。

最後に

今回は、private-isuのベンチマーカーをLambdaで動かす仕組みを公開しました。private-isuを解く際に参考にしていただければと思います。

PR TIMESでは、普段はPHPを用いたアプリケーション開発や開発環境の改善を行なっていますが、サーバレスで開発する時はGoを用いてこのような開発をしています。

あわせて読みたい
AWSとGo言語を活用して、プレスキット一括ダウンロードを構築しました こんにちは!開発本部のエンジニアのトゥ(codyzard)です。 今回は数ヶ月前にリリースされたプレスキット一括ダウンロードの機能を話したいと思います。 【背景】 2022年...

会社の雰囲気や技術スタックにご興味がある方は、ぜひ一度カジュアル面談に応募してくださると幸いです。

株式会社PR TIMES
カジュアル面談申し込みフォーム - 株式会社PR TIMES 株式会社PR TIMESでは現在00-0. カジュアル面談(全職種OK)を募集しています。
  • URLをコピーしました!

この記事を書いた人

2022新卒で PR TIMES に入社し、開発本部でバックエンドエンドエンジニアをしています。

目次