2019年1月8日、「mercari.go #5」に参加してきました。簡単に内容を記録しておきます。
mercari.goへは、#3についで2回目の参加となります。
- 開始前
- オープニング
- Go in Corporate Solutions Engineering
- 俺たちのmicroserviceはまだ始まったばかり
- Keep watching and extending features of gRPC
- まとめ
※資料については、情報が入り次第リンクを追加してきます。
開始前
受付開始時間早々に受付を済ませ、会場入りです。前回(#3)の時も思いましたが、会場が広く綺麗で、自販機の飲み物も自由に取れるのですごく良い環境だなぁと思いました。自分は下戸なので、ソフトドリンクの種類が多いと幾分か救われます。
オープニング
morikuniさん(mercari.goのオーガナイザー)による、オープニング&諸注意のご連絡です。懇親会のGルールは、Go言語に関するイベントだけにいつも心に刺さります。まぁ、非推奨のOも、Goには含まれているんですけどねw。
始まったー
— みずりゅ (@MzRyuKa) January 8, 2019
#mercarigo pic.twitter.com/dvgMc4crH1
Go in Corporate Solutions Engineering
元はPHPerで実はGo歴はそんなでもなかったという話から始まった、@fivestarさんの発表。そんなでもと言いつつGoでの開発に携わっていけるのが羨ましいなと思いました。
fivestarさんの発表開始。
— みずりゅ (@MzRyuKa) January 8, 2019
所属しているコーポレートエンジニアチームは、メルカリアプリの開発からは独立した、かなり特殊なチーム。
#mercarigo
メモした内容。
- Corporate Solutions Engineering(CSE)チームとは、mercariのアプリ開発チームからは独立した、組織課題解決にフォーカスした特殊なチームである。
- Goの採用は、mercari本体がGoの利用にシフトしていたのに合わせて採用した。(ある意味、大人の事情)
- 「People Products」というプロダクトを作成している。これは、3つのシステム(Teams:人と組織のデータベース、Reviews:人事評価システム、Benefits:インセンティブマネジメント)からできている。
- People Productsの実装。フロントエンドは、ReactとReduxを中心に各機能で異なる。バックエンドは全てGoでRestAPIで実装している。
- 「DevDay」という、月に1度に二日に渡って技術的解決に注力する日がある。 主に、大きな課題を解決したり、ドキュメントをがっつり書いたりする。 ときには、EM(エンジニアリングマネージャー)もコードを書くなどで参加したりする。
- RESTフレームワークは独自実装。PHPのBEAR.Sundayを参考にして、fivestarさんが突貫で作ったらしい。
- 暫定でPHPで作成した管理画面が、実はいまだに利用されている。近いうちになんとかしたい。
- 問題点:テストフレームワークが統一されていない。testifyとtestingが混在している。
DevDayという仕組みを取り入れているのは、すごく羨ましいと思えました。mercariさんの発展/成長には、エンジニアが大切/注力すべき所に対してきちんと時間とったりするなどのリスペクトがあるからだろうな、というのが感じられました。
また、CSE発足時にはチームメンバが「Goはみんな素人レベル」だったとのこと。それでも、採用に踏み切った胆力には驚かされました。自分も業務で利用しようとしたことがあったのですが、調査が追いつかずに採用を見送ったことがあり今でも少し後悔してたりします。
テストフレームワークについては、自分も「Goの場合はtestingがあれば良いんじゃないの?」と考えているので気持ちはわかります。が、アサーション機能を使いたい、という人の気持ちもわかる。なので、これはもう「決め」の問題だと思っていて、最初にどれだけネゴれるかだと思っています。混在するのは、後々面倒そうですしね。
俺たちのmicroserviceはまだ始まったばかり
打ち切りによくありそうなタイトル(失礼)で、@kokukumaさんの発表です。
発表の最初に、Goの話がほとんど出てきません、というGoのイベントにあるまじき(笑)発言が飛び出してきました。もっとも、マイクロサービスというキーワードも気になっていますが。
「この発表で、Goの話が出ることはほとんどありません」
— みずりゅ (@MzRyuKa) January 8, 2019
(会場笑)
#mercarigo pic.twitter.com/LKAXHBZHEB
メモできたポイントは以下。
- コードとかデータ、開発プロセス、運用プロセス、組織、それぞれのサービスにおいて独立しているのが、良いマイクロサービスと言える
- 基本はGCPを利用。ただし、mercariのデータベースアクセスするものに関しては、データベースが置いてあるsakuraの石狩DCに配置している。理由はインターネット越しだとボトルネック(コストが発生する?)になるため。
- マイクロサービス化しすぎて、サービスが増えすぎた問題が発生。
- Legacy db service : mercariのDBに対するCRUDを提供。マイクロサービス化を進めるために一時的に作ったサービスで、分散モノリスを助長する危険性があるので、今年あたりには消していきたい。
- Legacy db serviceを終了するためには、Legacy db serviceを使わせないようにする必要がある。
マイクロサービスは、言葉が先行して「これ」って感じのがまだできていないのかな、なんて思っていました。実際は、それぞれを作ること自体はシンプルになるんだけど、連携させた後の全体としての仕組みを見据えていないと厳しいのかな、と感じました。
マイクロサービスの難しいところは、個別の機能は作りやすくなる半面、結合したときのテストとか、障害が起きたときの検知とか、それぞれの機能の責任範囲とか、そういうところなのではないかと思います。
— kabukawa (@kabukawa) January 8, 2019
そのあたりを解決しておかないと、あとで結構たいへんそうだなぁ、と。
#mercarigo
参加者の方々を話を聴いて色々と思うことがあったようで、このセッションの質問は濃かったと思います。
Keep watching and extending features of gRPC
mercariのgRPC王こと、@kazegusuri さんの発表となります。
gRPCのバージョンごとにリリースされた機能について延々と語るという、一つ前のセッションとは真逆のセッションとなりました。
先ほどとは一転して、ばりばりのGoの話w
— みずりゅ (@MzRyuKa) January 8, 2019
発表者はgRRC王のkazegusuriさん。
ひたすらgRPCの話をすると宣言。
#mercarigo pic.twitter.com/nuvxsuXvfI
自分は、gRPCについては直接を触ったことがなく、軽い概要しか知らなかったので、キーワードは半分もわかりませんでした。
だが、それが良い。ギーグな話を聴いて「なるほど!わからん!!」を味わうのもイベント/勉強会の趣旨の一つだと思っています。
gRPC v1.0の機能。
— みずりゅ (@MzRyuKa) January 8, 2019
- stats:
- service config:
- tap:
このうち、tapだけはgRPC王もなぜ導入されたのかわからない(UseCaseが思いつかない)、とのこと。
#mercarigo
gRPCのv1.10になって、やっとprotobuffers以外を実質的にサポートするようになったw
— みずりゅ (@MzRyuKa) January 8, 2019
gRPCのv1.12で、sticknessが突如現れて、そしてすぐにrevertされた。
#mercarigo
なお、最近ではgRPCのドキュメント情報は、以下のURLの「Documentation」に書かれていることが増えてきているとのこと。
また、gRPC王の熱気は会場の参加者にも伝わっていたようです。こうやって熱量伝えられる人、素晴らしいと思います。
・・・よし、gRPC、触ろう。
好きなことを話している人って良いよな。
— kabukawa (@kabukawa) January 8, 2019
楽しそうだし、楽しいゾ!ってのが伝わってくるから。
gRPC王と呼ばれるだけのことはある。
メチャ興味が出てきた。
#mercarigo
好きが伝わってくる熱さでいい #mercarigo
— モメン (@monamomi) January 8, 2019
#mercarigo gRPC 今まで外観だけ知ってて使ったことも、使う機運も無かったけど、めっちゃ楽しそうに話すから興味出てきた
— けんご (@N30nnnn) January 8, 2019
話に熱中しすぎてスクリーンロックがかかってる(笑)
— kabukawa (@kabukawa) January 8, 2019
でも、そんなの気にならないくらい楽しそう!
#mercarigo
ひたすら CHANGELOG について話し続けるプレゼン、案外アリだな。#mercarigo
— チェシャ猫 (@y_taka_23) January 8, 2019
途中、喋りに熱中するあまり、王が飲み物を見失うハプニングもありました。
熱中しすぎて飲み物が視界から消失してたwww
— kabukawa (@kabukawa) January 8, 2019
#mercarigo
王うしろうしろ的なやつ #mercarigo
— tenntennʕ ◔ϖ◔ʔ ==Go@Goが生きてる (@tenntenn) January 8, 2019
まとめ
今年初のイベント参加、かつ、今年初のGo関連のイベントになります。今月は週一でGo関連のイベント(勉強会、もくもく会含む)に参加するのですが、その一発目ということでGo欲を高める非常に良い刺激を受けることができました。
さて、その高まったGo欲を活かすためにも、今年はgRPCに手を出してみます。昨年は「もう少し基本を身につけてから」という感じで考えていたのですが、gRPC王に感化されたのか、ちょっとでも触ってみようと思いました。王に近づくことはなかなか難しいけど、まずはgRPC足軽くらいにはなっておきたいな、と。