Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Platform as a productの取り組み - Sansan研究開発のPlatform Engineering / Platform as a product initiative - Platform Engineering at Sansan R&D

Sansan R&D
February 08, 2024

Platform as a productの取り組み - Sansan研究開発のPlatform Engineering / Platform as a product initiative - Platform Engineering at Sansan R&D

■イベント
Platform Engineering Meetup #7
https://platformengineering.connpass.com/event/307275/

■発表者
技術本部 研究開発部 Architectグループ
神林 祐⼀

■研究開発職 採用情報
https://media.sansan-engineering.com/randd

■Sansan Tech Blog
https://buildersbox.corp-sansan.com/

Sansan R&D

February 08, 2024
Tweet

More Decks by Sansan R&D

Other Decks in Technology

Transcript

  1. Sansan株式会社
    部署 名前
    Sansan研究開発における
    Platform Engineering
    Sansan技術本部
    Platform as a productの取り組み
    Yuichi Kambayashi
    @distkloc

    View full-size slide

  2. 神林祐⼀ @distkloc
    Sansan株式会社
    技術本部 研究開発部 Architectグループ
    Assistant Group Manager
    - Software Engineer
    - DevOps Engineer
    - MLOps Engineer
    - Platform Engineer

    View full-size slide

  3. - AWS re:Invent 2023 - How to build a platform that developers love (DOP219)
    - AWS re:Invent 2023 - Platform engineering with Amazon EKS (CON311)
    - AWS re:Invent 2023 - Modernization of Nintendo eShop: Microservice and platform engineering (GAM306)
    - AWS re:Invent 2023 - Transforming deployment: Deep dive into Backstage on AWS (OPN404)
    AWS re:Invent 2023に⾏ってきました

    View full-size slide

  4. - Sansan研究開発部とは
    - プラットフォーム構築前後の開発フロー
    - プラットフォームが⽣き残るために
    アジェンダ

    View full-size slide

  5. さまざまな事業領域に貢献するR&D
    画像処理・画像認識 ⾃然⾔語処理 機械学習
    データサイエンス
    ・因果推論
    データ可視化
    プロダクトマネジメント
    新規事業
    営業/CS
    (社内課題)
    解約阻⽌・利⽤促進(CS)
    営業効率化(営業)
    SceneText
    Recognition
    Object Detection
    ⼊⼒の⾃動化
    OCR/項⽬分割など
    超解像
    特徴語判定
    会社
    キーワード
    固有表現抽出
    メール署名
    取り込み
    固有表現抽出
    ニュース
    配信
    ⽂書分類
    ResNet
    企業ロゴ
    抽出
    Graph
    Embeding
    レコメンデ
    ーション
    ラベル
    予測
    名寄せ
    RCT
    ABテスト・
    効果検証
    パネルデータ
    分析
    Sansan Labs
    (新機能開発)
    キーバリュー抽出
    帳票のデータ化
    Graph Neural Network

    View full-size slide

  6. Sansan Labs
    「#営業戦略⽴案」などの活⽤シーンを選び、実験的な機能を利⽤できるサービス。
    Sansanユーザーに研究開発部が直接提供している。リードタイム2週間、年間100リリースを⽬指す。

    View full-size slide

  7. 研究開発部内のメンバー構成
    研究員 /データサイエンティスト
    主に名刺や帳票の⾼精度なデータ化や蓄積されたデ
    ータからプロダクトの価値を⾼めるデータを活⽤し
    た機能の研究開発からサービスリリースまで担う
    プロダクトマネージャー
    プロダクト組織と連携し、各プロダクトを連続的・
    ⾮連続的に成⻑させる機能開発・検証をリード
    MLOps / DevOps エンジニア
    サービスの品質・可⽤性・セキュリティ・オブザー
    バビリティーを担保
    また研究員による試⾏錯誤を増やし、継続的に素早
    くリリースするためのデプロイ基盤を構築・推進
    データエンジニア /アナリティクスエンジニア
    研究開発部や全社で利⽤する分析基盤の設計・開発
    をリード
    ⾃社のプロダクトから⽣まれるさまざまなログやデ
    ータ連携パートナー企業などからのデータを、活⽤
    しやすい形で社内に提供

    View full-size slide

  8. 以前の開発フロー

    View full-size slide

  9. 以前の開発フロー
    データエンジニア
    研究員
    DevOpsエンジニア
    機械学習システム
    開発フロー
    データ
    収集
    前処理
    学習
    評価
    サービス
    構築
    リリース
    A/B
    テスト
    推論
    データ分析基盤等から
    データを取得し
    機械学習モデルを開発
    モデル開発が終わったら
    エンジニアにサービス化を依頼する
    研究員が作った機械学習モデルを
    本番環境のサービスに載せる

    View full-size slide

  10. 以前の開発フロー
    アルゴリズム開発 インフラ、CI/CD構築 リリース、運⽤
    研究員
    DevOpsエンジニア
    アルゴリズム開発








    アルゴリズム開発
    API、バッチ開発

    View full-size slide

  11. だんだん作らなくなっていったSansan Labs (-2021)

    View full-size slide

  12. プラットフォームを作る

    View full-size slide

  13. Thinnest Viable Platform
    最低限のプラットフォーム
    考え方

    View full-size slide

  14. 実⽤最⼩限のプロトタイプを作り、
    実験してフィードバックを得る。
    MVPとTVP
    Minimum Viable Product Thinnest Viable Platform
    事業の規模やフェーズに応じた最低限の
    プラットフォームを継続的に維持していく。
    実装初期段階 継続的
    Lean Startup Team Topologies
    MVP or TVP? Why Your Internal Developer Platform Needs Both - The New Stack
    https://thenewstack.io/mvp-or-tvp-why-your-internal-developer-platform-needs-both/

    View full-size slide

  15. - モノレポで管理
    - ベストプラクティスを詰め込んだ開発テンプレートを作成
    - APIやバッチのディレクトリ構成
    - パッケージ管理
    - Dockerfile
    - etc..
    - Cookiecutter
    - プロジェクトテンプレートをCLIで作成できるpython製OSS
    プロジェクトテンプレートリポジトリ

    View full-size slide

  16. 少しだけ改善した(?)開発フロー
    アルゴリズム開発 インフラ、CI/CD構築 リリース、運⽤
    研究員
    DevOpsエンジニア
    アルゴリズム開発








    アルゴリズム開発
    API、バッチ開発
    API、バッチ開発
    API、バッチ開発

    View full-size slide

  17. Sansan Labsのアプリを開発する研究員
    - ストリームアラインドチーム
    - アプリケーション周りでデリバリー速度の改善
    に向き合う
    - 必要なインフラを簡単に⽣成できるツールを試
    したり
    DevOpsエンジニア
    - プラットフォームチーム
    - 全体を通してデリバリー速度の改善に向き合う
    - アプリケーション側の設計、実装にも関わる
    チームのインタラクション(コラボレーション)
    Stream-aligned team
    Platform team
    Collaboration
    Based on an image from the book Team Topologies by Matthew Skelton and Manuel Pais, 2019.

    View full-size slide

  18. Kubernetes (Amazon EKS) を採⽤
    - 当初はSansan Labsのデリバリーを最適化する基盤として構築
    - 顧客のスコープを広げすぎないことを意識
    アプリケーション実⾏基盤の構築

    View full-size slide

  19. 研究員にKubernetesの習得を強制したくない
    - アプリ、API、バッチを構築できるKubernetesリソースのテンプレートを作成
    - テンプレートリポジトリを使⽤
    - とにかく薄く提供する
    - 最初からCRD化しない
    - UI上でポチポチするとテンプレートを使ってPRが作成される
    認知負荷の軽減

    View full-size slide

  20. とても改善した開発フロー
    アルゴリズム開発 インフラ、CI/CD構築 リリース、運⽤
    研究員
    DevOpsエンジニア
    API、バッチ開発
    アルゴリズム開発 インフラ、CI/CD構築 リリース、運⽤
    API、バッチ開発
    アルゴリズム開発 インフラ、CI/CD構築 リリース、運⽤
    API、バッチ開発

    View full-size slide

  21. 新アプリリリース数が急増したSansan Labs

    View full-size slide

  22. Sansan Labsのアプリを開発する研究員
    - ストリームアラインドチーム
    - DevOpsエンジニアを待つことなくリリー
    スができる
    - プラットフォームを⼀番使ってくれる顧客
    になる
    DevOpsエンジニア
    - プラットフォームチーム
    - デリバリーを改善するプラットフォームの
    提供に注⼒
    チームのインタラクション(X-as-a-Service)
    Stream-aligned team
    Platform team
    XaaS
    Based on an image from the book Team Topologies by Matthew Skelton and Manuel Pais, 2019.

    View full-size slide

  23. プラットフォームが⽣き残るために

    View full-size slide

  24. - プラットフォームのユーザーが増えた
    - プラットフォームチームのメンバーが増えた
    - やりたいことが増えた
    今やるべきことは何か…
    ⼀年くらいプラットフォームを運⽤した
    負荷試験環境
    E2Eテスト基盤
    A/Bテスト
    Serverless
    MLOps ArgoCD Image Updater
    なんか動かない
    GPU使いたい
    サービスメッシュ

    View full-size slide

  25. ビジョンを作る
    ※書影利⽤許諾を受けています。
    ラディカル・プロダクト・シンキング
    - イテレーティブ(反復的)型アプローチを避ける
    - ビジョン駆動型アプローチを⾝につける

    View full-size slide

  26. プロダクト病
    “明確なビジョンと戦略がないままイテレーティブを繰り返せば、プロダクトは肥⼤化した
    り、断⽚化したり、⽅向性を失ったり、誤った数字に引っ張られたりするようになる。”
    なぜビジョンが必要なのか
    ダット, ラディカ『ラディカル・プロダクト・シンキング イノベーティブなソフトウェア・サービスを⽣み出す5つのステップ』
    (曽根原 春樹・⻑⾕川 圭訳, 曽根原 春樹監修) 翔泳社, 2022, p.56.
    ヒーロー症候群
    戦略肥⼤
    強迫性セールス障害
    数値指標依存症
    ロックイン症候群
    ピボット症候群
    ナルシシスト症候群 合併症
    症例

    View full-size slide

  27. “現在 [特定のグループ] が [望ましい結果] を望むとき、彼・彼⼥らは
    [現状の解決策] しなければならない。この状況は [現⾏解決策の⽋点]
    のため、受け⼊れられない。我々は [⽋点の克服された] 世界を夢⾒て
    いる。我々は [テクノロジー/アプローチ] を通じて、そのような世界
    を実現するつもりである。”
    ラディカル・ビジョン・ステートメント
    ダット, ラディカ『ラディカル・プロダクト・シンキング イノベーティブなソフトウェア・サービスを⽣み出す5つのステップ』
    (曽根原 春樹・⻑⾕川 圭訳, 曽根原 春樹監修) 翔泳社, 2022, p.81.

    View full-size slide

  28. 現在 Sansan R&Dの研究員 が アイデアをできるだけ早く安全にリリー
    スして⾼速で改善していくこと を望むとき、彼・彼⼥らは サービスを
    リリースするときにインフラ構築をエンジニアに依頼し、機能ごとに毎
    回性能評価の仕組みを開発 しなければならない。この状況は 研究員の
    専⾨分野ではない領域の作業待ちに伴う時間のロスや実装コストの増⼤
    のため、受け⼊れられない。我々は 研究成果を5⽇でプロダクトとして
    リリースし、評価、改善のサイクルを⾼速に回すことでビジネス価値を
    ⽣み出せる 世界を夢⾒ている。我々は 研究員の開発におけるベストプ
    ラクティスを提供する基盤の継続的改善 を通じて、そのような世界を
    実現するつもりである。
    ラディカル・ビジョン・ステートメント(v1.0.0)

    View full-size slide

  29. - ⻑くても良い。覚えることに主眼を置いていない
    - チームメンバーの全員が独⾃の⾔葉で同じビジョンを語れるようにする
    - 特定の⾏動を除外できるほど詳しいもの
    優れたビジョン
    ダット, ラディカ『ラディカル・プロダクト・シンキング イノベーティブなソフトウェア・サービスを⽣み出す5つのステップ』
    (曽根原 春樹・⻑⾕川 圭訳, 曽根原 春樹監修) 翔泳社, 2022, p82-83.

    View full-size slide

  30. トレードオフを可視化して優先度判断
    縦軸: ビジョンフィット
    横軸: サバイバル可能性

    View full-size slide

  31. 必要最低限のプラットフォーム
    TVP。フェーズに応じた最低限の機能を提供し続ける。
    プラットフォームを熱⼼に使ってくれる顧客を⾒つける
    持続するプロダクトの成功の鍵。⼤切にしよう。
    ビジョン駆動型アプローチ
    ⽅向性は合っているか、ビジョンと関係ないことに意識を向けすぎていないか。
    まとめ

    View full-size slide

  32. We’re Hiring!
    https://open.talentio.com/r/1/c/sansan/pages/76616

    View full-size slide

  33. - チームトポロジー 価値あるソフトウェアをすばやく届ける適応型組織設計
    - https://www.amazon.co.jp/dp/4820729632
    - TeamTopologies/Team-Shape-Templates: Templates for popular drawing and
    diagramming tools to represent the team types and team interaction modes in Team
    Topologies
    - https://github.com/TeamTopologies/Team-Shape-Templates
    - MVP or TVP? Why Your Internal Developer Platform Needs Both - The New Stack
    - https://thenewstack.io/mvp-or-tvp-why-your-internal-developer-platform-needs-both/
    - ラディカル・プロダクト・シンキング イノベーティブなソフトウェア・サービスを⽣み出す
    5つのステップ
    - https://www.shoeisha.co.jp/book/detail/9784798174921
    参考⽂献

    View full-size slide