SlideShare a Scribd company logo
デプロイメントパイプライン
    ってなに?
 ~Jenkinsおじさんと遊んでみた編~
前回のおさらい
継デリってなに
• 継続的に価値を提供し続ける
 テスト自動化だけじゃダメ

 デプロイコマンドだけでもダメ

 リリースプロセスの自動化までやろう

 デプロイメントパイプライン
継デリってなに
• 継続的に価値を提供し続ける
 テスト自動化だけじゃダメ

 デプロイコマンドだけでもダメ

 リリースプロセスの自動化までやろう

 デプロイメントパイプライン
今回はでぷぱいの話をします
コミットステージ
  コンパイル
  単体テスト
  コード解析

               前回からの引用
自動受入れテストステージ
自動受け入れテスト




  手動テストステージ
  ユーザ受け入れテスト
  探索的テスト




  本番リリース
じっさいには
コミットのたびに実行される
             コンパイル
             単体テスト
             コード解析
                               こんな感じが
             実行に
             比較的時間のかかるもの
                               ありそう
             自動受け入れテスト




手動テスト          評価環境リリース      キャパテスト
ユーザ受け入れテスト     いわゆるステージング    負荷テスト
探索的テスト                       長期稼動テスト




               本番リリース
えっ…大変そう…。
実際そこそこ大変です。
もっともありがちな
以下のステージを見てみましょう
コミットのたびに実行される
コンパイル
単体テスト
コード解析


実行に
比較的時間のかかるもの
自動受け入れテスト


評価環境リリース
いわゆるステージング



本番リリース
コミットステージ
 コミットのたびに実行される
 コンパイル
 単体テスト
 コード解析



コミットのたびに実行される
パイプラインの入り口ステージをコミットステージと呼びます

•主に開発者テストの領域
•コミット前にローカルでも実施しましょう
•バンバン叩かれるしバンバン動くステージ
•ここが遅いとうんざり具合半端ない
•長くても数分以内に終了するようにしましょう
自動受け入れテストステージ
実行に
比較的時間のかかるもの
自動受け入れテスト




実行に比較的時間がかかるものはステージを分けます
受け入れテストは比較的時間がかかるケースが多いので
ステージを分けて作られることが多いようです

•顧客テストとしての色が強くなる
•とはいえリグレッションテスト色も強い
•CIサーバ上で動かす場合もあれば
•専用サーバにデプロイしてから実行されることも
•ここを突破できるビルドは多分リリースできる
ステージングリリース
評価環境リリース
いわゆるステージング




擬似本番環境へのリリース
人間による探索的テストなんかをやったりします。

•顧客テストの領域
•最終関門
•専用サーバにデプロイしてから実行されることがほとんど
•ここを突破すればさぁリリース
本番リリース
本番リリース




お疲れ様でした。
飲み行きましょう、飲みに。
さて、でぷぱいを作る上で
いくつか気をつけることがあります。
ビルドは1回!
•   コミットステージで1回だけ
•   受け入れテストや
•   本番リリースも
•   最初に作ったバイナリを持ちまわる
なんで?
1. 都度ビルドは時間がかかる
2. 問題が起きた時の切り分けが楽
  –   バイナリに差異がなければ
  –   問題は設定のほう
3. デプロイが楽


あれ、でも設定ファイルの切り替えは?
• アプリ内には設定へのポインタだけを含め
  るようにする
• 環境変数とか
• 出来れば設定は別で管理できるといい
 –   往々にしてアプリと設定は変化するスピード
     が違うので
• Mavenのprofileの仕組みはこの方針に
  合ってなかったりする
 –   Classpath経由で設定ファイル食わせるとか、
     やり方はいろいろあります
ビルドとデプロイは分ける
• ビルド(自動テスト)スクリプトとデプロイ
  用スクリプトは分ける
• あるいは単独で実行できるようにする
なんで?
1. 時間がかk(ry
2. 「ビルドは1回」に反する
3. 前述のでぷぱいの図より
 –   場合に応じていろんな環境にデプロイする
 –   でぷぱいの保守拡張が
 –   すごく楽になる。
ビルドは1回
ビルドとデプロイは分ける

を実施すると…
•動くと保証されたバイナリを
•すばやく
•いろんな環境に
•デプロイ出来るようになります
という感じのものを
Jenkinsおじさんで遊びながら作ってみました
※デモ※
うまくでぷぱいが実装できると
• どのコミットがどのビルドに紐付いてて

• どのビルドがパイプラインをどこまでク
 リアしていて

• 必要な関門をクリアしたビルドなら

• 1クリックで好きな環境にデプロイできる

• 本番リリースはそのうちの1つでしかない
おわり。

More Related Content

PDF
大規模負荷テストの負荷かけ手法とトラブルシュート 〜JMeterとうまく付き合う方法〜
PPTX
グラフ構造のデータモデルをPower BIで可視化してみた
PDF
Apache Arrow - データ処理ツールの次世代プラットフォーム
PDF
Python 3.9からの新定番zoneinfoを使いこなそう
PDF
知っているようで知らないPAMのお話
PDF
とある診断員と色々厄介な脆弱性達
PDF
ドメイン駆動設計 本格入門
PDF
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
大規模負荷テストの負荷かけ手法とトラブルシュート 〜JMeterとうまく付き合う方法〜
グラフ構造のデータモデルをPower BIで可視化してみた
Apache Arrow - データ処理ツールの次世代プラットフォーム
Python 3.9からの新定番zoneinfoを使いこなそう
知っているようで知らないPAMのお話
とある診断員と色々厄介な脆弱性達
ドメイン駆動設計 本格入門
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで

What's hot (20)

PPTX
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
PDF
AWS Black Belt Techシリーズ Amazon CloudSearch
PDF
XunitとMoq 公開用
PDF
「情報」を「書く」ということ(仮) #RedmineJapan
PPTX
UTアンチパターン
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
PDF
AWS CURのデータを安く楽に可視化して共有したい
PDF
Webアプリを並行開発する際のマイグレーション戦略
PDF
今日からできる!簡単 .NET 高速化 Tips
PPTX
GraphQLのsubscriptionで出来ること
PDF
PlaySQLAlchemy: SQLAlchemy入門
PDF
オブジェクト指向の設計と実装の学び方のコツ
PPTX
Redisの特徴と活用方法について
PDF
30分でわかるマイクロサービスアーキテクチャ 第2版
PDF
Test Yourself - テストを書くと何がどう変わるか
PDF
PostgreSQLアンチパターン
PDF
20230105_TITECH_lecture_ishizaki_public.pdf
PDF
オブジェクト指向エクササイズのススメ
PDF
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
PDF
文字コードに起因する脆弱性とその対策(増補版)
フリーでできるセキュリティWeb編(SQLMあpを楽しもう)
AWS Black Belt Techシリーズ Amazon CloudSearch
XunitとMoq 公開用
「情報」を「書く」ということ(仮) #RedmineJapan
UTアンチパターン
コンテナ未経験新人が学ぶコンテナ技術入門
AWS CURのデータを安く楽に可視化して共有したい
Webアプリを並行開発する際のマイグレーション戦略
今日からできる!簡単 .NET 高速化 Tips
GraphQLのsubscriptionで出来ること
PlaySQLAlchemy: SQLAlchemy入門
オブジェクト指向の設計と実装の学び方のコツ
Redisの特徴と活用方法について
30分でわかるマイクロサービスアーキテクチャ 第2版
Test Yourself - テストを書くと何がどう変わるか
PostgreSQLアンチパターン
20230105_TITECH_lecture_ishizaki_public.pdf
オブジェクト指向エクササイズのススメ
ホットペッパービューティーにおけるモバイルアプリ向けAPIのBFF/Backend分割
文字コードに起因する脆弱性とその対策(増補版)
Ad

Similar to デプロイメントパイプラインって何? (20)

PDF
ワンクリックデプロイ101 #ocdeploy
PDF
はてなにおける継続的デプロイメントの現状と Docker の導入
PDF
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
PDF
継続的デリバリー読書会 第 7 章 コミットステージ
PDF
Trac Plugin Developement with Jenkins
PDF
20121019 jenkins勉強会lt資料
PDF
継続的デリバリー読書会資料 #1
PDF
第2回関西ソーシャルゲーム勉強会
PDF
作る人から作りながら運用する人になっていく
PPTX
Cibc lecture imagire
KEY
継続的インテグレーションとテストの話
PDF
ビルドプロセスとCI #STAC2014
PDF
はこだてIKA 第4回勉強会 単体テスト
PDF
第4回勉強会 単体テストのすすめ
PDF
「継続的デリバリー」読書会 第3章 継続的デリバリー
PPTX
Continuous delivery chapter13
PDF
Jenkinsで始める継続的デリバリーと実践の道程
PDF
ぼくのかんがえた iOSテスト戦略
PPTX
テストしなイカ? Seleniumで自動ブラウザテスト
PPTX
Jenkinsを使おうよ
ワンクリックデプロイ101 #ocdeploy
はてなにおける継続的デプロイメントの現状と Docker の導入
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
継続的デリバリー読書会 第 7 章 コミットステージ
Trac Plugin Developement with Jenkins
20121019 jenkins勉強会lt資料
継続的デリバリー読書会資料 #1
第2回関西ソーシャルゲーム勉強会
作る人から作りながら運用する人になっていく
Cibc lecture imagire
継続的インテグレーションとテストの話
ビルドプロセスとCI #STAC2014
はこだてIKA 第4回勉強会 単体テスト
第4回勉強会 単体テストのすすめ
「継続的デリバリー」読書会 第3章 継続的デリバリー
Continuous delivery chapter13
Jenkinsで始める継続的デリバリーと実践の道程
ぼくのかんがえた iOSテスト戦略
テストしなイカ? Seleniumで自動ブラウザテスト
Jenkinsを使おうよ
Ad

More from ke-m kamekoopa (16)

PDF
Kvwatcher
PDF
PyKon JP 2014
PDF
Scala.js
PDF
SQLアンチパターン - ナイーブツリー
PDF
SQLアンチパターン - ジェイウォーク
PDF
設計してますか?
PDF
Interlli jとplayとjavaとscala
PDF
関数型もモナドも分からなくてもScalaと言う言語は便利らしい
PDF
デプロイツールFabric
PDF
Playで作るwebsocketサーバ
PDF
ぎっとの「ぎ」
PDF
# Rabbitサンプル
PDF
継続的にデリバリーって何?
PDF
Play frameworkをエヴァンジェる
PDF
Kvwatcher
PyKon JP 2014
Scala.js
SQLアンチパターン - ナイーブツリー
SQLアンチパターン - ジェイウォーク
設計してますか?
Interlli jとplayとjavaとscala
関数型もモナドも分からなくてもScalaと言う言語は便利らしい
デプロイツールFabric
Playで作るwebsocketサーバ
ぎっとの「ぎ」
# Rabbitサンプル
継続的にデリバリーって何?
Play frameworkをエヴァンジェる

デプロイメントパイプラインって何?