メルカリのAllforOneな開発と運用/MercariAllforOneDevAndOps

 メルカリのAllforOneな開発と運用/MercariAllforOneDevAndOps

575b9ff9b04d8598ab4f5774bb431b02?s=128

Kenichi Sasaki

March 26, 2018
Tweet

Transcript

  1. SENDAI IT COMMUNE meetup #04 株式会社メルカリ Software Engineer (SRE) Kenichi

    SASAKI メルカリ ”All for One” な開発と運用
  2. 自己紹介 • Kenichi SASAKI (@siroken3) • Software Engineer (SRE) •

    Mercari, Inc (2014/7〜) • 好きな食べ物 • 牛タン • ずんだ餅
  3. メルカリについて

  4. 2013年2月1日 東京、仙台、福岡、 San Francisco、Portland、 London 約600名 半数以上がCS (カスタマーサポート)に従事 従業員数 オフィス

    会社設立日 株式会社メルカリ概要
  5. メルカリ仙台オフィス

  6. 新たな価値を生みだす 世界的なマーケットプレイスを創る Create value in a global marketplace where anyone

    can buy & sell Be Professional プロフェッショナルであれ All for One 全て 成功 ために Go Bold 大胆にやろう メルカリ ミッションとバリュー バリュー ミッション
  7. 売れた商品 約半数が 出品から24時間以内に売れている 売れるまで 時間 利用者が多いからすぐ売れる ダウンロード数 日本 6,000万超 アメリカ

    3,000万超 イギリス 数百万
  8. 利用者が多いからすぐ売れる

  9. 幅広い商品展開・商品量 1日 出品 カテゴリー別販売額シェア

  10. メルカリ Architechture

  11. Architecture

  12. SRE • Site Reliability Engineering 略 • Ben Treynorが提唱 •

    ソフトウェアエンジニアリングによりサイト/サービス 信頼性を向上させるTeamとそ 実践 • Google 様々なプロダクト・サービスを横断
  13. Mercari SRE •「信頼性 高い」サービス 実現 •いつでも快適かつ安全に利用できる •2015/11 「インフラチーム」からSREへ •現在メンバー 「11人」絶賛募集中

  14. 開発・運用 ライフサイクル 構想 開発 運用 Usability testing BizDev TechResearch

  15. 開発・運用 All for Oneで • ProductManager観点/ CS観点 / エンジニア観点で 各ライフサイクルに参加

    • 全て 成功 ために (職種を越えよう) • 個々 チーム内向き志向 良くないよ
  16. 社内コミュニケーションツール 全社員 使用中

  17. SRE Presents 開発/運用ツール

  18. SNS監視ボット • メルカリでサポートした方がよいソーシャルネット ワーク、そ 他 記事・発言をトラッキング • 機能改善やアクティブサポートに利用 • Slackで該当記事を発言

  19. アクティブサポート(一例) • お客様から お問い合わせド リブンな受け身で なく積極 的にサポートするチーム

  20. GitHub自動レビュー • GitHub PullReuquestに自動でデプロイ可能かレ ビューしてくれる • Event = コードPush /

    Description記述 / ラベル付与 • マネージャ 承認あり? • ピアレビュー完了? • DBマイグレーション完了? • 作り方について詳しく • https://speakerdeck.com/siroken3/github-bot-made-with -aws-lambda
  21. 匿名化データベース

  22. 匿名化データベース • 本番 MySQLデータベース 個人情報をリアルタイ ムで匿名化したデータベース • SQLを書きさえすれ チーム個別 KPI値をリアルタ

    イムで取得できる • 社内で anonymous DB (通称 anon-DB)と呼称 • さまざまな職種が利用中 • エンジニア / カスタマーサポート / BI / マーケティング / 広報 / ファイナンス • データ 民主化に一役
  23. 匿名化データベース PRODUCTION series-A PRODUCTION series-B PRODUCTION series-C Anonymous-db (Active) INSERT/UPDATE

    TRIGGER Anonymous-db (Stand-by) INSERT/UPDATE TRIGGER Multi-source replication
  24. 匿名化データベース 運用 • SSH-Tunneling経由で接続するため Bastionサー バアカウント発行 • (準備中) Google IAP

    + web socket で発行不要に • 長時間実行しているクエリ 自動KILL • Index 本番と 異なるも を追加
  25. DELIMITER $$ CREATE TRIGGER users_insert BEFORE INSERT ON users FOR

    EACH ROW BEGIN IF (NEW.email IS NOT NULL) THEN SET NEW.email = MD5(concat(NEW.email,'長い塩')); END IF; END; CREATE TRIGGER users_update BEFORE UPDATE ON users FOR EACH ROW BEGIN IF (NEW.email IS NOT NULL AND NEW.email !=ifnull(OLD.email, '')) THEN SET NEW.email = MD5(concat(NEW.email,'長い塩')); END IF; END; $$
  26. まとめ • 職種による垣根 ないコミュニケーション • プロダクトデータ 全職種アクセス可能 • [除く]お客様,社員 個人情報/アクセスキー

    • すべて 成功するため All for One!
  27. 仙台 楽しい街! (仙台 同僚より)