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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
(技術的には)社内システムもOKなブラウザエージェントを作ってみた!
har1101
0
330
SREじゃなかった僕らがenablingを通じて「SRE実践者」になるまでのリアル / SRE Kaigi 2026
aeonpeople
6
2.6k
Context Engineeringの取り組み
nutslove
0
380
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.2k
pool.ntp.orgに ⾃宅サーバーで 参加してみたら...
tanyorg
0
1.4k
22nd ACRi Webinar - ChipTip Technology Eric-san's slide
nao_sumikawa
0
100
量子クラウドサービスの裏側 〜Deep Dive into OQTOPUS〜
oqtopus
0
150
AWS Network Firewall Proxyを触ってみた
nagisa53
1
250
茨城の思い出を振り返る ~CDKのセキュリティを添えて~ / 20260201 Mitsutoshi Matsuo
shift_evolve
PRO
1
430
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
22nd ACRi Webinar - 1Finity Tamura-san's slide
nao_sumikawa
0
110
StrandsとNeptuneを使ってナレッジグラフを構築する
yakumo
1
130
Featured
See All Featured
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
68
Google's AI Overviews - The New Search
badams
0
910
GitHub's CSS Performance
jonrohan
1032
470k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
170
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
130
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
The Language of Interfaces
destraynor
162
26k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
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?