Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

- 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に⾏ってきました

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

以前の開発フロー

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

プラットフォームを作る

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

実⽤最⼩限のプロトタイプを作り、 実験してフィードバックを得る。 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/

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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.

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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.

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

- チームトポロジー 価値あるソフトウェアをすばやく届ける適応型組織設計 - 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 参考⽂献

Slide 34

Slide 34 text

No content