KLabに続いて2社目のインターン参加レポートです。
build upについて
コロプラが開発、運用している某ゲームの某イベントに関するAPIの実装を2人組のチームで行ったのち、それのパフォーマンスチューニングを行いました。
途中実際に運用されているゲームのインフラ構成やDB(インデックスやシャーディング、ロックなど)に関する講義もあり、私に不足しがちな知識を補うことができました。
参加まで
普段なんとなくwebのバックエンドを触ることはあるのですが、モニタリングとかパフォーマンスとかは全く分からん状態でした。そんな時、某スプレッドシートでこのインターンを見つけ、テーマ的にも興味があったので応募に至りました。
選考は、書類→web問題(コーディング、知識)→人事面接→エンジニア面接の流れで行われました。特にエンジニア面接では技術に関してかなり突っ込まれたことを質問されてなかなか苦しかったです。
日記
0日目
- 前泊。
- KLabのexpert campの翌週だったため、やや疲れを引きずっていた
- 「詳解システムパフォーマンス」、「実践ハイパフォーマンスMySQL」を読むなどして過ごす
1日目
- 恵比寿まで通勤
- 東京は人が多いですね
- 良いスペックのMacBookが支給されて環境構築
- みんなでお昼ご飯(昼食は毎日ご馳走してもらえた)
- ゲームのインフラに関して講義
- APIの実装開始
- ゲームの膨大なソースコードに圧倒された
- とりあえず課題の1つを実装する(が、これはクソ実装であることが後々判明する)
2日目
- 東京は人が(ry
- APIの実装続き。既存のソースコード読むのが結構大変だった
- DBに関する講義。DBMSがいかに複雑なシステムなのかがよくわかった
- メンターさんの1人がRustネットワークプログラミング本を購入してくださっていたことが判明
- オフィスツアー。壁に草が生えていて草生えた
- クマがそこかしこに存在する
- 一対一で社員さんと話す時間があった
- 自分の執筆の話や働き方について雑談
- APIの実装は大体完了
3日目
- ひたすらパフォーマンスチューニングを行う
- Vagrant環境が壊れて作り直すもののそれすら上手くいかず半日溶かす
- メンターさんにかなり助けて頂きました
- 良いスコアが出ないのは1日目のクソ実装のせいだったと判明
4日目
- 成果発表
- 発表時間までにあまり良い成果は出なかった
- 周りのチームはいろいろ工夫していて凄いなという印象
- VMを壊したことを懺悔した
- 発表後、DBに対するインデックスの貼り方を変えたらスコアが大幅に上がった
- インデックスの重要性を痛感した
5日目
- 4日目の発表でいただいたフィードバックをもとに改善を加える
- チームメンバーがインフラに強いかったのでミドルウェア周りを改良してくれた
- 最終的になかなか良いスコアが出た
- 懇親会でCTOの方が来ていろいろ質問した
良かった点&感想など
- 実際に動いているコードを見ることができた
- メンターさんの数が多く、それだけ技術に関して話せる機会が多くあった
- 高負荷という普段経験できない問題に対処する雰囲気が掴めた
- インデックスの重要性、怪しいクエリはexplainする、など。
Web開発に関しては力不足を実感した5日間でした。特に個々のミドルウェア製品に関する知識やコードの全体像を把握する力に課題を感じました。今回のインターンは「既存の知識を強化する」のではなく、「新しいことに触れる」ことが多かったため、0を1にできたという点でとても良かったと感じています。
社員や参加者の皆さん、ありがとうございました。