SlideShare ist ein Scribd-Unternehmen logo
1 von 59
Downloaden Sie, um offline zu lesen
継続的デリバリー
シナジーマーケティングの場合
DevLOVE 関西 2014-05-21 継続的デリバリー (Continuous Delivery) のお話を聞いてみよう
Photo by Kay Kim (CC by 2.0)
シナジーマーケティングの人々
鈴木圭
( @suzuki6b6569 )
Yuki Teraoka
( @yuki_teraoka )
Mitoma, Ryo
( github.com/mitoma )
Kitora, Naoki
( @kitora_naoki )
だれやねん。
● だれやねん。
● そもそもどうして継続的デリバリー?
● 社内勉強会をやってみた
● ディスカッションで課題を聞いてみた
● ディスカッションで見えてきたこと
● Jenkinsによるワンクリックデプロイ
コンテンツ
Photo by Masahiro Ihara (CC by 2.0)
そもそもどうして
継続的デリバリー?
Photo by Stefan Baudy (CC by 2.0)
Photo by Kevin Dooley (CC by 2.0)
なんか良さそう!
初めてCIを知ったときの期待感に似てるかなー
Photo by Kevin Dooley (CC by 2.0)
もっと上手くやれるはず!
なんやかんや課題意識や向上心ってありますよね
Photo by Kevin Dooley (CC by 2.0)
なんか良さそう!
×
もっと上手くやりたい!
継続的デリバリー社内勉強会レポート TECHSCORE BLOG
継続的デリバリー社内勉強会 Vol.2 レポート TECHSCORE BLOG
社内勉強会をやってみた
継続的デリバリー社内勉強会レポート TECHSCORE BLOG
継続的デリバリー社内勉強会 Vol.2 レポート TECHSCORE BLOG
継続的デリバリな
課題ってありますか?
ディスカッションで課題を聞いてみた
リリース手順書が長いです!
340行あるので時間かかるし、
作業ミスのリスクもありますよね…
自動化できそうですか?
「手作業で○○を編集して・・・」
のような作業があるので難しいかも
自動化可能な手順に
変えていく必要がありますね。
Photo by Ari Helminen (CC by 2.0)
DBのスキーマ変更がある場合は?
うまく自動化できるかな?
Photo by Tim Morgan (CC by 2.0)
マイグレーションの仕組みがあると
便利ですよね。
Photo by Tim Morgan (CC by 2.0)
実装上の配慮も必要ですね。
新旧どちらのスキーマでも動くとか。
Photo by Tim Morgan (CC by 2.0)
他にも悩み中の課題もあります。
ミドルウェアのバージョンアップをしたい場合や、
特定のイベント(長時間実行するプロセスの終了)を待ちたい場合など。
Photo by Ari Helminen (CC by 2.0)
ところでデプロイ職人
みたいな人っていますよね?
Photo by Szapucki (CC by 2.0)
デプロイ職人
デプロイ手順の作成/メンテナンスする人。
他の人からすると手順の中身はブラックボックス。
デプロイ中に何かあってもその人しか対処できない。
Photo by Szapucki (CC by 2.0)
Photo by Szapucki (CC by 2.0)
リリース手順書が
ブラックボックスなんですけど。
Photo by Szapucki (CC by 2.0)
Jenkinsなどを活用して、
ワンクリックデプロイを実現できれば
・・・
Photo by Szapucki (CC by 2.0)
Jenkinsとかを使いこなして
継続的デリバリを実現するとして・・
Jenkinsの設定は
きっと複雑になるのではないかと。
この人しかJenkinsの設定が
分からないという人が出てくる?
Photo by Szapucki (CC by 2.0)
それってデプロイ職人が
CI 職人に変わるだけじゃないの?
Photo by Szapucki (CC by 2.0)
使う人が安心できないような
ブラックボックスにしないことが大切
ディスカッションで
見えてきたこと
Photo by Pink Sherbet Photography (CC by 2.0)
一つずつ継続的デリバリに
必要な前提をクリアしよう
自動化可能なリリース手順の作成。
DBのスキーマ変更を考慮した実装。
無停止リリース可能な仕組みの構築。
etc..
Photo by Tim Green (CC by 2.0)
Photo by Tim Green (CC by 2.0)
使う人が不安にならない
ブラックボックスを作ろう
安定していて信頼できるツールを使おう。
Jenkins, Capistrano, etc..
photo by Kamyar Adl (CC by 2.0)
Jenkins による
ワンクリックデプロイ
photo by Kamyar Adl (CC by 2.0)
継続的デリバリに至る道
photo by Kamyar Adl (CC by 2.0)
「面倒臭い」を集めて
解決すること
Q
photo by Colin Kinner (CC by 2.0)
リリース作業でコマンド打
つの面倒なのですが、
何とかなりませんか?
photo by Colin Kinner (CC by 2.0)
A
photo by Tim Green (CC by 2.0)
  
自動化してしまえ!
photo by Tim Green (CC by 2.0)
  
今回の前提
photo by Tim Green (CC by 2.0)
  
photo by Tim Green (CC by 2.0)
CI : Jenkins
App: Ruby on Rails
Deploy: Capistrano
利用ツール    
  
photo by Tim Green (CC by 2.0)
・開発環境
CIでテストが通るたびにデプロイ
・ステージング環境
本番前の受け入れテスト
・プロダクション環境
以下の環境にデプロイする
 数クリックでリリースできる
photo by Tim Green (CC by 2.0)
  
Jenkinsプラグイン
photo by Aidan (CC by 2.0)
  
Build Pipeline Plugin
photo by Brian Cantoni (CC by 2.0)
依存関係のあるジョブを
パイプライン形式で表示
Build Pipeline Plugin    
photo by Brian Cantoni (CC by 2.0)
 
photo by Brian Cantoni (CC by 2.0)
Build Pipeline Plugin    
パイプラインのジョブを
手動トリガに出来るのが素敵
photo by Brian Cantoni (CC by 2.0)
Build Pipeline Plugin    
  
Parameterized Trigger
Plugin
photo by Moto "Club4AG" Miwa (CC by 2.0)
Parameterized Trigger Plugin  
各ビルドにパラメータをつけるこ
とが可能
photo by Moto "Club4AG" Miwa (CC by 2.0)
依存ビルドのパラメータを引き
継ぐ機能が便利すぎる
photo by Moto "Club4AG" Miwa (CC by 2.0)
Parameterized Trigger Plugin  
 
デモ
photo by Bart (CC by 2.0)
Q
photo by Tsahi Levent-Levi (CC by 2.0)
 
Jenkinsでジョブを何個も
作成するの面倒なので
すが何とかなりません
か?
photo by Tsahi Levent-Levi (CC by 2.0)
A
photo by Tsahi Levent-Levi (CC by 2.0)
  
自動(ry
photo by Tsahi Levent-Levi (CC by 2.0)
 
デモ2
photo by Bart (CC by 2.0)
 
工夫しているところ
photo by Bart (CC by 2.0)
 
開発環境をJenkinsノードにする
○ 小規模プロジェクトごとにJenkinsマスタは不要
○ マスタに負荷をかけたくない
○ マスタの環境を汚したくない
○ コスト削減
photo by Bart (CC by 2.0)
 
環境を構築は出来るだけ楽に
ツールやスクリプトで標準的な構成を自動生成
● ローカル環境 Chef + Vagrant
● Railsアプリ ApplicationTemplate
● CD Jenkins Capistrano
photo by Bart (CC by 2.0)
Q&A
Photo by Raymond Bryson (CC by 2.0)

Weitere ähnliche Inhalte

Ähnlich wie 継続的デリバリー ~シナジーマーケティングの場合~

Towards Performant Video Recognition
Towards Performant Video RecognitionTowards Performant Video Recognition
Towards Performant Video Recognitioncvpaper. challenge
 
コロナ禍の開発勉強会~社内教育ツールの開発と実装
コロナ禍の開発勉強会~社内教育ツールの開発と実装コロナ禍の開発勉強会~社内教育ツールの開発と実装
コロナ禍の開発勉強会~社内教育ツールの開発と実装IIJ
 
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜Daiki Kawanuma
 
JenkinsとCodeBuildとCloud Buildと私
JenkinsとCodeBuildとCloud Buildと私JenkinsとCodeBuildとCloud Buildと私
JenkinsとCodeBuildとCloud Buildと私Shoji Shirotori
 
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境bitbank, Inc. Tokyo, Japan
 
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜TrinityT _
 

Ähnlich wie 継続的デリバリー ~シナジーマーケティングの場合~ (6)

Towards Performant Video Recognition
Towards Performant Video RecognitionTowards Performant Video Recognition
Towards Performant Video Recognition
 
コロナ禍の開発勉強会~社内教育ツールの開発と実装
コロナ禍の開発勉強会~社内教育ツールの開発と実装コロナ禍の開発勉強会~社内教育ツールの開発と実装
コロナ禍の開発勉強会~社内教育ツールの開発と実装
 
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
 
JenkinsとCodeBuildとCloud Buildと私
JenkinsとCodeBuildとCloud Buildと私JenkinsとCodeBuildとCloud Buildと私
JenkinsとCodeBuildとCloud Buildと私
 
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
ビットバンクでのネイティブアプリケーション開発におけるCI_CD環境
 
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
 

継続的デリバリー ~シナジーマーケティングの場合~