Wantedlyのサマーインターンに参加した
8/20〜9/21までの5週間、Wantedlyのサマーインターンに参加しました。
本来は9/7までの予定でしたが、期間を延長していただきました(後述)。
やったこと
パフォーマンスの改善
Wantedly Peopleのoptionsという設定値を管理するマイクロサービスのパフォーマンスを改善することになりました。 optionsについては資料が公開されています。
最初の1週間はoptionsに慣れるためにリファクタリングのようなことをして、その後の2週間でボトルネックの調査と実装をしました。 optionsはDBとのラウンドトリップタイムがボトルネックになっていたので、DBのスキーマやクエリを改善していきました。 optionsはGoで書かれていますがDBのマイグレーションはRubyでされていたので、Rubyでバッチ処理を書いたりもしました。
Rubyを書いた経験は高専1年生の時に2、3日でTwitter APIとRailsを使ったwebアプリを作った程度でしたが、なんとかなりました。
最後にmasterにマージされ、本番環境でoptionsのレスポンスタイムが約1/2になりテンションが上がりました。
また、最後の週にメンターさんからインターンを延長しないかと誘われたので、インターンを2週間延長することに決めました。
マイクロサービスへの切り出し
延長した2週間のインターンでは、Wantedly VisitとWantedly PeopleのRailsアプリに実装されている機能を共通のマイクロサービスに切り出すタスクに取り組みました。 1週間でWantedly Visit、People、ChatのRailsアプリの切り出す機能のコードを読み、マイクロサービスのAPIを設計しました。特にWantedly Visitは、Wantedlyの歴史が積み重なったモノリシックで巨大なRailsアプリなので、読み応えがあります。
最後の週でマイクロサービスのAPIを実装に取り掛かりました。 この時に、DBマイグレーションツールの ridgepole を新しく導入してみました。 ridgepole はRubyのDSLでDBのschemaを書けばいい感じに差分を見てマイグレーションしてくれるので、シンプルで使いやすいかなと思います。 また、ORMには SQLBoiler を使いました。
最後の2日でWantedly VisitとPeopleのRailsアプリを一部書き換えてデモ動画を撮影し、金曜日の全社員ミィーティング「Demo Day」で発表させていただきました。
ご飯
オフィスのある白金台はおしゃれな飲食店が多いです。ちょっと値段が高いので気をつけましょう。
時々オフィスで夕ご飯が食べられるので、ほぼ毎回食べてました。
まとめ
最初の3週間はほとんどずっとコードを書いていて、その期間だけで200 commitsくらいできたし、ちゃんと動けばproductionに反映されるのですごく楽しかったです。
また、インターン中にSQLBoilerのバグを踏んだので、帰ってからプルリクエストを出したらマージされました。
このインターンでは交通費と宿泊場所と日給1.5万円がいただけました。メンターさんも1人か2人につき1人ついていただけて体験が良かったと思います。 学校に募集が来る会社以外でインターン先を探すプロラボ部員とかは、検討してみてください。
最後に、5週間メンターをしてくださった @izumin5210 さんありがとうございました。