Sunrise 振り返りを公開します! #voyage_intern

こんにちはこんにちは!fluct で広告配信のお手伝いをしている @jewel_x12 です。

この記事はSunrise Advent Calendar 2019の 6 日目の記事です。今年の 11 月初旬に Sunrise というインターンシップを実施したのですが、その参加者がアドベントカレンダーを自主的に作ってくれました。嬉しくて自分も参加です!(Treasureアドベントカレンダーもあるようです)

https://voyagegroup.com/internship/sunrise/voyagegroup.com

今回の記事は Sunrise の振り返り と Sunrise に関連した内容になりますが、Sunrise Advent Calendar 2019 のネタはよろずで良いとの事なので、後続の方もフリーダムな記事待ってます!

Sunrise って?

Sunrise は VOYAGE GROUP のエンジニア向けインターンシップです。大規模リクエストを捌くシステムについて、安定した価値を出し続けるというテーマで 2011 年からやっています。

今年はリクエストに含まれるイベントデータを記録して、集計結果を見ることができるサービスをチューニングしてもらいました。増えていくリクエストを捌けるよう、どういった設計にするか?ということをやっていきます。

VOYAGE GROUP におけるインターンシップの振り返り

VOYAGE GROUP のインターンシップは Treasure をはじめいくつかありますが、関わったメンバーと人事による振り返りをしながら改善しています。参加してくださった皆さんからいただいたアンケートもここで参考にしています。

Sunrise も同様に 9 年間改善し続けていますが、他の VOYAGE GROUP のインターンシップと比較しても大きく変化している部類で、振り返りの結果や時流に応じて内容がどんどん変わっています。最初は架空のシステムの設計を机上でやるものでしたが、現在は我々が開発・運用しているシステムに近いものを触りながら設計するものになっています。

2018 年度 Sunrise の振り返りと今回やったこと

まず、振り返りの結果が実際にどうやって反映されているのか説明するために 2018 年度 Sunrise の振り返りについて書きます*1。ここからは 2018 年度 Sunrise のことを前回、2019 年 11 月に実施された Sunrise を今回と呼びます。

前回の振り返りでは Keep (継続したいこと)と Problem (見つかった課題)をリストアップしました。今回の Sunrise を準備する時には、このリストを参考にしてやる事を決定しました。前回と今回の対比を分かりやすくするため、今回はどのような Problem を参考にして、どう改善したのかを以下に記載します。

環境構築の自動化・開催日数を増やす

  • Problem
    • 初日の環境構築に時間がかかる
    • 残り時間を重視した優先度付けになってしまう

環境構築は自動化されていない部分があり、構築に時間がかかっていました。これを TerraformPacker, Makefile で自動化したり、README をパラメタライズしたりすることで、導入がスムーズになるよう運営メンバーの yowatari が調整してくれました。

環境構築部分を参加者と一緒にやっていくのも勉強になって面白いのですが、どのような設計にすれば良いかということや、やる価値のある施策に時間を使ってもらいたいところです。

環境構築の自動化以外では、2 日間開催だったところを 3 日間開催にしてみました。

情報共有のタイミングを増やし、仮説検証を理論立てて実行できるフォーマットを作る

  • Problem
    • 情報共有について
      • チーム内の情報共有がどこのチームも弱かった
      • チーム同士でもアイデアの共有が弱かった
    • 仮説検証の方法について
      • 状態の観察→仮説→検証みたいなサイクルになっていなかった
      • 1 施策 1 観測にしたい

近年の Sunrise は、参加者が触るシステムや課題設定も含めて、我々の業務に寄ったインターンシップになっています。我々が普段やっていることや、考えていることを伝えることで、他の場所では得られないものを持ち帰ってもらいたいという意図があります。

なので、我々の業務に近いインターンシップ設計にしたいところです。例えばチーム内で情報共有をしますし、部署間・会社間を超えてアイデアは共有しています。チューニングをする際も情報収集から仮説を立て、状況に応じて最も効果的である施策を選択し、実行していくことを心がけています。前回では実際の業務と Sunrise の実態にズレが生じました。

今回は各チーム間で情報共有するタイミングを増やし、共有するためのフォーマットを作りました。フォーマットでは集めた情報を書いたり、そこから得られる施策の想定インパクト、1 施策 1 観測といったことを促すものを作りました。

その結果、我々が業務でやっているような進め方を学べたという声をいただいたり、どのチームもある程度の水準までチューニングすることができていました。最近の Sunrise はスコアを競ったり順位を決定するものではないので、チーム内外で積極的に情報共有をして、お互いを高め合ってほしいです。

今回はどんな振り返りになった?

Keep と Problem の一部を抜粋します。

  • Keep
    • 業務で考えていることを伝えられた
    • Ajiting*2 率が高く、雑談ができた
    • 時間に余裕ができた
    • 用意していたリクエストのシナリオをクリアできるチームがいた
    • チーム間の共有があった
    • サポーターがチームにがっつり入って一緒に進められた
  • Problem
    • 用意したシナリオを全部クリアして、時間を持て余すチームも出てきた
    • アドテクノロジーについてあまり説明していない
    • インスタンス数の制限など、AWSアカウント毎の制限を事前開放しておくべきだった
    • 最後に VOYAGE GROUP エンジニアによる座談会をやったが、みんな疲れてそうだったので、ちゃんと聞いてもらえるタイミングでやりたい

次回はどうしたい?

時間ができたことによって見えてきた課題もあるので、ダウンタイムの SLO (Service Level Objective) を追加してみようかなとかムニャムニャ考えているところです。

まだ次回の Sunrise 予定は無いですが、来年もやる場合は更にパワーアップしているはずです!募集情報をぜひチェックしておいてください!そしてこれまで Sunrise に参加してくださった皆さん、ありがとうございました!皆さんが参加してくださることで、Sunrise は改善し続けることができています。

次回の Sunrise Advent Calendar 2019 記事はくぎさんの予定です〜。

*1:2018 年度の Sunrise は 2 回実施しており、その 2 回についての振り返りになります。

*2:社内バー Ajito でドリンクを飲みながらダベること。業務で詰まっているところをチームを越えて相談したり、どうでもいい話をしたりすることがある