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
Katsuhiro Ogawa
January 08, 2019
Technology
0
2.4k
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
140
Goで学ぶSOLID原則
fivestar
0
290
メルカリ CSE チームの 歩みと取り組み / Steps and Tries in the CSE team for Mercari
fivestar
2
880
いつまでPHP 5.x使ってるの
fivestar
1
1.9k
PHP のドキュメントを読んで PHP のことをもっと知ろう
fivestar
1
3.1k
CrocosSecurityBundleを Symfony3.0に対応した話
fivestar
0
230
PHP BLT だけど HTML5 の コンテンツモデルのお話
fivestar
0
2.3k
THE NEW "PERFECT PHP" WILL BE COMING SOON
fivestar
0
8k
Symfony - フレームワークの先へ
fivestar
2
9.9k
Other Decks in Technology
See All in Technology
MLOps の現場から
asei
6
650
Microsoft Azure全冠になってみた ~アレを使い倒した者が試験を制す!?~/Obtained all Microsoft Azure certifications Those who use "that" to the full will win the exam! ?
yuj1osm
2
110
フロントエンド設計にモブ設計を導入してみた / 20241212_cloudsign_TechFrontMeetup
bengo4com
0
1.9k
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
muziyoshiz
3
2.4k
権威ドキュメントで振り返る2024 #年忘れセキュリティ2024
hirotomotaguchi
2
750
Google Cloud で始める Cloud Run 〜AWSとの比較と実例デモで解説〜
risatube
PRO
0
110
DevFest 2024 Incheon / Songdo - Compose UI 조합 심화
wisemuji
0
110
レンジャーシステムズ | 会社紹介(採用ピッチ)
rssytems
0
150
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
サーバレスアプリ開発者向けアップデートをキャッチアップしてきた #AWSreInvent #regrowth_fuk
drumnistnakano
0
200
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
300
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
5
180
Featured
See All Featured
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
How To Stay Up To Date on Web Technology
chriscoyier
789
250k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Optimizing for Happiness
mojombo
376
70k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
Docker and Python
trallard
42
3.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
2
170
Git: the NoSQL Database
bkeepers
PRO
427
64k
Designing for Performance
lara
604
68k
Embracing the Ebb and Flow
colly
84
4.5k
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?