みずりゅの自由帳

主に参加したイベントやソフトウェア技術/開発について記録しています

mercari.go #5 参加レポート

2019年1月8日、「mercari.go #5」に参加してきました。簡単に内容を記録しておきます。

 

mercari.connpass.com

mercari.goへは、#3についで2回目の参加となります。

 

 

※資料については、情報が入り次第リンクを追加してきます。

 

開始前

受付開始時間早々に受付を済ませ、会場入りです。前回(#3)の時も思いましたが、会場が広く綺麗で、自販機の飲み物も自由に取れるのですごく良い環境だなぁと思いました。自分は下戸なので、ソフトドリンクの種類が多いと幾分か救われます。

f:id:mzryuka:20190109214820p:plain

f:id:mzryuka:20190109214837p:plain

 

 

オープニング

morikuniさん(mercari.goのオーガナイザー)による、オープニング&諸注意のご連絡です。懇親会のGルールは、Go言語に関するイベントだけにいつも心に刺さります。まぁ、非推奨のOも、Goには含まれているんですけどねw。

 

f:id:mzryuka:20190109214530p:plain

 

Go in Corporate Solutions Engineering

元はPHPerで実はGo歴はそんなでもなかったという話から始まった、@fivestarさんの発表。そんなでもと言いつつGoでの開発に携わっていけるのが羨ましいなと思いました。

 

メモした内容。

  • 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のイベントにあるまじき(笑)発言が飛び出してきました。もっとも、マイクロサービスというキーワードも気になっていますが。

 

 

メモできたポイントは以下。

  • コードとかデータ、開発プロセス、運用プロセス、組織、それぞれのサービスにおいて独立しているのが、良いマイクロサービスと言える
  • 基本はGCPを利用。ただし、mercariのデータベースアクセスするものに関しては、データベースが置いてあるsakuraの石狩DCに配置している。理由はインターネット越しだとボトルネック(コストが発生する?)になるため。
  • マイクロサービス化しすぎて、サービスが増えすぎた問題が発生。
  • Legacy db service : mercariのDBに対するCRUDを提供。マイクロサービス化を進めるために一時的に作ったサービスで、分散モノリスを助長する危険性があるので、今年あたりには消していきたい。
  • Legacy db serviceを終了するためには、Legacy db serviceを使わせないようにする必要がある。

マイクロサービスは、言葉が先行して「これ」って感じのがまだできていないのかな、なんて思っていました。実際は、それぞれを作ること自体はシンプルになるんだけど、連携させた後の全体としての仕組みを見据えていないと厳しいのかな、と感じました。

 

 

参加者の方々を話を聴いて色々と思うことがあったようで、このセッションの質問は濃かったと思います。

 

Keep watching and extending features of gRPC

mercariのgRPC王こと、@kazegusuri さんの発表となります。

gRPCのバージョンごとにリリースされた機能について延々と語るという、一つ前のセッションとは真逆のセッションとなりました。

 

自分は、gRPCについては直接を触ったことがなく、軽い概要しか知らなかったので、キーワードは半分もわかりませんでした。
だが、それが良い。ギーグな話を聴いて「なるほど!わからん!!」を味わうのもイベント/勉強会の趣旨の一つだと思っています。

 

 

なお、最近ではgRPCのドキュメント情報は、以下のURLの「Documentation」に書かれていることが増えてきているとのこと。

 

github.com

 

また、gRPC王の熱気は会場の参加者にも伝わっていたようです。こうやって熱量伝えられる人、素晴らしいと思います。

・・・よし、gRPC、触ろう。

 

 

途中、喋りに熱中するあまり、王が飲み物を見失うハプニングもありました。

 

まとめ

今年初のイベント参加、かつ、今年初のGo関連のイベントになります。今月は週一でGo関連のイベント(勉強会、もくもく会含む)に参加するのですが、その一発目ということでGo欲を高める非常に良い刺激を受けることができました。

さて、その高まったGo欲を活かすためにも、今年はgRPCに手を出してみます。昨年は「もう少し基本を身につけてから」という感じで考えていたのですが、gRPC王に感化されたのか、ちょっとでも触ってみようと思いました。王に近づくことはなかなか難しいけど、まずはgRPC足軽くらいにはなっておきたいな、と。