DMM.go #1参加レポート

DMM.go #1に参加してきました。備忘録もかねて簡単にまとめます。

Cloud Nativeな時代に考えるmonorepo 松本 勇気

要約すると

  1. NCな時代にはいろんなものを使うk8s,CaaS,FaaS, Managed Serviceなど
  2. マイクロサービスにする。依存の管理が大変monorepoにする
  3. 賢いビルドツールが欲しい
  4. Bazelが良さそう。だが、学習コスト等辛いところも多い。

といった感じでした。

他でよく聞く話もあるものの言語化がクリアでわかりやすかったです。まだ自分の普段担当しているサービスはマイクロサービスに切るレベルではなさそうだけどアンテナは張っておこうと思いました。

PRACTICAL DISTRIBUTED TRACING 金 勝洙

マイクロサービスでそれぞれのサービスの性能を計測するための分散トレーシングの話。これをやるためには色々なツールが出ていて、ざっと上げただけでも

とあり、SDKもそれぞれ違って辛いのでうまく抽象化されているようでした。OpenCensusはそうやった分散トレースの収集ツールで、使いた等をされてました。
同じく今のシステムマイクロサービスでないため、いかしづらそうだけどいずれ。

VCR in Go:モック自動生成で楽しちゃう話 本田 雄亮

VCRという、実際の通信を利用してそこからモックを自動で生成してしまうという話でした。

vcrって知らなかったのですが、Video Cassette Recorderなのかというので驚きでした。取得したデータもCassetteなのが面白いし、通信を傍受してそのままモックにしてしまうというのがダイナミックで良いですね。

懇親会で少しお話ができて具体的に何をテストしているか伺えたのですが、ブラックボックス化しているサービスのリプレースで、テストに使われているようでした。外部サービスにかぎらず実際のAPIをそのままモックにできるというのは色々応用が利きそうです。外部のAPIの応答が非常に遅い場合もテストのストレスを下げそうですね。何かで試してみたいです。

チャット小説アプリ TELLER を支える GAE/Go 中村 智将

TELLERというサービスの1->10フェイズにおいて直面したビジネス的および技術的な課題についてどう対処してきたかという話でした。話が非常におもしろかったです。課題がよくあるもので共感できたり、それぞれの課題に対してちゃんと技術的なアプローチをしていていい仕事をしていて素晴らしかったです。Goあんま関係ないと言いつつも結構Goが絡んでいて良かったです。
良かった、参考になったポイントとして、

  • 依存関係をCIでチェックする、という発想がなくて参考になりました。これは今は若手のレビューでここでこのライブラリを読んじゃだめみたいなレビューを入れる事があって、ここがCIで弾けると良さそうですね。
  • アダルトを画像認識で弾くという話、全部人力でやるとコストが高く、全部機械認識だとまだ誤判定が厳しいというのがリアルでした。今はうまく両方用いているようです。単なる焼き芋がバイオレンスな画像判定されたというのがツボでした。
  • DIはwireを使われているそうです。良いと聞くので試したみたいところ。
  • Elasticsearchが学習コスト高くて、Algoliaを使ったが良い反面色々辛いところがあって、Elasticsearchに戻りたい気持ちがある、というのが技術選定の苦悩あるあるですね。Algoliaは知らなかったので参考になりました。
  • ランキングをRedisでというのはよく聞くのですが、Redisだけだと厳しい部分もあるのですね。
  • 権限周りの実装をどうするか

等々、全体を聞いていて感じるのは銀の弾丸ってないよなぁ…という感じです。

まとめ

半分がマイクロサービス絡み、半分がバラエティにとんで実践できそうなものといった感じでした。企業主催のGoイベントは企業のサービスに合わせた実践的な内容が多くて良いですね。ありがとうございました!