Mercari Engineering Blog

We're the software engineers behind Mercari. Check out our blog to see the tech that powers our marketplace.

Go Conference 2018 Autumnで登壇しました & 発表資料まとめ #golang

株式会社メルカリBackend Engineerの@yagi5です。 11月25日に開催されたGo Conferenceで、スポンサーセッションとして登壇しました。
レポートを書きたいと思います。
なお、当日は2トラックだったため、筆者が参加していないセッションについては、末尾でスライドのみ紹介します。
また、筆者が資料を見つけられていない発表もいくつかあり、もし資料をご存知の方は@yagi5まで教えてください!

Keynote

Speaker: Steven Buss

github.com

GoogleのSteven Buss氏による発表です。(資料) NaCl → gVisorへの移行についてや、ptraceを用いたシステムコールのトレース、Google App Engine 2nd genについての、デモを交えながらのセッションでした。

Microservices実装ガイド in Go at Mercari

Speaker: @yagi5(株式会社メルカリ)

筆者による、株式会社メルカリのスポンサーセッションです。Microservicesを、実装レベルでどのようにGoで開発しているのか、について話しました。

よくあるJava IT企業で新規プロジェクトをGoで立ち上げてみてる話

Speaker: 武田 洋平(株式会社メディアドゥ)

株式会社メディアドゥ様によるスポンサーセッションです。 社内で主にJavaを使っていたところ、どのようにGoを導入したのか、についてののセッションでした。Goの習得しやすさの話や、Goを採用するまでのマネージャー層の説得についてなどを話されていました。

Pains and gains of architecting microservices on local dev environment

Speaker: @creasty, @izumin5210(ウォンテッドリー株式会社)

ウォンテッドリー株式会社様によるスポンサーセッションです。 ローカルでマイクロサービスをどのようにうまく動かすかについてのセッションでした。メルカリでも似たようなことをしたいケースは多くあり、非常に参考になりました。

大規模ウェブサービスにおけるコードレビュー観点

Speaker: 井本 裕(株式会社ディー・エヌ・エー)

株式会社ディー・エヌ・エー様によるスポンサーセッションです。 パフォーマンスを意識したコードレビュー手法についてのセッションでした。Google App Engineの制約をメモリ最適化の手法でテクニカルに乗り越える方法が共有されていました。

OpenCensusによるAPMの実現と、未来

Speaker: munisystem

OpenCensusをどのようにAPMに利用するか、についてのセッションでした。メルカリでも分散トレーシングにOpenCensusを採用しています。

Profiling Go Application

Speaker: orisano

画像変換サーバで発生したOOM Killerや、kubeletでのパフォーマンス問題について、どのように調査・計測して修正したかについてのセッションでした。

Reading Source code of Biscuit (GO OS)

Speaker: Yoshiki Shibukawa

docs.google.com

「Goならわかるシステムプログラミング」著者の渋川よしきさんによる、BiscuitというGo製のOSのコードリーディングについてのセッションでした。

Consider pluggable CLI tool implementation

Speaker: izumin5210

grapiというOSSについて、プラガブルな機能追加をどのように行うか、についてのセッションでした。

フィードバック制御によるGoroutine起動数の最適化

Speaker: monochromegane

goroutineを実装する際に、最適な並行数を動的に決めるために、PID制御を使ったアプローチについてのセッションでした。goroutine数は開発者の経験と地道な計測により決定されており、それをどのように最適化するかについての知見が共有されていました。

API Testing the Hard Way

Speaker: timakin

Goで書くテストのTipsについてのセッションでした。Helper、スタブ、Fixturesなど、実践的なテストTipsの知見が共有されていました。

Introduce GAE/Go 2nd generation

Speaker: sonatard

Google App Engine 2nd genについてのセッションでした。2nd genへの移行方法や、GKEについても触れられていました。

LT 1 社内初導入のAPIサーバーサイドアーキテクチャ設計戦略

Speaker: Kazuki Higashiguchi

https://go-talks.appspot.com/github.com/higasgt/gocon-lt/architecture.slide#1

社内でGoを初めて導入された際の、サーバサイドのアーキテクチャ、パッケージ構成の変遷についてのセッションでした。誰もが一度は悩むところだと思います。

LT 2 gorealizeで始めるDocker開発環境

Speaker: Kazuki Higashiguchi

https://go-talks.appspot.com/github.com/higasgt/gocon-lt/realize.slide#1

realizeを用いたライブリローディングについてのセッションでした。

筆者が参加できなかったセッション

以下は、筆者が参加していないセッションのため、スライドのみご紹介します。

Becoming the voice of Go

Speaker: Angela Funk

※ 資料がまだ公開されていないようでした。

Write your own database like playing lego

Speaker: huydx

※ 資料がまだ公開されていないようでした。

Linting, Slicing, and Dicing OpenAPI documents

Speaker: Daisuke Maki

https://www.slideshare.net/lestrrat/slicing-dicing-and-linting-openapi

www.slideshare.net

Beloved database/sql. How we go test with RDBMS.

Speaker: achiku

3カ国のクライアントを支えるAPI基盤の構築

Speaker: takochuu

Practical Go Concurrency Design Patterns

Speaker: moriyoshi

まとめ

筆者はGoCon初参加でしたが、非常に楽しめました。Goを採用している会社はどんどん増えているように感じます。
Goは様々な分野で活用されているため、セッションのジャンルが多岐に渡っており、大変勉強になります。
当日はcrash.academy様による動画の撮影も入っており、今後動画は公開予定とのことです。
筆者は参加できませんでしたが、セッションと同時進行でハンズオンも開催されており、好評だったとのことです。
次回のGo Conferenceも、ぜひ参加したいと思います。

株式会社メルカリでは、Goが大好きなソフトウェアエンジニアを募集しています。

careers.mercari.com