Dabits

サーバサイドから運営まで何でもやるエンジニア系DJ

#ISUCON8 予選に参戦してきました!

f:id:dabits:20180923102825p:plain

ISUCON8 予選にチーム名「エイサイハラマスコイ」で参戦してきました。
最終スコア19,723/48位と予選通過なりませんでしたが、昼頃にベストスコア1位を取れたのは昨年に比べると進歩したかなと思います。
今年も一通り振り返りを書き出してみます。

当日やったこと

  • 役割分担

    • インフラ全般 : isucon_hanpanai
    • アプリ全般 : yogafalcon
    • なんでも屋 : dabits
  • 使用言語: ruby

  • サーバ構成:

  • 当たったやつ

    • h2o捨ててnginxにリプレース
    • nginxチューニング
    • pumaチューニング
    • N+1問題の解決
    • MariaDBチューニング全般
  • 外れたやつ

    • web1で大本リクエスト受けてリソース・APIをweb2・web3のGlobalIPへ直接渡すやつ : ベンチでNG
    • 管理画面やユーザ画面TopのクエリをRedisでキャッシュ : UPDATE後にexpireさせてたがベンチでたまにNG
    • get_eventsをキャッシュしてみたり改善してみたり : ベンチでたまにNG

振り返り : 戦略面

  • Keep
    • 過去問徹底的に解くの大事。予選前日にやったisucon5fの内容と似ていて、サーバ構成はそのまま適用できた。
    • 自分たちの手に馴染んでない道具を使わないのも大事。知り尽くしているミドルウェアや言語の方が打ち手が早い。
  • Problem
    • ベンチのシナリオが実行時にランダムで選択される仕様が想定外だった。スコアがブレることはあると思うが失敗箇所がブレるのは戦略を惑わされた。
    • ベストスコアが出たときの構成をetckeeperでコミットするのを忘れていた。結果としてスコアがブレた際に手作業で構成戻したりする羽目になった。
    • 振り返りのDiscordチャット眺めていると、自分らの問題掘り下げが非常に浅いなと感じた。決勝出場チームはもっと高い視座から問題を見ている。もっともっと普段の業務でも掘り下げて技術力を高める必要があるなと痛感した。
  • Try
    • ベンチの気持ちをもっと掴めるようにする。そのために社内ISUCONを実施してベンチマーカーを書く。
    • ベストスコアが出たら有頂天にならずにコミットして現状構成をとっておこう。
    • 業務で徹底的に今抱えている技術課題について深い掘り下げができる機会をつくる。昨今DockerやAIに興味を向けすぎているが、改めて手前のミドルウェアアルゴリズムにも興味を向ける。

振り返り : チーム面

  • Keep
    • チームの雰囲気を良いまま保つのは大事。早朝ミーティングの前に※全力ジャンケンしたのもよかった
      ※全パワーをだしてジャンケンして、買っても負けてもみんなで全力で喜ぶ、というアイスブレーク
    • 役割分担も大事だしときに頼るのも大事。それぞれが自身の得意分野を生かして専属の部門を担当するが、詰まったら専門外のメンバーにも声がけをして一人の状態を作らないようにする。
    • 承認の文化が非常に大事。みんな「これでいけるかな?」という不安と戦いながら過ごしている。「これやってみるのどうだろう?」と聞かれたら掘り下げるのも必要だけど最終的には「いけそうじゃない?やってみようか」と背中を押し合うのが非常によかった。
  • Probrem
    • チームとして練習していなさすぎた。メンバー全員揃って練習やったのは1回だけ。もっと回数を重ねるべきだった。
  • Try
    • どれだけ強いメンバーが揃っていても過去問はみんなで徹底的にやろう。

所感

今回非常に良いチームメンバーに恵まれ、大会序盤のスピード感や全体通しての雰囲気は非常に良い状態でした。
昨年の大会と違いまさに「いつもどおり」を全力で出せたので、残る課題があるとするならやっぱり技術力の差なのかなと思います。感想部屋でのチャット内容の会話が高度過ぎた。。。
会社で模擬戦やったりをして2回目になりますが、どのメンバーも着実に力をつけてきていて成長しているのを感じます。この調子でさらに力を高めて、実業務にも活かしていきたいと思います。