継続的デリバリーと読み解く Web 開発あるあるとその対策
-
Upload
tetsuo-yamabe -
Category
Technology
-
view
3.275 -
download
0
description
Transcript of 継続的デリバリーと読み解く Web 開発あるあるとその対策
![Page 1: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/1.jpg)
継続的デリバリーと読み解く Web 開発あるあるとその対策
山邉 哲生
![Page 2: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/2.jpg)
某外資系携帯メーカーの研究所 ↓
解散になったので大学に出戻り ↓
フィンランドで1年 ↓
渋谷で Web エンジニア(今ココ)
![Page 3: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/3.jpg)
Web 開発の現場で起きている問題 と
カイゼンの取り組み
![Page 4: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/4.jpg)
継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化 (アスキー・メディアワークス)
![Page 5: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/5.jpg)
いつまで手動で デプロイしているんですか?
![Page 6: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/6.jpg)
2年前の話
![Page 7: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/7.jpg)
とあるサービス開発現場
![Page 8: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/8.jpg)
Apache Tomcat
Struts / Java MySQL
![Page 9: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/9.jpg)
開発用サーバー (dev)個人の開発環境 (local)
SVN リポジトリ
チェックアウト
開発&確認
コミット
アップデート
ビルド&確認
![Page 10: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/10.jpg)
開発用サーバー (dev)
SVN リポジトリ
チェックアウト
ビルド&デプロイ (rsync)
本番用サーバー群 (live)
リリース
確認
![Page 11: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/11.jpg)
何か問題でも?
![Page 12: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/12.jpg)
ありすぎました
![Page 13: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/13.jpg)
1. 君と僕の開発環境は違う
![Page 14: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/14.jpg)
開発用サーバー個人の開発環境
SVN リポジトリ
チェックアウト
開発&確認
コミット
アップデート
ビルド&確認
Wiki に書かれた不完全な手順 誰もがはまるインストールエラー 構築するたびに変わるバージョン
![Page 15: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/15.jpg)
『僕の環境なら動くんですけど』
© 地獄のミサワ (http://jigokuno.com/)
![Page 16: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/16.jpg)
『僕の環境では動きません』
© 地獄のミサワ (http://jigokuno.com/)
![Page 17: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/17.jpg)
君と僕の開発環境は違うし 開発用サーバーも違うし
なんなら本番だって違うかもしれない
![Page 18: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/18.jpg)
止まらない不信感 終わらないデバッグ
![Page 19: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/19.jpg)
あるプロジェクトで、本番環境へのデプロイメントが謎の失敗を起こすことがあった。デプロイメント用のスクリプトがハングしたのだ。原因を追跡した結果わかったのは、運用サーバーのログインシェルが sh に設定されているのに対してステージングサーバーでは bash になっているということだった …(中略)… 本当に微妙な違いを見つけるのは、これよりもずっと難しいことだ。総合的な構成管理は必須である。
コラム『構成管理がまずいとリリース当日にデバッグ作業をするはめになる』 (p351)
( ゚∀゚)・∵.グハッ!!
![Page 20: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/20.jpg)
よくあることだが、開発者自身の作業端末はおろか開発チームの継続的インテグレーション環境でさえも職人芸になってしまっており、長期間にわたって粗雑な管理が続けられている。 これらの環境は、アプリケーションが実際に動作する環境と関連があるとはとても言えない状態だ。 非効率の根源にもなり得る。
11.4.1 サーバーのプロビジョニング (p349)
( ゚∀゚)・∵.グハッ!!
![Page 21: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/21.jpg)
『構成管理』 『プロビジョニング』
![Page 22: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/22.jpg)
2. 気まぐれなテスト
![Page 23: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/23.jpg)
開発用サーバー (dev)個人の開発環境 (local)
SVN リポジトリ
チェックアウト
開発&確認
コミット
アップデート
ビルド&確認
勘と経験による打鍵テスト 既存機能を破壊する新機能
IE/Chrome/FF/iOS/Android … という多様な 機種をカバーする限界
trunk に混入し続ける動作しないコード
![Page 24: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/24.jpg)
開発用サーバー (dev)
SVN リポジトリ
チェックアウト
ビルド&デプロイ (rsync)
本番用サーバー群 (live)
リリース
確認
リリースしてから気づいてバージョンを 戻して再デプロイ
![Page 25: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/25.jpg)
機能が増える度に低下する サービス品質
![Page 26: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/26.jpg)
機能が増える度に低下する コード品質
≒ 怖くてできないリファクタリング
![Page 27: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/27.jpg)
明確でない受け入れ条件 (機能・品質)
![Page 28: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/28.jpg)
『継続的に実行されるテスト』 『既存の振る舞いを保証する』
『不純物の混入を避けるプロセス』 『受け入れ条件』
![Page 29: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/29.jpg)
3. オレオレデプロイ
![Page 30: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/30.jpg)
開発用サーバー (dev)
SVN リポジトリ
チェックアウト
ビルド&デプロイ (rsync)
本番用サーバー群 (live)
リリース
確認
対象サーバーに入って rsync -> ビルド -> AP 再起動を行う独自スクリプト
似たような名前の様々なスクリプトが存在 (html_deploy.sh, app_deploy.sh, template_deploy.sh …)
![Page 31: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/31.jpg)
作った人しかわからない 亜種スクリプトが量産される (e.g., html_deloy_bk_20140616.sh)
![Page 32: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/32.jpg)
エラー検知が甘かったり rsync が同期しきれて
いなかったりする
![Page 33: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/33.jpg)
各サービス・各サブシステムの デプロイがオレオレすぎてつらい
![Page 34: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/34.jpg)
『手順どこでしたっけ?』
![Page 35: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/35.jpg)
そこで取り組んでみたこと
![Page 36: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/36.jpg)
個々人が、他者に影響されない 本番環境と同じ構成の開発環境を持つ
![Page 37: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/37.jpg)
個々人が、他者に影響されない 本番環境と同じ構成の開発環境を持つ
![Page 38: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/38.jpg)
開発用サーバー (dev)個人の開発環境 (local)
Web
AP DB
Web
AP
Web
APWeb/AP の動作環境を
揃えるのが大変
![Page 39: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/39.jpg)
開発用サーバー (dev)個人のPC
Web
AP
DB
リモートログイン
何か障害や大きな負荷があると開発できなくなる
DB 共有するとスキーマの変更やテストがしづらい
![Page 40: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/40.jpg)
開発用サーバー (dev)個人のPCWeb
AP
DB
Web
AP
DB
仮想環境
リポジトリ (git)
![Page 41: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/41.jpg)
環境設定を手作業でやっているせいで個々の環境が微妙に異なってしまい、それが原因で問題が発生するということについてはすでに議論してきた。仮想化技術を使えば、本章で紹介してきたテクニック (サーバーや環境のプロビジョニングの自動化)の恩恵をさらに膨らませることができる。
11.7 仮想化 (p364)
![Page 42: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/42.jpg)
http://www.vagrantup.com/
![Page 43: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/43.jpg)
Vagrant
• VirtualBox や VMWare といった仮想化技術を開発用途に使いやすくするためのツール
![Page 44: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/44.jpg)
vagrant init
![Page 45: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/45.jpg)
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "chef/centos-6.5"
config.vm.network :private_network, ip: "192.168.33.10"
end
![Page 46: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/46.jpg)
vagrant up/halt
![Page 47: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/47.jpg)
vagrant destroy
![Page 48: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/48.jpg)
おかしくなったら すぐ壊してやり直せる
![Page 49: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/49.jpg)
個々人が、他者に影響されない 本番環境と同じ構成の開発環境を持つ
![Page 50: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/50.jpg)
『構成管理』 『プロビジョニング』
![Page 51: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/51.jpg)
http://www.getchef.com/chef/ | http://www.ansible.com/home
![Page 52: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/52.jpg)
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "chef/centos-6.5"
config.vm.network :private_network, ip: "192.168.33.10"
config.vm.provision :ansible do |ansible|
ansible.playbook = "./roles/web/site.yml"
ansible.inventory_path = "./roles/web/hosts.local"
ansible.limit = 'all'
end
end
![Page 53: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/53.jpg)
vagrant provision
![Page 54: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/54.jpg)
• Ruby の DSL を利用
• opscode に登録された第三者のrecipe を再利用できる
• 結構タイトに構造化されている
Chef
![Page 55: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/55.jpg)
• YAML でデータをいじるので Python を意識しないで良い
• ほぼ全部入でクライアントレス
• 柔軟なディレクトリ構造
Ansible
![Page 56: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/56.jpg)
一元化された手順で 『自動的に』 環境構築する
![Page 57: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/57.jpg)
ローカルで仮想マシンを立てて 何度もプロビジョニングして 最後まで通るようになったら
リポジトリに push する
![Page 58: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/58.jpg)
環境のコーディング
![Page 59: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/59.jpg)
Code as Infrastructure
![Page 60: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/60.jpg)
http://serverspec.org/
![Page 61: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/61.jpg)
Serverspec
• プロビジョニングコードをテストするためのツール
![Page 62: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/62.jpg)
![Page 63: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/63.jpg)
開発から本番まで一気通貫で 仮想マシンを活用した開発を
行うための試み
![Page 64: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/64.jpg)
http://www.docker.com/
![Page 65: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/65.jpg)
Docker• コンテナ型仮想化による軽量な仮想環境の提供
• 設計思想として1コンテナ1サービス
• 状態を保持しない ”使い捨て” イメージ (Immutable Infrastructure)
![Page 66: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/66.jpg)
![Page 67: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/67.jpg)
![Page 68: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/68.jpg)
![Page 69: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/69.jpg)
隔離 検査 破棄
![Page 70: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/70.jpg)
再生成
![Page 71: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/71.jpg)
これは、我々の知る限りで最も強力なリリース管理テクニックである。本番環境としてまったく同じ環境を2組用意するという考え方で、それぞれをブルーおよびグリーンと呼ぶ。
10.4.3 ブルーグリーン・デプロイメント (p319)
![Page 72: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/72.jpg)
![Page 73: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/73.jpg)
(キャッシュ目的とはいえ) ミドルやライブラリを構造化して
管理している Chef や Ansible とは 対象的にコマンドの羅列に なっている点が興味深い
![Page 74: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/74.jpg)
定式化されたデリバリーフローを 定義する
![Page 75: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/75.jpg)
trunk/master ブランチを守る
![Page 76: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/76.jpg)
A successful Git branching model http://nvie.com/posts/a-successful-git-
branching-model/
x
GitLab x
コードレビュー
![Page 77: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/77.jpg)
http://nvie.com/posts/a-successful-git-branching-model/
![Page 78: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/78.jpg)
https://www.gitlab.com/
![Page 79: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/79.jpg)
テスト・デプロイ自動化
![Page 80: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/80.jpg)
Jenkins• 継続的インテグレーションを行うためのツール
• リモートマシン上でのテストを駆動したりメトリクスを可視化したりいろいろできる
![Page 81: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/81.jpg)
![Page 82: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/82.jpg)
Capistrano• デプロイ自動化のためのツール
• デプロイ対象のサーバーとそのロール、処理内容などを記述
• 過去履歴を保持してロールバックを行うこともできる
![Page 83: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/83.jpg)
OS/MW => Chef/Ansible アプリ => Capistrano
![Page 84: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/84.jpg)
http://capistranorb.com/
![Page 85: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/85.jpg)
誰でも統一された手段でデプロイを 実行できる
![Page 86: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/86.jpg)
誰でも安易にデプロイを 実行して既存環境を変更できてしまう
![Page 87: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/87.jpg)
まだまだお話したいこと たくさんありますが
![Page 88: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/88.jpg)
続きは Web で
![Page 89: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/89.jpg)
たとえば 『アジャイル開発手法 (スクラム、
XP) の導入事例』 http://recruit.gmo.jp/engineer/jisedai/blog/20140509_agile/
![Page 90: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/90.jpg)
まとめ• Web 開発の現場で活用されている技術についてご紹介しました
• Web サービスは作って終わりではなく、リリースしてからの開発・運用プロセスをいかに効率的・効果的に回すかが重要 (DevOps)
• 継続的デリバリーに興味を持った方は、ぜひアジャイル開発についても調べてみてください
![Page 91: 継続的デリバリーと読み解く Web 開発あるあるとその対策](https://reader034.fdocuments.net/reader034/viewer/2022052315/5561516bd8b42aa20d8b4f06/html5/thumbnails/91.jpg)
ご清聴ありがとうございました