メルカリのインターンで3ヶ月バックエンドエンジニアとして働いた

April 18, 2021

こんばんは

今年の 1 月中頃〜4 月中頃の 3 ヶ月間、メルカリでバックエンドエンジニアのインターン生として勤務していました。 この記事ではメルカリで何したん?っていう話を書きます。

技術スタック

メルカリでは多くのマイクロサービスに Go が使用されており、また、多くのアプリケーションは Kubernetes 上で動作しています。 自分の技術スタックと大きくマッチしていて働きやすく、参考になる部分がとても多かったので勉強になりました。

1 月~2 月

インターンの前半はメルカリのホーム画面のバックエンドの開発に携わっていました。主にパフォーマンスの改善を中心に業務を行なっていました。

「あれ、メルカリのホーム画面のレスポンス、数 10ms くらい早くなった?」って気がつく男はモテます。「あれ、ネイル変えた?」と同じです。

Get Layout API : 該当お客さまのホーム画面に表示されるコンポネントの順序・レイアウトだけを返却する

Get Components API: 指定された識別子のコンポネントの実データ(商品情報など)を取得する

メルカリの新しいホーム画面を支えるマイクロサービス

メルカリの現在のホーム画面のバックエンドも上記の記事にあるように大きな役割を持つ API が二つ存在します。 ホーム画面が開かれた時にはまず Get Layout API からレイアウトの情報を受け取り、UI の描画をスタートし、その間に Get Components API から各コンポーネントの情報を取得するという流れになっています。

Get Layout API がレスポンスを返した時点で、バックエンドは次に Get Components API に送られてくるリクエストの内容を予測することができます。そこで Get Layout API が叩かれた際に Get Components API のリクエストに備え、データをキャッシュに貯めておくような改善を入れたりしていました。

他にも、ホーム画面のバックエンドにとっては不要な情報までとってきているために時間がかかっているエンドポイントを迂回するために新しい RPC を他のチームに土下座して追加させてもらったりもしました。ゴリっと新しい RPC を立てたり、新しいロジックを組んだりすることに取り組むことができてとても楽しかったです。

会社として D&I に取り組んでいることもあり、チームには外国の方がとても多く、他の会社と一風変わった雰囲気を感じました。英語力を頑張ってつけようという気持ちにもなれたのでよかったです。 人生初 amongus を英語の環境で挑戦し、初っ端でインポスターだったときは(言語的にも amongus 的にも)むずかしかったです。

また、2 月の後半には HackWeek というメルカリ JP 全社員が参加する一週間の社内ハッカソンに参加していました。 チームではメルカリの API を一般の開発者が使用できるようにする SDK ライブラリと OAuth サーバーの開発を行いました。メンバーに恵まれ審査員特別賞をいただけ、とてもいい経験になりました。

第 4 回 #MercariHackWeek 終了、Award 受賞したチームを発表します!#メルカリな日々

一緒に最終発表をした社員の方まで巻き込んで滑ったのはよくなかったです。

3 月 ~ 4 月

インターンの後半ではチームが変わり、メルカリの検索を担うサーチバックエンドの開発に携わりました。 サーチバックエンドチームではいくつかのマイクロサービスを管理しています。 それぞれのバックエンドに対するリファクタリングや Pod の Istio 対応、カナリアリリースのフローの作成などを行いました。

また、業務の隙間時間にちまちま開発していたツールの記事でメルカリテックブログデビューしました。

Go で大量のモックをより統一的に管理し、もっと高速に生成したい!そうだ!!gomockhandler を使おう!!

sanposhiho/gomockhandler - GitHub

終わりに

ほとんどリモートワークでしたが、3 ヶ月という長い期間、関わっていただいた多くの方には本当におせわになりました mm

技術面に限らず大きく成長できてとても楽しかったです。

2021 年のサマーインターンの募集が始まっているようなので興味がある方は覗いてみてください。 「Mercari Summer Internship 2021」の募集を開始しました! #メルカリな日々

このエントリーをはてなブックマークに追加