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

Development and Deployment at PLAID

Development and Deployment at PLAID

Yoshiyuki Komazaki

September 13, 2018
Tweet

More Decks by Yoshiyuki Komazaki

Other Decks in Technology

Transcript

  1. 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 全体構成
  2. 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回以上 / 日 リポジトリ数 開発者数
  3. BOT 1. featureブランチで開発してPR 2. 自動Test 3. Review 4. “shipit”のラベル 5.

    developブランチに自動マージ 開発フロー Reviewer Developer
  4. BOT 1. featureブランチで開発してPR 2. 自動Test 3. Review 4. “shipit”のラベル 5.

    developブランチに自動マージ 開発フロー Reviewer Developer
  5. BOT 1. featureブランチで開発してPR 2. 自動Test 3. Review 4. “shipit”のラベル 5.

    developブランチに自動マージ 開発フロー Reviewer Developer
  6. BOT 1. featureブランチで開発してPR 2. 自動Test 3. Review 4. “shipit”のラベル 5.

    developブランチに自動マージ 開発フロー Reviewer Developer
  7. Reviewer Developer BOT 1. featureブランチで開発してPR 2. 自動Test 3. Review 4.

    “shipit”のラベル 5. developブランチに自動マージ shipit 開発フロー
  8. BOT 1. featureブランチで開発してPR 2. 自動Test 3. Review 4. “shipit”のラベル 5.

    developブランチに自動マージ 開発フロー shipit Reviewer Developer
  9. Reviewer Developer BOT 1. featureブランチで開発してPR 2. 自動Test 3. Review 4.

    “shipit”のラベル 5. developブランチに自動マージ 開発フロー shipit shipit && テストが通っている && リリース中ではない時
  10. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
  11. Spinnaker is an open source, multi-cloud continuous delivery platform for

    releasing software changes with high velocity and confidence. Spinnaker https://www.spinnaker.io
  12. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
  13. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
  14. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境でE2E Test 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ 平日毎朝8:00頃に自動で作成 リリースフロー
  15. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
  16. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
  17. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
  18. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー 自動テスト + 手動テスト テスト化ができていないものは一部手動...
  19. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
  20. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー Botが実行するコマンドは 基本的にSlackからでも手動実行可能。 (Fabricで定義されている)
  21. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
  22. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー 基本的な機能が動くか バグが出ていないか メトリクスを見て異常がないか
  23. 1. Releaseブランチ作成 2. Test & Build待ち 3. 検証環境にリリース 4. 検証環境で動作確認

    5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ BOT 検証環境 本番環境 リリースフロー 基本的な機能が動くか バグが出ていないか メトリクスを見て異常がないか 問題あればロールバック
  24. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分だけ手動確認 7. master/developにマージ リリースフロー
  25. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境でE2E Test 5. Slack経由で本番環境にリリース 6. クリティカルな部分だけ手動確認 7. master/developにマージ リリースフロー ここの自動マージが落ちると面倒なので リリース中はdevelopへのマージを止めている
  26. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境でE2E Test 5. Slack経由で本番環境にリリース 6. クリティカルな部分だけ手動確認 7. master/developにマージ リリースフロー
  27. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー
  28. BOT 検証環境 本番環境 1. Releaseブランチ作成 2. Test & Build待ち 3.

    検証環境にリリース 4. 検証環境で動作確認 5. Slack経由で本番環境にリリース 6. クリティカルな部分の動作確認 7. master/developにマージ リリースフロー 4 ~ 6以外は自動 (5.はSlackで打つだけ)