Above & Beyond

日々のアウトプット記録

mercari.go #5

1/8(火)は「mercari.go #5」に参加してきました。

mercari.connpass.com

f:id:kabukawa:20181110094838p:plain

会場は 株式会社メルカリ さん。いつ来てもきれいで広い会場ですね!

f:id:kabukawa:20190109081224j:plain

f:id:kabukawa:20190108190824j:plain:w300f:id:kabukawa:20190108190854j:plain:w300


目次


何故参加したか

前回も参加して、実践的な知見を聞くことが出来てとてもいいなと思ったので参加しました。

ちなみに、前回の参加報告はこちら。

kabukawa.hatenablog.jp


タイムテーブル

時間 内容
19:00 開場
19:30~19:40 オープニング
19:40~20:10 Go in Corporate Solutions Engineering @fivestar
20:10~20:15 休憩
20:15~20:45 俺たちのmicroserviceはまだ始まったばかり @kokukuma
20:45~20:50 休憩
20:50~21:20 Keep watching and extending features of gRPC @kazegusuri
21:20~22:00 懇親会
22:00 終了

内容

最初に飲み物と食べ物が配られて、それらを頂きながらお話を聞くスタイルです。

前回は食べ物が盛り付けられているところから各自で皿に取ってくる形でしたが、今回はラップされたおにぎりと、容器に分けられたお惣菜という組み合わせに。 椅子に備え付けのテーブルでスペースが限られているので、こういう形のほうが汚したりする心配も少ないので有り難いです。

オープニング

オーガナイザーの morikuni(@inukirom) さんのトークで始まりました。

前回参加したときも説明があったのですが、懇親会の時に一部の人で固まって話してしまうことのないように一部を他の参加者が参加しやすいように開けておく「懇親会のGルール」という提案、すごくいいなと思います。

f:id:kabukawa:20190109083933p:plain:w500


Go in Corporate Solutions Engineering

Ken Smeaton(@fivestar) さんの発表。

speakerdeck.com

Corporate Solutions Engineeringチームで取り組んでいる事と、それを解決するためにGoでアプリケーションを作成しているという内容。

以下、個人メモ。

  • CSE:Corporate Solutions Engineering。組織課題の解決にフォーカスしたチーム。
  • メルカリアプリの開発からは独立した、かなり特殊なチーム。
  • フロントはReactとRedux、バックエンドはGo。バックエンドはAPIとして実装。
  • People Products
    • Teams:人と組織のデータベース
    • Reviews:人事評価システム
    • Benefits:インセンティブマネジメント
  • アーキテクト
  • DevDay
    • 月に1度, 2日間技術課題の解決に注力する
    • EMも参加する
  • DDDよりもクリーンアーキテクチャに近いアーキテクチャを採用している。
  • RESTフレームワークPHPのBEAR.Sundayを参考に独自実装。

github.com

  • 使用している主な外部パッケージ

github.com github.com github.com github.com github.com gopkg.in

  • チームメンバーはGo初心者
  • 管理ツールがなく、間に合わせで作ったPHPのツールが未だに使われている
  • 評価周りは暗号化され、鍵は Cloud KMSで管理
  • Slack通知はインドから来た新卒社員がJavascriptで実装
  • SQL Building
    • mercariORMなどは導入しておらずSQLをベタベタと書いている
    • カラム追加時などソースコードの変更箇所が多いため効率的にスキーマクエリ管理ができるツールがほしい
  • 本体とは切り離されているので自由度は高いが、とはいえ本体側のGoのスペシャリストとの交流もしていきたい。
  • Goを選択した理由。メルカリ全体のテクノロジー戦略を踏まえて採用。
  • GoでJSONは扱いづらい

立ち上げから①年でこれだけの体制とプロダクトを整備しているのはすごいなと思いました。


俺たちのmicroserviceはまだ始まったばかり

kokukokukokukoku(@kokukuma) さんの発表。

speakerdeck.com

mercariのmicroservice化はどの程度進んでいるのか、という内容。

mercari.go なのに、最初から「Goの要素は殆ど出てきません」と 宣言して始めるスタイル。 興味のある話題なので個人的には嬉しいですが(笑)

  • マイクロせービス化
    • こんな感じで分割するといい
      f:id:kabukawa:20190109093823j:plain:w400
  • コードやデータ、開発プロセス、運用プロセス、組織がそれぞれのサービスにおいて独立しているのが、良いマイクロサービス
  • クライアントややDBの構造は変えない
  • マイクロサービスが最低限満たすべきもののチェックリストをプラットフォームチームが準備
  • 基本はGCPを使用。
  • インターネット越しでのDB利用はコストが高いので、メルカリのDBにつなぐサービスはsakura(石狩)に置かれる。
  • 1、2名のチームが実態。但しQAチームは別にいる。
  • サービス数が増えすぎる問題が出てきた
  • 一時的対処としてLegacy DB Serviceというのを用意してmercariのDBに対するCRUDを提供。但しできれば早めに削除したい
  • 一時的に、と思って作ったものが延々使われ続けるのはよくある話なので、程よく使いづらさを残すとか、何らかの制約をかけておくのは大事。

  • マイクロサービス側のQA環境にはまだ課題がある

テストを該当部分だけに絞り込みたいという話に対して、テストの観点が違うから頭からの通しテストも必要なのでは?という質問が出ていました。僕もそう思いました。

mercariのマイクロサービス化は着実に進んでいる印象。 でも、従来のサービスと並行で作業しているので、互換性等を考慮しつつ段階を分けて進んでいる。 色々苦労もされているようだけど、うまくいくと良いなと思いました。


Keep watching and extending features of gRPC

@kazegusuri) さんの発表。

speakerdeck.com

gRPCについて、変更履歴を追いながら機能の説明などを30分間ひたすら喋り続ける、という内容。 marcari社内でgRPC王と呼ばれているだけあって、メチャgRPC愛に溢れるセッションでした。

gRPCについての情報源

github.com github.com

gRPCのリリース情報のページはこちら。

github.com

このページに書かれている内容から、リリースごとにポイントとなる機能について解説をしながら、これまでのgRPCについて振り返っていく流れ。

gRPCはふわっとしたイメージしか無かったので、こうやって解説をしてもらえるのは有り難いです。

30分のセッションで既に13分経過。ここまででスライドの1/5しか終わってない(笑)

とにかく凄い熱量で、圧倒された30分でした。 できれば次回は1時間枠で聞きたいなと思いました!


懇親会

セッションの熱が冷めやらぬまま、懇親会に突入しました。 食べ物は既に無くなっていたので、追加でおつまみ的なものが提供されて懇親会スタート。 ちょっと時間が短かったのと、知り合いと話をしていたらあっという間に終わってしまい、折角のチャンスなのにGoの話を聞けなかった。。。


まとめ

今回はGoが殆ど出てこないセッションもありましたが、どのセッションも内容の濃い、聞いていて楽しい内容でした。 実際の開発での知見などは、会場からも「あるある」等の声もあり、とても良かったと思います。

また次回も参加できれば(抽選なので。。。)したいなと思います。 ありがとうございました!

f:id:kabukawa:20190108184848j:plain