Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Development and Deployment at PLAID
Search
Yoshiyuki Komazaki
September 13, 2018
Technology
750
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Development and Deployment at PLAID
Yoshiyuki Komazaki
September 13, 2018
More Decks by Yoshiyuki Komazaki
See All by Yoshiyuki Komazaki
GKE Security and Services
komukomo
1
2k
Migrating to Microservices
komukomo
2
890
Other Decks in Technology
See All in Technology
その Valkey 使いこなしていますか?
onk
PRO
5
1.1k
Benchmarking Disaggregated Serving on vLLM + Dynamo with a Real Coding-Agent Workload
nttcom
0
170
Webの常識が通じないHTMLメールのダークモード
teamlab
PRO
0
110
アウトプット初心者、半年間のふりかえり
4o1sobblue
0
380
PagerDuty Tech Hub-鳴らすけれど、人は動かない
ezaki
0
140
転んだ話が背中を預ける理由になる / A_story_about_falling_down_gives_you_a_reason_to_watch_each_other_s_backs.pdf
pauli
3
370
DevelopersIO 2026 知識の地図を描く ─ オントロジーとは何か?
ishikawa_satoru
1
1.6k
Persisting Massive Data with Rails ~Designing for 60 billion rows, and fighting the bottlenecks~ Railsで挑む大量データ永続化 〜600億件を永続化するための設計とボトルネックとの戦い〜
occhi
0
650
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
350
ブラウザとサーバーから考えるAI時代のフロントエンド監視
shogo4131
3
900
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
370
スキマバイトという雇用形態は存在しないので、雇用期間1日のアルバイト契約を事業者とワーカーが結ぶ手続きを支えるのがタイミーなんです
akitoshiga
0
180
Featured
See All Featured
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
450
The Curious Case for Waylosing
cassininazir
1
570
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
The Spectacular Lies of Maps
axbom
PRO
1
1.1k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
560
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Discover your Explorer Soul
emna__ayadi
2
1.3k
Everyday Curiosity
cassininazir
0
350
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Automating Front-end Workflow
addyosmani
1369
210k
Transcript
PLAIDにおけるCI/CD環境 PLAID, Inc. Yoshiyuki Komazaki
Yoshiyuki Komazaki Tech Lead @ PLAID, Inc.
今日話すこと PLAIDでの開発からリリースまでの全体像 特別なことをやっているわけではないが、何かしらの参考になれば。 意外と他の開発事情って知らない? フローとか使用しているツールとか。
目次 1. 何を開発しているか 2. 開発フロー 3. リリースフロー 4. 今後の課題
目次 1. 何を開発しているか 2. 開発フロー 3. リリースフロー 4. 今後の課題
Customer Experience Platform ユーザーを理解する アクションする サイトに訪れたユーザーの体験を向上させるためのプラットフォーム
Region #ECEFF1 Batch Layer Track Cloud Load Balancing Track Compute
Engine Autoscaling Distributed Queue Cloud Pub/Sub End User Devices Redis Analyze Analyze Compute Engine Autoscaling Batch Cloud Bigtable Cloud Bigtable BigQuery Stride Compute Engine Cloud Storage Admin Admin Compute Engine Autoscaling Client Tracker.js Cloud CDN Realtime Layer or Cloud Front AWS JS/ SDK/ API Redislabs ... Stackdriver Stride 全体構成
Region #ECEFF1 Batch Layer Track Cloud Load Balancing Track Compute
Engine Autoscaling Distributed Queue Cloud Pub/Sub End User Devices Redis Analyze Analyze Compute Engine Autoscaling Batch Cloud Bigtable Cloud Bigtable BigQuery Stride Compute Engine Cloud Storage Admin Admin Compute Engine Autoscaling Client Tracker.js Cloud CDN Realtime Layer or Cloud Front AWS JS/ SDK/ API Redislabs ... Stackdriver Stride 開発体制 リリース頻度 ※今回の話に関わる範囲 + Ops用リポジトリ + ライブラリ等 : 1 : 約 30名 : 1回以上 / 日 リポジトリ数 開発者数
目次 1. 何を開発しているか 2. 開発フロー 3. リリースフロー 4. 今後の課題
Git Flow A successful Git branching model https://nvie.com/posts/a-successful-git-branching-model/
BOT 1. featureブランチで開発してPR 2. 自動Test 3. Review 4. “shipit”のラベル 5.
developブランチに自動マージ 開発フロー Reviewer Developer
BOT 1. featureブランチで開発してPR 2. 自動Test 3. Review 4. “shipit”のラベル 5.
developブランチに自動マージ 開発フロー Reviewer Developer
BOT 1. featureブランチで開発してPR 2. 自動Test 3. Review 4. “shipit”のラベル 5.
developブランチに自動マージ 開発フロー Reviewer Developer
BOT 1. featureブランチで開発してPR 2. 自動Test 3. Review 4. “shipit”のラベル 5.
developブランチに自動マージ 開発フロー Reviewer Developer
Reviewer Developer BOT 1. featureブランチで開発してPR 2. 自動Test 3. Review 4.
“shipit”のラベル 5. developブランチに自動マージ shipit 開発フロー
BOT 1. featureブランチで開発してPR 2. 自動Test 3. Review 4. “shipit”のラベル 5.
developブランチに自動マージ 開発フロー shipit Reviewer Developer
Reviewer Developer BOT 1. featureブランチで開発してPR 2. 自動Test 3. Review 4.
“shipit”のラベル 5. developブランチに自動マージ 開発フロー shipit shipit && テストが通っている && リリース中ではない時
目次 1. 何を開発しているか 2. 開発フロー 3. リリースフロー 4. 課題と今後
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
Spinnaker is an open source, multi-cloud continuous delivery platform for
releasing software changes with high velocity and confidence. Spinnaker https://www.spinnaker.io
弊社SREチームの@ikemonnが builderscon tokyo 2018で発表してきました!詳しくはブログで! Netflix発のOSS"Spinnaker"でマルチクラウドにデプロイしている話 Spinnaker https://tech.plaid.co.jp/builderscon-2018/
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境でE2E Test 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ 平日毎朝8:00頃に自動で作成 リリースフロー
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー 自動テスト + 手動テスト テスト化ができていないものは一部手動...
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー Botが実行するコマンドは 基本的にSlackからでも手動実行可能。 (Fabricで定義されている)
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー 基本的な機能が動くか バグが出ていないか メトリクスを見て異常がないか
1. Releaseブランチ作成 2. Test & Build待ち 3. 検証環境にリリース 4. 検証環境で動作確認
5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ BOT 検証環境 本番環境 リリースフロー 基本的な機能が動くか バグが出ていないか メトリクスを見て異常がないか 問題あればロールバック
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分だけ手動確認 7. master/developにマージ リリースフロー
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境でE2E Test 5. Slack経由で本番環境にリリース 6. クリティカルな部分だけ手動確認 7. master/developにマージ リリースフロー ここの自動マージが落ちると面倒なので リリース中はdevelopへのマージを止めている
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境でE2E Test 5. Slack経由で本番環境にリリース 6. クリティカルな部分だけ手動確認 7. master/developにマージ リリースフロー
リリース完了 リリース完了時に関連issue一覧をSlackに通知。 その日リリースされたものはここで大体把握。
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.
検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー 4 ~ 6以外は自動 (5.はSlackで打つだけ)
リリースは1日1回だけ? 日々のリリース終了後も、その日に入れた方が良い、または別でリリースした方がよい と判断したものはhotfixとして入ります。 関連するサーバグループ毎にリリースすることもできるようになっています。
目次 1. 何を開発しているか 2. 開発フロー 3. リリースフロー 4. 今後の課題
今後の課題 • 手動確認を減らす • レビューの時間を短縮 • テストの時間を短縮 • リリースサイクルを速める
手動確認を減らす テストしづらい部分が残っている。ServiceWorkerのテストなどなど。 今後の課題
レビューの時間短縮 PRのレビュー時、ブランチ切り替えてローカル動作確認するというのは手間。 PRを作った時点でその環境を一時的に作って動作確認できる状態だと最高。 • CircleCIの環境をそのまま? • Kubernetesでnamespaceをわけて..? 今後の課題
テスト時間短縮 現状は全テストを全PRで実行している。E2Eテストも増えてきた。 • Googleのいうテストレベル(S, M, L)のような概念でわけて必要なものを必要なタ イミングで実行? • 外部との通信が必要ないものはエミュレータ/stubを使用 今後の課題
リリースサイクルを速める 現状は基本的にはある時点のものをまるっとテストしリリースしている。 • 各コンポーネントの責任範囲、ファイルの影響範囲を明確化? • いわゆるMicroService? • とはいえ細かくしすぎたくはない • リポジトリが増えるのも大変なのでそれは避けたい
今後の課題
まとめ 今日話したこと 1. 何を開発しているか 2. 開発フロー 3. リリースフロー 4. 今後の課題
PLAIDでの開発からリリースまでの全体像
We are hiring! Blog紹介とか宣伝。いい写真 Thank you. PLAID Engineer Blog:https://tech.plaid.co.jp