Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Go in Corporate Solutions Engineering
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Katsuhiro Ogawa
January 08, 2019
Technology
2.7k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Go in Corporate Solutions Engineering
mercari.go #5
Katsuhiro Ogawa
January 08, 2019
More Decks by Katsuhiro Ogawa
See All by Katsuhiro Ogawa
新規プロダクト開発に伴う既存マイクロサービスのリアーキテクティングとその後
fivestar
1
180
Goで学ぶSOLID原則
fivestar
0
460
メルカリ CSE チームの 歩みと取り組み / Steps and Tries in the CSE team for Mercari
fivestar
2
1k
いつまでPHP 5.x使ってるの
fivestar
1
2.1k
PHP のドキュメントを読んで PHP のことをもっと知ろう
fivestar
1
3.5k
CrocosSecurityBundleを Symfony3.0に対応した話
fivestar
0
340
PHP BLT だけど HTML5 の コンテンツモデルのお話
fivestar
0
2.5k
THE NEW "PERFECT PHP" WILL BE COMING SOON
fivestar
0
8.2k
Symfony - フレームワークの先へ
fivestar
2
11k
Other Decks in Technology
See All in Technology
Databricksメトリクスビューはじめてのもくもく会
taka_aki
0
150
個別開発で終わらせない。 現場の課題をプロダクトの強さに変える StockmarkのFDE
ktkrhr
0
530
検証フェーズはAIの回答を判断するための学習機会
toru_kubota
2
220
IR Today: Theory, Practice, and Agents
dtunkelang
0
310
覗いてみよう 関数型ビジュアル言語×2Dグラフィックスの世界
yohyamasaki
0
160
VS Code × GitHub Copilot での Fabric 開発
ryomaru0825
1
210
全社共通データ基盤をつくる。ソニーのDatabricks活用とデータガバナンス設計の裏側
sony
0
290
【Findyテック文化祭ワークショップ】新卒エンジニア&採用担当と作る、 なりたい姿と今やるべき一歩
dip_tech
PRO
0
150
The kernel report
ennael
PRO
1
190
React Nativeでの OTA Updateって、 どう説明する?
ichiki1023
0
130
HacobuにおけるFDEとは/登壇資料(戸井田 裕貴)
hacobu
PRO
1
700
Claude Designがめちゃくちゃ便利なので使ってほしい
diggymo
0
190
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
6.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Designing Experiences People Love
moore
143
24k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
260
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
510
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
320
Documentation Writing (for coders)
carmenintech
77
5.6k
BBQ
matthewcrist
89
10k
How to make the Groovebox
asonas
2
2.5k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
500
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?