Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Go in Corporate Solutions Engineering
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Katsuhiro Ogawa
January 08, 2019
Technology
0
2.6k
Go in Corporate Solutions Engineering
mercari.go #5
Katsuhiro Ogawa
January 08, 2019
Tweet
Share
More Decks by Katsuhiro Ogawa
See All by Katsuhiro Ogawa
新規プロダクト開発に伴う既存マイクロサービスのリアーキテクティングとその後
fivestar
1
150
Goで学ぶSOLID原則
fivestar
0
420
メルカリ CSE チームの 歩みと取り組み / Steps and Tries in the CSE team for Mercari
fivestar
2
970
いつまでPHP 5.x使ってるの
fivestar
1
2k
PHP のドキュメントを読んで PHP のことをもっと知ろう
fivestar
1
3.3k
CrocosSecurityBundleを Symfony3.0に対応した話
fivestar
0
300
PHP BLT だけど HTML5 の コンテンツモデルのお話
fivestar
0
2.4k
THE NEW "PERFECT PHP" WILL BE COMING SOON
fivestar
0
8.1k
Symfony - フレームワークの先へ
fivestar
2
10k
Other Decks in Technology
See All in Technology
SRE Enabling戦記 - 急成長する組織にSREを浸透させる戦いの歴史
markie1009
0
150
AIエージェントに必要なのはデータではなく文脈だった/ai-agent-context-graph-mybest
jonnojun
1
220
Amazon Bedrock Knowledge Basesチャンキング解説!
aoinoguchi
0
160
コンテナセキュリティの最新事情 ~ 2026年版 ~
kyohmizu
4
780
Agile Leadership Summit Keynote 2026
m_seki
1
660
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.5k
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
280
SchooでVue.js/Nuxtを技術選定している理由
yamanoku
3
160
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.4k
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
390
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
470
OCI Database Management サービス詳細
oracle4engineer
PRO
1
7.4k
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
460
Site-Speed That Sticks
csswizardry
13
1.1k
How to Think Like a Performance Engineer
csswizardry
28
2.5k
The Language of Interfaces
destraynor
162
26k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
120
How to train your dragon (web standard)
notwaldorf
97
6.5k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
1.8k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
What does AI have to do with Human Rights?
axbom
PRO
0
2k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
290
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Transcript
Go in Corporate Solutions Engineering mercari.go #5 / @fivestar
自己紹介
小川 雄大 (OGAWA Katsuhiro) • @fivestar • CSE 所属 •
Backend Engineering アーキテクト • 2018/1/1 入社 • 得意な言語は PHP • 前職は Ancar Inc. / CTO
CSE について 今日のトピック 01 プロダクトと開発チーム体制 02 Backend of People Products
03 開発の歩み 04 技術的課題 05
CSE について
4 Corporate Solutions Engineering チーム “Solving business challenges with engineering”
経営課題をエンジニアリングで解決する
• 2017/11 に元メルカリ CTO・VPoE の @sotarok により立ち上げ ◦ 初期名称は Corporate
Engineering チーム • 組織課題の解決にフォーカスしたエンジニアチーム • メルカリアプリの開発チームからは独立 ◦ メルカリのバリューを活かしつつ独自のチーム文化を形成 生い立ち
2018 /01 3人 / 1ドメイン プロダクト開発が始まる 2月には人数が倍に 2018 /07 15人
/ 3ドメイン 2018 /12 26人 / 4ドメイン IIT から新卒加入 CSE チームの変遷 PM 加入 チーム名を CSE に変更
ビジネスドメイン People Products 人と組織のデータベース、人事評価 Accounting Products 会計システム、連結決算、会計監査レポート Communication & Knowledge
Wiki PR & Branding コーポレート Web
プロダクトと 開発チーム体制
People Products Teams 人と組織のデータベース Reviews 人事評価システム Benefits インセンティブマネジメント
Frontend / Backend Frontend フレームワークは プロダクトごとに選定 REST API Backend
People Products 開発チーム体制 • エンジニアリングマネージャー (EM) / 2人 • プロダクトマネージャー
(PM) / 2人 • ソフトウェアエンジニア / 11人 • QAエンジニア / 1人 • デザイナー / 2人
• 担当領域 ◦ プロダクトあるいはエピックごとに担当をつける ◦ ある程度流動的 • 技術領域 ◦ 多くのメンバーは
Frontend/Backend 両方やる エンジニアリングチーム体制
• Frontend / Backend それぞれにアーキテクトが1人 ◦ 一部 Tech Lead のロールを兼任
◦ プロダクト横断でアーキテクチャに責任を持つ • コードもめっちゃ書く アーキテクト
• 月に1度、2日に渡って技術的課題解決に注力する ◦ リファクタリングやドキュメンテーションなど ◦ PM ではなくエンジニアがオーナーシップを持つ • EM も参加
DevDay
Backend of People Products
Backend 基本構成 • アプリケーション ◦ Go 製の API • インフラ
◦ メルカリの Microservices プラットフォーム ◦ MySQL (CloudSQL)
Backend アーキテクチャ • REST API • Entity Model • Repository
• Service (Usecase)
REST フレームワーク • BEAR.Sunday respected • Handler を Resource 単位で管理
• HAL フォーマットをサポート
• On{HttpMethod} ハンドラー ◦ 未定義の場合は 405 • View Model ◦
JSON 定義はこちらに • resource.Base ◦ State 管理 Resource 指向ハンドラー
この他に使用している主な外部パッケージ • github.com/dgrijalva/jwt-go • github.com/go-chi/chi • github.com/mattes/migrate • github.com/pilu/fresh •
go.uber.org/zap • gopkg.in/guregu/null.v3
開発の歩み
開発の歩み (2018/1~) • Reviews の MVP バージョンリリース ◦ 1月末に実施される評価に向けた機能開発を2週間で実装 •
Go はみんな素人レベル ◦ @fivestar が趣味でツール作ってた程度 • 動くこと最優先 ◦ ベタベタに Handler を書いていた ◦ hot-reload の仕組みを最優先で整えた
• 2週間で REST フレームワーク開発 • ドメイン層の基本アーキテクチャを決める ◦ シンプルな Entity Model
◦ DDD 由来の Repository / Service 開発の歩み (2018/2~)
• Teams / Reviews の正式リリース • リリースを前に管理者用ページがなく運用面がガバガバだったため PHP でその場しのぎのツールを作る ◦
未だに活用されてしまっている... 開発の歩み (2018/4~)
• API アクセスコントロールのための仕組みを導入 ◦ Teams IAM • データ暗号化基盤の導入 ◦ 評価等の機密データを暗号化
◦ Cloud KMS を利用 開発の歩み (2018/6~)
• Slack 通知の仕組みを Cloud Functions を用いて実装 ◦ 新卒が担当 ◦ Go…
ではなく JavaScript • Benefits リリース ◦ 日本初の挑戦を。メルカリが新インセンティブ制度に込めた想いとその舞台裏 開発の歩み (2018/12~)
技術的課題
• ORM などは導入しておらず SQL をベタベタと書いている • カラム追加時などソースコードの変更箇所が多いため効率的にスキーマ・ クエリ管理ができるツールがほしい SQL Building
• 途中で testify が導入された ◦ 個人的には testing パッケージで十分だと思っている • モックどうするか
テストの書き方が統一されていない
• バックエンドも肥大化しつつある • 少なくともアプリケーションドメインごとにコードを分けたい マイクロサービス化
• 短期間で作ったため DevDay にて調整中 REST フレームワークの OSS 化
• メルカリ本体側の人たちともっと交流したい Go のスペシャリスト不在
Any questions?