>100 Views
March 01, 13
スライド概要
<最近読んだ本の紹介>
継続的デリバリー
2013-03-01
Xtone Ltd. ピザ会
Aki / @nekoruri
秋葉原生まれ大手町育ちの歌って踊れる江戸っ子インフラエンジニア。 0と1が紡ぐ「ゆるやかなつながり」に魅せられ早20年、 SNSとCGMの力で世界を幸福にするのがライフワーク。 市民、幸福は義務です。 あなたは幸福ですか?
<最近読んだ本の紹介> 継続的デリバリー 2013-03-01 Xtone Ltd. ピザ会 Aki / @nekoruri
継続的デリバリー 第1部 基礎 ソフトウェアデリバリーの問題 構成管理 継続的インテグレーション テスト戦略を実装する 第2部 デプロイメントパイプライン デプロイメントパイプラインの解剖学 ビルド・デプロイメントスクリプト コミットステージ 自動受入れテスト 非機能要件をテストする アプリケーションをデプロイ・リリースする 第3部 デリバリーエコシステム 基盤と環境を管理する データを管理する コンポーネントや依存関係を管理する 高度なバージョン管理 継続的デリバリーを管理する http://goo.gl/aLVMX
アンチパターン 1. ソフトウェアを手作業でデプロイ → デプロイは完全自動化 2. 開発終了後に疑似本番環境にデプロイ → 開発開始時にステージング環境を用意 3. 本番環境について手作業で構成管理 → バージョン管理された自動プロセス化
「サイクルタイムを短く、品質を高く」 自動化 • デプロイまでを自動化して繰り返す。 • 環境やリリースプロセスをレビューする。 • 「職人芸」を無くす。 こまめに • リリース間の差異を小さくすることでリ スクを大幅に減らす。 • フィードバックを素早く得る。
ソフトウェアデリバリーの原則 1. 2. 3. 4. 5. 6. 7. 8. 反復可能で信頼できるプロセスでリリースする すべてを自動化 すべてをバージョン管理 痛みを伴うものはこまめに早めに実施 品質を作り込む 作業完了=「リリースした」 全員がリリースプロセスに責任を持つ 継続的改善
デプロイメントパイプライン リリースまでの全てのプロセスを自動化する 開発 • Git/Subversion • rspec • CI 受け入れ 試験 • 手作業 • Cucumber? • Selenium? 性能試験 環境構築 リリース • JMeter • 試験環境 • サーバ確保 • ミドルウェア • デプロイツー ル準備 • 環境別設定 • ファイル展開 • DB更新
デプロイメントパイプライン リリースまでの全てのプロセスを自動化する 開発 • Git/Subversion • rspec • CI 受け入れ 試験 • 手作業 • Cucumber? • Selenium? 性能試験 環境構築 リリース • JMeter • 試験環境 • サーバ確保 • ミドルウェア • デプロイツー ル準備 • 環境別設定 • ファイル展開 • DB更新 コミットステージテスト •「きわめて素早く実行できるように最適化されたテスト」 •5分以内に終わることが理想的(最大でも10分) •Rspecならtagが使えるかも
デプロイメントパイプライン リリースまでの全てのプロセスを自動化する 開発 • Git/Subversion • rspec • CI 受け入れ 試験 • 手作業 • Cucumber? • Selenium? 性能試験 環境構築 リリース • JMeter • 試験環境 • サーバ確保 • ミドルウェア • デプロイツー ル準備 • 環境別設定 • ファイル展開 • DB更新 受け入れテスト •自動受け入れテスト •手動テスト(動作確認) 振る舞いテスト(Given / When / Then) アプリケーションドライバの実装 デプロイメントテスト
デプロイメントパイプライン リリースまでの全てのプロセスを自動化する 開発 • Git/Subversion • rspec • CI 受け入れ 試験 • 手作業 • Cucumber? • Selenium? キャパシティテスト •スケーラビリティテスト •長期稼働テスト •スループットテスト •負荷テスト 性能試験 環境構築 リリース • JMeter • 試験環境 • サーバ確保 • ミドルウェア • デプロイツー ル準備 • 環境別設定 • ファイル展開 • DB更新 •キャパシティテストの自動化
デプロイメントパイプライン リリースまでの全てのプロセスを自動化する 開発 • Git/Subversion • rspec • CI 受け入れ 試験 • 手作業 • Cucumber? • Selenium? 性能試験 環境構築 リリース • JMeter • 試験環境 • サーバ確保 • ミドルウェア • デプロイツー ル準備 • 環境別設定 • ファイル展開 • DB更新 インフラ整備 •OS、ミドルウェアの構成をバージョン管理 •インストールの自動化 •データを収集する(メトリクスの取得・監視) •アクセス制御(直接変更の禁止)
デプロイメントパイプライン リリースまでの全てのプロセスを自動化する 開発 • Git/Subversion • rspec • CI 受け入れ 試験 • 手作業 • Cucumber? • Selenium? 性能試験 環境構築 リリース • JMeter • 試験環境 • サーバ確保 • ミドルウェア • デプロイツー ル準備 • 環境別設定 • ファイル展開 • DB更新 リリース •デプロイメントとロールバック •カナリアリリース(一部ユーザだけへの機能公開) •継続的デプロイメント(自動で本番環境にデプロイ)
<おさらい> ソフトウェアデリバリーの原則 1. 2. 3. 4. 5. 6. 7. 8. 反復可能で信頼できるプロセスでリリースする すべてを自動化 すべてをバージョン管理 痛みを伴うものはこまめに早めに実施 品質を作り込む 作業完了=「リリースした」 全員がリリースプロセスに責任を持つ 継続的改善