こんにちは、@mewutoです。
株式会社MIXIのインターンDive into MIXIに参加した記録を残します。
所属部署はCTO室SREグループで、期間は2024年2月〜2024年5月の3ヶ月間です。
個人的に過去1良かったインターンだったので、その雰囲気を記録したいなと思います。
参加した理由
- 高校生の時モンストでめちゃくちゃ遊んでいた
今考えても信じられないぐらい課金していました。なんとなくで選んだ情報理工学部はゲームの影響をかなり受けていたので、当時遊んでいたゲーム会社にエンジニアとして勤めるってなんかええなあ、エモいなあと思いました。
- SREとしてのキャリアを考えたかった
エンジニアとしてのちょっと真面目なやつ。
私の中で、SREというのは技術最強集団というイメージで、1人1人がめっちゃ強い印象があります。将来、私はエンジニアとして尖ろうと考えていたので、キャリアパスの1つのルートとしてSREを考えていました。他にもBackendがどうとか、そういうようなことをぼんやり考えている時に、たまたま見つけたMIXIのインターンでSREができるとあったのですぐに食いつきました。しかし、SREは最強!と思っていたので、正直、学生である私が参加してどうにかなるものとは思っておらず、当たって砕けろの精神で応募に至りました。
目標はとにかく技術的にボコボコにされること
SREのキャリアを経験するというのはもちろん大きな目標でしたが、もう1つ。私個人として技術的なブレイクスルーを起こしたかったのがあります。
私は約2年間、様々なインターンに行っていたので、エンジニアとして多少成長していました。まあ大体できるだろうと思っていた自分にとって、SREという技術的に難しいことを扱うチームで技術的にボコボコにされることはさらなる成長につながると確信し、これを目標に掲げました。ボコボコにされる回数が多いほど、壁を乗り越え成長するということですからね。
業務内容
メインで扱ったものは「全社向けDMARCレポート通知システムの構築」です。
DMARCってなんぞや?って人に簡単に説明するなら、DMARCとは「なりすまし防止技術」です。(詳細はググってください)
これまでは、「まあ気にする事業者はDMARC対応やろうね」ぐらいだったのに対して、最近Googleが動き出して、「2024年以降はDMARCをちゃんと設定しないとメールが届かないかもよ?」と言い出しました。
実際、入試のメールが届かないというインシデントもありましたね。(https://www.itmedia.co.jp/news/articles/2401/19/news167.html)
もちろんMIXIも全社的にこの対応をしないといけないのですが、そもそも、そのDMARCの設定は適切に設定されているのか、また、何件程度送信に失敗するのかを監視したいというニーズがあり、それをうまくやってよ〜というタスクがCTO室SREグループに降ってきました。そして、私の前のインターン生がこの緊急タスクにすぐ取り掛かり、その残りは私が実装するという形で完成させました。完成したシステムの構成図はこんな感じです。

流れを簡単に説明すると
- DMARCレポートが送られてくる
- S3に保存するときに、分別用Lambdaをトリガーとして発火させ、メールの日付を元にYYYY-MM-DD形式のフォルダを作成し、そこに保存
- EventBridgeで解析&通知Lambdaを定期実行しSlackに通知
と言った感じです。
DMARCレポートにはどのドメインから何件メールを送り、どういう理由で何件失敗しているのか書いてあります。そのまま見れば良いやんと思うかもしれませんが、このレポートはメールに関する全ての情報がXMLとzipで仕様書のように書かれており、とても人間が毎日見るようなものではありません。そのため自動システムで解決する必要があったのです。
通知されるメッセージはこんな感じで、DMARCかSPFかDKIMのどれで何件失敗したかが分かります。arcというのは認証の連鎖を帰納的に確認できるようにする技術で、メールのたらい回しを追うものです。
今もこのシステムが生きていて、もっとたくさんの事業部で使われていると思うと胸が躍ります。
学んだこと
- DMARC
DMARCのRFC7489まで読みに行きました。また、arc=passの情報を抜き出すためにとても苦労し、ARCのRFC8617にたどり着くまで奔走していました。メール関連はかなり自信が付きました。
- Terraform
ずっとTerraformを書いていたような気がします。Terraform Moduleを利用してリソースの共通化をしたり、movedブロックを利用して生きているリソースを止めずにコードだけ綺麗にしたり、いかにもSREっぽいことをさせてもらえました。
また、多数のバグと遭遇したことで、terraform refleshコマンドはterraform applyコマンドを孕んでいることや、IAM系のリソースを両方指定すると競合するようなことにも気づけました。
当然ですが、Terraformで記述する対象であるAWSも詳しくなりました。特にIAM。
AWS Jamでほぼ全問解いて優勝しました
さらに、、、MIXIの新卒研修の一環で、チームを組んでAWSの課題解決をするイベントに参加しました!
今回の問題は全13問でEasy, Medium, Hardと難易度が分かれており、マネジメントコンソールから直していきます。
なぜか私は、一方的に少し知っていた強い2人と組むことになったのですが、これがかなり刺激的でした。(2人ともあの最強SREです。)
初めはチームレベル的に足手纏い感を感じていたのですが、案外やってみるとインターンの成果もあり4問ぐらいはメンバーより早く回答できたので、ちょっぴり自信がつきました。
一方で、Hardはバッファと言っていた運営に対してほぼ全問解いた人の隣で解決プロセスを見ていたことで、強いエンジニアの視点だったり、このレベルにならないといけないなと思いました。(ノリでIPアドレス/ポート番号ゴリゴリ書いて正解するってえぐいやろ、、、って思ってました。)この辺りは今後の課題です。
そして、最後にこれが一番大事な情報ですが、チョコモナカジャンボは僕と真ん中の人が好きなアイスです。

まとめ
しっかりボコボコにされました。しかし、得られたものはかなり多かったです。
SREの雰囲気を理解できたし、何より、このシステムをインターン中にリリースできたことで、他の事業部のSREの人に使ってもらえて、「めっちゃいいです!」や「ありがとうございます!」という声をもらえました。SRE冥利ってこんな感じかあぁ。
そして、事前に他のインターン生の情報が入っていなかったので、このような素敵なノベルティと色紙付きの修了証をもらえるなんて思ってもおらず、最後絶句してしまって、人事の方にはドライと言われてしまいました。。。(笑)ぐぬぬ。。。(泣)
これまでインターンで参加して出会った人たちに比べて若干年齢層高めだったのもあり、みんな落ち着きがあって、いい人ばかりでした。大学院生の枯れた心を潤してくれるのはMIXIだけだなと心から思ったインターン生活でした。
本当に行ってよかったです。ありがとうございました。

参考