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

全てのアプリケーションが“On Best Practice”な世界を実現する基盤を目指して /...

Sansan R&D
September 17, 2024

全てのアプリケーションが“On Best Practice”な世界を実現する基盤を目指して / Aiming to create a foundation for a world where all applications are “On Best Practice”

■ イベント
【日経×ココナラ×Sansan】開発者体験の未来絵図、プロダクト立ち上げ迅速化の基盤作り
https://nikkei.connpass.com/event/325769/

■ 発表者
技術本部 研究開発部 Architectグループ 加藤 慶彦

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

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

Sansan R&D

September 17, 2024
Tweet

More Decks by Sansan R&D

Other Decks in Technology

Transcript

  1. 加藤慶彦 X: @discord_tech MLOps Engineer 慶應義塾大学大学院理工学研究科開放環境科学専攻博士後期課 程単位取得退学。 新卒で不動産系IT企業に入社し、Platform Engineerとして全社 基盤のKubernetes

    clusterの開発に携わる傍ら、実験基盤、実 行基盤、運用基盤から成るMLOps基盤を構築するプロジェクト を立ち上げる。 2023年8月にSansanに入社。 現在はTakowasaチームにてアプリケーション基盤Chassisの開 発に従事。
  2. Circuit以後の開発 研究開発部Kubernetes基盤「Circuit」 6 Circuit以前の開発 Platform as a productの取り組み / Yuichi

    Kanbayashi https://speakerdeck.com/sansan_randd/platform-as-a-product-initiative-platform-engineering-at-sansan-r-and-d
  3. 結論: 初手はアプリケーション固有の対応をしつつ、自動化を進める 設計哲学 11 基盤起因の新機能 Circuitで新機能が追加される ↓ chasssictlをupdateする ↓ on-chassisなアプリケーションをupdate

    アプリケーション起因の新機能 アプリケーション側で新機能が必要になる ↓ アーキテクトor開発者が変更を追加 ↓ chassisctlをupdateする ↓ chassisctlからの生成に切り替える ↓ on-chassisなアプリケーション全体で利用可能に
  4. kubernetesリソースの自動生成 + 自動更新 解決策 12 chassisctl chassis_config.toml fixed_version = "latest"

    repository_name = "eightcard/randd_hello_chassis" namespace = "samples" [[applications]] name = "randd_hello_chassis" directory = "." service_type = "deployment" environments = ["development", "staging", "production"] env = [{ name = "TARGET", value = "Chassis" }] include_entrusted_data = false use_istio_sidecar = false port = 8080 [applications.pr] enabled = true environments = ["development", "staging", "production"] [applications.pr.used_resources] url_mode = "host" … service_account.yaml deployment.yaml service.yaml gateway.yaml vs.yaml buildコマンド
  5. Pull Request Environment (Ephemeral Environment) + Auto E2E による更新の安全性の保証 解決策

    15 PRを作成 Actions PR Env E2E Job E2EのJobを作成 E2Eテスト 結果を返す
  6. Pull Request Environment (Ephemeral Environment) + Auto E2E による更新の安全性の保証 解決策

    16 PRを作成 Actions Takowas a チーム Application Repos chassisctl Repo PRを作成し、 CIを見る
  7. 開発者が初回使うときの流れ (無い場合) リポジトリを作成する ↓ chassisctl init を実行する ↓ 自動でPRが各リポジトリに作成される (Circuitの設定のRepo、インフラ定義のRepo、chassisctlのRepo、アプリケーションのRepo)

    ↓ 各PRがApproveされたらMergeする ↓ サンプルアプリケーションが動き始めるので、自分のアプリに合わせてカスタマイズする 作ったもの「Chassis」 17 chassisctl PR PR PR
  8. 開発時の流れ コード、chassis_config.tomlを更新し、chassisctl build ↓ アプリケーションの更新のPRを作成する ↓ PR環境を確認しながら修正 ↓ CIのE2Eテストを通っていることを確認し、Reviewを始める ↓

    Mergeされるとimage更新のPRが作成されるのでリリース承認フローを回す ↓ 承認されたらMergeし、リリース 作ったもの「Chassis」 18 chassisctl yaml郡 actions郡 PR
  9. 残っている課題、ロードマップ - E2Eテストの結果のリッチ化 - Batchのシャドーテスト機能 - Metrics, Logs, Tracesの収集自動化 -

    リソースの自動設定 - LLMによるエラー解説 - カナリアリリースの自動化 - リリース承認フローの自動化 今後の課題、展望 20