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
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
480
メルカリ 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
生成AI時代のIAMのマニアックな話
takuros
6
2.7k
Autonomous AI Lakehouse - Live AI Hubから始めるセキュアなAIデータ活用 -
oracle4engineer
PRO
3
200
TSKaigi Sendai 2026 - tsgo時代のTypeScript Playgroundはどう動くか
teamlab
PRO
0
110
Content Mapper APIの応用例~CSS Modules、言語ファイル~
uhyo
2
620
続・ソフトウェアアーキテクトのための意思決定術: Decision Readiness, Revisited — When AI Changes the Economics of Software Architecture
snoozer05
PRO
9
2.7k
基本から分かる!AWSセキュリティ運用の考え方と任せ方
cmusudakeisuke
1
450
攻撃 3 時間 vs 復旧 10 時間。アクセスキー流出の非対称性を体感するために CTF を作った話
kazzpapa3
1
150
リアクションエンジニア ― 小さなリアクションから、話しかけやすい組織をつくる ―
ryuguyana
1
130
令和の今、あらためて IAM を考える。アクセスキーを「無くせない現実」との向き合い方
kazzpapa3
0
430
試験勉強はGrokBotでやれ
maigo999
0
110
Software Engineering in an AI-Driven World
erikjhordan_rey
0
130
Kiro 入門 (1 つのエージェントを、どの画面からでも) | 目指せ Kiro マスター 01
inariku
PRO
5
1.1k
Featured
See All Featured
Prompt Engineering for Job Search
mfonobong
0
580
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.8k
Designing for Performance
lara
612
70k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Discover your Explorer Soul
emna__ayadi
2
1.3k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
890
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
290
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
320
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
So, you think you're a good person
axbom
PRO
2
2.3k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
350
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?