【Dive into MIXI】SREグループでのインターンに参加しました!
2024年夏、株式会社 MIXI にて開発本部 CTO 室 SRE グループでの2ヶ月間のインターンシップに参加させていただきました!
きっかけ
僕が MIXI と接点を持ったきっかけは、大学院での研究室の1つ上の先輩からの紹介でした。紹介を受けた昨年冬の当時はまだその研究室のメンバーではありませんでしたが、勉強会などにはそのときから何度か足を運んでいたので、直接話すことはよくありました。その先輩から MIXI の人事の方に繋いでもらい、面談をさせていただきました。
そこで、参加時期などについてすり合わせをして、今年のサマーインターンのタイミングで選考を受けるのがベストという結論になりました。
部署選び
選考を受けていた当時、僕はセキュリティや SRE の領域に興味を持っていて、その方面の実務に取り組んでみたい気持ちがありました。しかし、学部生時代に積んでいた開発経験はバックエンドがメインだったので実績の面で目立ったものはありませんでした。実際、上述の面談でもセキュリティ領域を志望しても選考に受かるのは難しいだろうという話をしていました。
しかし、いざ1次面接の場で担当の人事の方に「実は SRE の方にも興味があって…」という話をすると、2次では SRE グループの方との現場面接を組んでいただくことができました!エンジニアの「やりたい」に寄り添ってくれる MIXI の社風を感じた一幕でした。(何の因果か、このチームは僕を MIXI に紹介してくれた先輩のインターン先と全く同じでした笑)
タスクの内容
そうして無事選考を通過し、 SRE グループに配属されることとなりました。 SRE グループは全社横断型の部署で、社内システムの開発や社内のさまざまなプロジェクトへの技術支援を行っています。私が取り組んだタスクも社内システムに関わるもので、具体的には以下の2つのタスクに取り組みました。
- 部署内で使っているツールのログが出力されない不具合の修正
- 社内向けゼロトラストプロキシの開発に向けた技術選定、プロトタイプ開発
1つ目のタスクはオンボーディングのための簡単なタスクで、過去にツールの不具合が発生したときに AWS の CloudWatch Logs というサービス上でログを確認できなかったという issue を解決する、というものでした。ツール自体は AWS の Lambda で構築されていて、Terraform によって管理されていたので、同じ環境をテスト用のアカウントに再現することができました。実は再現した環境では正常にログが出力されていたので AWS 側の問題で不具合が起こっている可能性が高いという結論に至ったのですが、それもテスト用アカウントで全く同じ環境を用意して検証したからこそそういった結論にたどりつけたと思います。このときにメンターの社員さんがおっしゃっていた「問題を検証する時には、環境の完全再現が基本中の基本」という言葉はとても印象に残っています。
2つ目が今回のメインのタスクで、今後導入を検討している社内向けゼロトラストプロキシの技術選定とプロトタイプ開発を行いました。ゼロトラストプロキシというと大層なものに聞こえるかもしれませんが、簡単に言うと社内で持っている非公開サイト(プロダクトの staging 環境や一般公開前の企画サイト等)へのアクセスを人単位で制御するシステムを作ろうというのが主なコンセプトです。
AWS や Google Cloud、Akamai など候補となるサービスは多数ありましたが、着手した時点ではどのサービスを使うのか、そもそもどのサービスであれば要件を満たせるのかが分かりませんでした。そのため、初めにどのサービスでどの要件を満たせるのかということをスプレッドシート上に表形式でまとめることから始めました。
検討の結果、全ての要件を完璧に満たすサービスはなかったものの、幅広く満たせるサービスの1つとして Google Cloud が挙がりました。他にも同等レベルで要件を満たすサービスはあったのですが、次の点から今回は Google Cloud を軸に進めていくことになりました。
- 多くの人が利用している Google アカウントをそのままシステムに利用できそうだったこと
- Google 社の社員の方に直接相談ができるオフィスアワーがあること
- 私自身に Google Cloud の利用経験があまりなく、この機会に触ってみたいと思ったこと
実際に Google Cloud の利用を決めたときには 3. の興味による部分も大きかったのですが(笑)、業務を進める上で 2. のオフィスアワーがあるということも大きかったと感じています。事実、そこで Google 社の方からご提案いただいた Cloud IAP というサービスを使って最終的にプロトタイプを作ることになりました。
私が作ったプロトタイプのアーキ図は以下のようになります。
脆弱性の混入リスクを減らすためにも自前実装はなるべく減らしたかったのですが、前述の通り単独のソリューションで全ての要件を満たすことが難しかったという事情があり、多少ではありますが自作したコードを Cloud Run で動かす必要が生じました。また、プロキシから外部サイトへリクエストを送るときにリクエスト元のグローバル IP を固定するために Cloud NAT を間に設置しています(外部機密サイトには特定の IP からのリクエストしか受け付けないものがあるため)。
このような構成により、サイトごとに権限をもったユーザーだけにアクセスを許可するようなゼロトラストプロキシのプロトタイプを作ることができました!
インターンを通して学んだこと
今回のインターンではクラウドインフラ周りを本格的に触ったことで毎日が新しい発見の連続でしたが、大きくまとめると次の2点の学びが大きかったです。
-
Google Cloud についての理解
タスクに取り組む中で本格的に Google Cloud を触ってみるまでは、「Google 製の AWS みたいなもの」という認識しかありませんでした。しかし、実際に触ってみると、細かい機能やサービス同士の繋がりという部分で違いを感じることが多かったです。特に、AWS はサービス同士が比較的独立していて、組み合わせて利用する場合にも比較的自由度があるが設定が面倒という特徴がある一方、Google Cloud はサービス同士が密に結合しているので特定の組み合わせには非常に便利だが、カスタマイズ性で劣る部分があるという印象を受けました。
-
Terraform
Terraform は IaC (Infrastracture as Code) の一種で、クラウドリソースの設定等を宣言的に定義することができるツールです。Terraform コードからクラウドリソースを作成したり削除したりするのは初めての経験でしたが、これほど簡単にリソースの作成や削除ができるのかと軽く感動しました。また、通常は S3 等のストレージサービスで管理される状態ファイルを代わりにクラウドで管理してくれる SaaS 型プラットフォームである HCP Terraform のハンズオン型勉強会にも参加させていただき、ここでも実践的な学びを得ることができました。
ハンズオンで頂いたHashiCorp社の”箸”とTED社のハンカチ。
最後に
学びの多かった MIXI での2ヶ月間のインターンシップですが、実は色々なハプニングもありました。初回出社時の夕方から体調が悪くなりそのまま約2週間熱が引かなかったり、出社期間を終えて京都の自宅に戻る予定の日に2回連続で台風が直撃したり… それでも、人事の方も配属先のメンターの方も柔軟にご対応いただき、最後まで安心してインターンシップ期間を終えることができました。インターン生のランチ会で同席されていた社員さんが「働きやすい会社」と言っていた通り、1人1人の社員に優しい会社だということが伝わってきました。2ヶ月間(実質1ヶ月半程度)の短い期間でしたが、お世話になった全ての方々に感謝しています。ありがとうございました!
P.S.
MIXIからも色んなノベルティを頂きました!特にタンブラーは軽くて使いやすくてお気に入りです。
Discussion