電電のブログ

電電生だったひとのぼやき

VOYAGE GROUPのインターン「Sunrise」に行ってきた.

電電です.
インターンってことで夏のインターンの時もお世話になったVOYAGEに行ってきました.
f:id:denden_seven:20191106173329j:plain:w400
インターンの時の記事はこちらをみてください.
denden-seven.hatenablog.com


さてまあまた,今回も参加したインターンについてまとめようと思います.

インターン概要

voyagegroup.com

  • 期間 11/2~11/4の3日間
  • 待遇 3万円支給
  • 交通費支給,滞在場所提供(シェアハウスでした.(シェアハウスは以前の奴の方があたりでした.))
  • 内容 大規模なリクエストをどうにかして,捌けるようなサーバーやインフラを整えることが命題のインターンでした.

やったこと

環境としてAWSの権限や,シンプルな計測用サーバーを渡されました.ここではこのサーバーをhakaruくんとしましょう.
シナリオがいくつか用意されており,そのシナリオで設定された負荷をサーバーにかけて,エラーを返さないようにリクエストを捌けるようにするというのが主な内容でした.

シナリオは3つあり最大で,20000req/secの負荷がかかるというものでした.
それらのシナリオにおいて,5xxなどのエラー率を1%以下にし,かつ捌き切るというのが与えられた目的です.
開発は4人1チームで行い,一定時間ごとに全体のチームを通して,

  1. どのようなアプローチを行ったか
  2. そのアプローチによる想定インパク
  3. モニタリング項目
  4. 結果考察

をまとめて発表,共有するという流れでした.


具体的には,負荷をかけると5xxなどのエラーがでる
エラーログが何に起因するものなのか,Amazon Cloud Watchや,エラーの報告書で突き止めます.
それに起因するのが,アプリケーションなのか,DBとの接続部分なのか,はたまたロードバランサーによるものなのかを調べ
それを解決できそうな施策について優先度をつけて実行します.
この時複数の施策を同時に行わないことで,どの部分がどれくらい影響を与えたかについて,切り分けをおこう.


これの繰り返しで,ちょっとずつ問題を解決していきました.
研究とかをやったことがある方はわかるでしょうが,完全に「仮説,検証,実験」の流れです.

他にも,自動デプロイの部分を整えたり,アプリケーションのコードを書き換えた際に出戻りを減らすために,ローカルでの実行環境を整えたりと,瞬間的には
あまり成果として上がらなくても,最終的に効率が良くなるような部分もできるだけ行っていました.

これをフレームワークにのっとって回していました.ここら辺のフレームワークをやってる時はコンサルタントの時とおなじだなあって感じでしたね.
うちのチームは検証データが多くなりそうだったので,初期段階からgoogle spread sheetに実験結果や,その結果をまとめてみやすいようにしていました.

f:id:denden_seven:20191106152209p:plain
スプレッドシート

全体を通して

仮説検証実験を繰り返して行い,よくしていくところは,研究やkaggleみたいだなとおもっていました.
ただ,それらと違って,競争を行っている訳ではないので,他のチームで良さそうな部分や,思考の過程がみれて面白かったです.

チームによってはdata dogなどのログを詳細に取れるサービスを入れて,問題の切り分けをやりやすいようにしているところもあれば,
ワンライナーでデプロイできるようなコードを作成していたりとチームの色が出ていました.
時間も3日間と短めで,導入コストが大きいと,そのコストを回収仕切る前に終わってしまうので,優先度付けは難しかったです.

逆にいえば,期間が3日より長いとみんなdatadog入れたり,デプロイを効率化するなど,同じような環境になるので,3日間はいい感じの時間だとおもいました.
(最終日にシナリオ3をクリアしていたチームは少し暇そうでしたが...)

今回僕はあまりコードを書かずに,フレームワークにのっとって施策を進めるためにどうすればいいかや,コードレビュー,issueの作成などをやっていました.
なんかここら辺はもう少しコード触ってもよかったかもしれません.

振り返ってできなかったこと,やりたかったこと

結構初期から役割分担はできていたので,よかった一方で,もしかしたらもっといい役割分担があったかもしれず,そこらへん試さなかったところです.(まあ時間が短いので無理そうですが)

あと中間発表や最終発表は基本僕がマイク持ってたんですが,他のチームメンバーも普通に喋れるのでもっとしゃべるように根回しすべきだったかもしれないです.
こういうチームを組んだりした時,経験上なぜか僕が発表することになるんですが,あまり一極集中するのもよくないなあと個人的に思っているので...(ミンナモットシャベロウナ)

感想

面白かったです.
お金のない学生はお金を気にせず,インスタンスをぽんぽん建てれないですし,そもそもそこまで負荷がかかるサービスを触ることがめずらしいので,そこらへんで何が,ボトルネックになってくるかなどがわかったのは知識の幅が広がった気がします.
最終的にコマンド一つでインスタンス10個建てたりしてました.(ナレッテコワイネ)
あと脳死インスタンスを大きくしたり,増やしたところであまり処理に効かなかったり,地道な対処の方が効いてきたりするのは「へえ〜」ってなりました.



最後にお洒落な景色と弁当でも貼っときます

f:id:denden_seven:20191106170243j:plain:w400
弁当

f:id:denden_seven:20191106170246j:plain:w400

f:id:denden_seven:20191106170236j:plain:w400
チーム



インターンについて
ここから先はこのインターン内容の壮大なネタバレを含みます
来年参加する可能性がある人は読まないでください.
それ以外で僕の駄文にまだ付き合ってもいいよって方は下のリンクふんでください.
https://denden-seven.hatenablog.com/entry/2019/11/06/171105





ほなまた〜