DevOpsって何? システムの開発組織(以降Dev) と 運用組織(以降Ops) で対立し合うのではなく、 強調(場合によっては融合)しながらビジネス目的を 達成するための考え方、組織的な文化 7 (C) Recruit Technologies Co.,Ltd. All rights reserved. Dev Ops Dev Ops
[補足解説] ダークローンチ ユーザのリクエストを複製して擬似的に処理を行う 58 (C) Recruit Technologies Co.,Ltd. All rights reserved. プロキシ 的な何か 既存機能 ダークローンチ対象 ① ② ② ③ ③ ④ ② 既存機能とダークローンチ対象の両方に リクエストを送る
[補足解説] ダークローンチ ユーザのリクエストを複製して擬似的に処理を行う 59 (C) Recruit Technologies Co.,Ltd. All rights reserved. プロキシ 的な何か 既存機能 ダークローンチ対象 ① ② ② ③ ③ ④ ③ 既存機能からのレスポンスをユーザに返す
[補足解説] ダークローンチ ユーザのリクエストを複製して擬似的に処理を行う 60 (C) Recruit Technologies Co.,Ltd. All rights reserved. プロキシ 的な何か 既存機能 ダークローンチ対象 ① ② ② ③ ③ ④ ④ ダークローンチ対象からのレスポンスを破棄する
[補足解説] ダークローンチ ユーザのリクエストを複製して擬似的に処理を行う 61 (C) Recruit Technologies Co.,Ltd. All rights reserved. プロキシ 的な何か 既存機能 ダークローンチ対象 ① ② ② ③ ③ ④ 新機能が他の機能の挙動に悪影響を与えていないか、 既存機能との性能差異などを確認する
CIを支える技術 CIを支える様々なツールがある(主観による雑な分類です) 120 (C) Recruit Technologies Co.,Ltd. All rights reserved. CIパイプラインツール ビルドの支援ツール(パッケージ管理ツール含む) テストの支援ツール GNU make go test python -m unittest
CIを支える技術 CIを支える様々なツールがある(主観による雑な分類です) 121 (C) Recruit Technologies Co.,Ltd. All rights reserved. CIパイプラインツール ビルドの支援ツール(パッケージ管理ツール含む) テストの支援ツール GNU make go test python -m unittest ビルドとテストの全体フローを自動化する
CIを支える技術 CIを支える様々なツールがある(主観による雑な分類です) 122 (C) Recruit Technologies Co.,Ltd. All rights reserved. CIパイプラインツール ビルドの支援ツール(パッケージ管理ツール含む) テストの支援ツール GNU make go test python -m unittest ビルドとテストの全体フローを自動化する (主にアプリケーションの)ビルドフローを自動化する
CIを支える技術 CIを支える様々なツールがある(主観による雑な分類です) 123 (C) Recruit Technologies Co.,Ltd. All rights reserved. CIパイプラインツール ビルドの支援ツール(パッケージ管理ツール含む) テストの支援ツール GNU make go test python -m unittest ビルドとテストの全体フローを自動化する (主にアプリケーションの)ビルドフローを自動化する テストフローを自動化する
CIを支える技術 CIを支える様々なツールがある(主観による雑な分類です) 124 (C) Recruit Technologies Co.,Ltd. All rights reserved. CIパイプラインツール ビルドの支援ツール(パッケージ管理ツール含む) テストの支援ツール GNU make go test python -m unittest ビルドとテストの全体フローを自動化する (主にアプリケーションの)ビルドフローを自動化する テストフローを自動化する アプリケーションロジック記述以外から 属人性を可能な限り排除するのが目的
テストの実行時間が長い • テストサイズの概念を使って効率的にテストをする • テストがこける原因の8割くらいはしょうもないことが原因 • Lintやネットワーク通信の発生しないテストで洗い出せる 131 (C) Recruit Technologies Co.,Ltd. All rights reserved. Feature Small Medium Large Network access No localhost only Yes Database No Yes Yes File system access No Yes Yes Use external systems No Discouraged Yes Multiple threads No Yes Yes Sleep statements No Yes Yes System properties No Yes Yes Time limit (seconds) 60 300 900+ https://testing.googleblog.com/2010/12/test-sizes.html
テストサイズの概念に合わせたCIパイプライン実装 132 (C) Recruit Technologies Co.,Ltd. All rights reserved. テスト 実行の トリガー medium テスト1 medium テスト2 medium テスト3 medium テスト 結果通知 イメージ のビルド & small テスト イメージ のpush medium 依存 モジュール build 8割は smallテスト で落とす 残りのうちの 8割はmediumテスト で落とす
III. 設定 設定をアプリケーションコードから厳密に分離できるよう にする • 単一のコードベースから複数の環境(開発/ステージング/本番)に デプロイできるようにするため 154 (C) Recruit Technologies Co.,Ltd. All rights reserved. 環境変数で設定を読み込み (環境変数の投入が別途コード化されているとより良い) 設定ファイルを環境ごとに切り替え (コマンドラインオプションで切り替えられるように作る) 設定ファイルをデプロイ時にサーバ上で書き換え 超えられない壁 Good No Good