Enviar búsqueda
Cargar
Continuous delivery 6
•
Descargar como PPTX, PDF
•
3 recomendaciones
•
699 vistas
S
ShinyaOzawa
Seguir
Vista de diapositivas
Denunciar
Compartir
Vista de diapositivas
Denunciar
Compartir
1 de 37
Descargar ahora
Recomendados
ウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニング
Yasuhiro Onishi
Webアプリケーション負荷試験実践入門
Webアプリケーション負荷試験実践入門
樽八 仲川
恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡
Aya Komuro
Performance and Scalability of Web Service
Performance and Scalability of Web Service
Shinji Tanaka
HerokuでJava7 #herokujp #waza
HerokuでJava7 #herokujp #waza
Yusuke Yamamoto
Mackerelによる 簡単サーバー管理入門と発展形
Mackerelによる 簡単サーバー管理入門と発展形
Shinji Tanaka
Zabbix による ms sql監視 ~データベースモニタリング~ odbc
Zabbix による ms sql監視 ~データベースモニタリング~ odbc
真乙 九龍
KUSANAGIユーザグループ東京 第1回勉強会 資料
KUSANAGIユーザグループ東京 第1回勉強会 資料
Sumito Tsukada
Recomendados
ウェブアプリケーションのパフォーマンスチューニング
ウェブアプリケーションのパフォーマンスチューニング
Yasuhiro Onishi
Webアプリケーション負荷試験実践入門
Webアプリケーション負荷試験実践入門
樽八 仲川
恐るべきApache, Web勉強会@福岡
恐るべきApache, Web勉強会@福岡
Aya Komuro
Performance and Scalability of Web Service
Performance and Scalability of Web Service
Shinji Tanaka
HerokuでJava7 #herokujp #waza
HerokuでJava7 #herokujp #waza
Yusuke Yamamoto
Mackerelによる 簡単サーバー管理入門と発展形
Mackerelによる 簡単サーバー管理入門と発展形
Shinji Tanaka
Zabbix による ms sql監視 ~データベースモニタリング~ odbc
Zabbix による ms sql監視 ~データベースモニタリング~ odbc
真乙 九龍
KUSANAGIユーザグループ東京 第1回勉強会 資料
KUSANAGIユーザグループ東京 第1回勉強会 資料
Sumito Tsukada
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Masahiro Nagano
Devlove mackerel
Devlove mackerel
Daisuke Kasuya
Mavenへのはじめの一歩
Mavenへのはじめの一歩
祐理 大野
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
Akihiro Kuwano
Backlogでの Perlのつかいかた
Backlogでの Perlのつかいかた
Ryuzo Yamamoto
Zabbixの分散構築~ConoHa VPSでのzabbix server構築~
Zabbixの分散構築~ConoHa VPSでのzabbix server構築~
真乙 九龍
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
Webアプリケーションの パフォーマンス向上のコツ 概要編
Webアプリケーションの パフォーマンス向上のコツ 概要編
Masahiro Nagano
PHP&NewSQLで考える次世代アプリケーション
PHP&NewSQLで考える次世代アプリケーション
Yuuki Takezawa
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
Yusuke Ando
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
Yuuki Namikawa
運用に効く!JVMオプション三選
運用に効く!JVMオプション三選
Kazuhiro Oinuma
【 Zabbix 2.0 】zabbix 2.0による簡単 MySQL 監視 #Zabbix
【 Zabbix 2.0 】zabbix 2.0による簡単 MySQL 監視 #Zabbix
真乙 九龍
さくらのクラウドフォーメーション with Chef [XEgg session]
さくらのクラウドフォーメーション with Chef [XEgg session]
Yukihiko SAWANOBORI
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
Hiraku Komuro
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
真乙 九龍
ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話
Taiga Takahari
Cm re growth-reinvent-app304-kaji
Cm re growth-reinvent-app304-kaji
Hiroyuki Kaji
Gearpump, akka based Distributed Reactive Realtime Engine
Gearpump, akka based Distributed Reactive Realtime Engine
Sotaro Kimura
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
さくらインターネット株式会社
Ctdlgt
Ctdlgt
vanphuc05
проект №39 роль гос ва в сми
проект №39 роль гос ва в сми
Denis Alekseev
Más contenido relacionado
La actualidad más candente
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Masahiro Nagano
Devlove mackerel
Devlove mackerel
Daisuke Kasuya
Mavenへのはじめの一歩
Mavenへのはじめの一歩
祐理 大野
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
Akihiro Kuwano
Backlogでの Perlのつかいかた
Backlogでの Perlのつかいかた
Ryuzo Yamamoto
Zabbixの分散構築~ConoHa VPSでのzabbix server構築~
Zabbixの分散構築~ConoHa VPSでのzabbix server構築~
真乙 九龍
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
JustSystems Corporation
Webアプリケーションの パフォーマンス向上のコツ 概要編
Webアプリケーションの パフォーマンス向上のコツ 概要編
Masahiro Nagano
PHP&NewSQLで考える次世代アプリケーション
PHP&NewSQLで考える次世代アプリケーション
Yuuki Takezawa
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
Yusuke Ando
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
Yuuki Namikawa
運用に効く!JVMオプション三選
運用に効く!JVMオプション三選
Kazuhiro Oinuma
【 Zabbix 2.0 】zabbix 2.0による簡単 MySQL 監視 #Zabbix
【 Zabbix 2.0 】zabbix 2.0による簡単 MySQL 監視 #Zabbix
真乙 九龍
さくらのクラウドフォーメーション with Chef [XEgg session]
さくらのクラウドフォーメーション with Chef [XEgg session]
Yukihiko SAWANOBORI
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
Hiraku Komuro
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
真乙 九龍
ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話
Taiga Takahari
Cm re growth-reinvent-app304-kaji
Cm re growth-reinvent-app304-kaji
Hiroyuki Kaji
Gearpump, akka based Distributed Reactive Realtime Engine
Gearpump, akka based Distributed Reactive Realtime Engine
Sotaro Kimura
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
さくらインターネット株式会社
La actualidad más candente
(20)
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Devlove mackerel
Devlove mackerel
Mavenへのはじめの一歩
Mavenへのはじめの一歩
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
NVMFS 使ってみたとか 言っちゃって マジカジュアルな奴
Backlogでの Perlのつかいかた
Backlogでの Perlのつかいかた
Zabbixの分散構築~ConoHa VPSでのzabbix server構築~
Zabbixの分散構築~ConoHa VPSでのzabbix server構築~
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Spring Boot の Web アプリケーションを Docker に載せて AWS ECS で動かしている話
Webアプリケーションの パフォーマンス向上のコツ 概要編
Webアプリケーションの パフォーマンス向上のコツ 概要編
PHP&NewSQLで考える次世代アプリケーション
PHP&NewSQLで考える次世代アプリケーション
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
運用に効く!JVMオプション三選
運用に効く!JVMオプション三選
【 Zabbix 2.0 】zabbix 2.0による簡単 MySQL 監視 #Zabbix
【 Zabbix 2.0 】zabbix 2.0による簡単 MySQL 監視 #Zabbix
さくらのクラウドフォーメーション with Chef [XEgg session]
さくらのクラウドフォーメーション with Chef [XEgg session]
LambdaとMobileの美味しいかもしれない関係
LambdaとMobileの美味しいかもしれない関係
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
Zabbixによるオートスケーリングクラスタ監視とオペレーション自動化
ASP.NETからASP.NET Coreに移行した話
ASP.NETからASP.NET Coreに移行した話
Cm re growth-reinvent-app304-kaji
Cm re growth-reinvent-app304-kaji
Gearpump, akka based Distributed Reactive Realtime Engine
Gearpump, akka based Distributed Reactive Realtime Engine
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Destacado
Ctdlgt
Ctdlgt
vanphuc05
проект №39 роль гос ва в сми
проект №39 роль гос ва в сми
Denis Alekseev
39 1
39 1
Denis Alekseev
Ocean Floor Features: Ocean Trenches and Volcanic Arcs
Ocean Floor Features: Ocean Trenches and Volcanic Arcs
Bantay's Oceanography
Silva.Photo.Inventory
Silva.Photo.Inventory
stephanie_s15
Presentasi KK 2 RICHO DEA PRATAMA
Presentasi KK 2 RICHO DEA PRATAMA
Richo Dea
Hipérbola
Hipérbola
Rodrigo Fernández Morales
Continuous delivery 15
Continuous delivery 15
ShinyaOzawa
Destacado
(8)
Ctdlgt
Ctdlgt
проект №39 роль гос ва в сми
проект №39 роль гос ва в сми
39 1
39 1
Ocean Floor Features: Ocean Trenches and Volcanic Arcs
Ocean Floor Features: Ocean Trenches and Volcanic Arcs
Silva.Photo.Inventory
Silva.Photo.Inventory
Presentasi KK 2 RICHO DEA PRATAMA
Presentasi KK 2 RICHO DEA PRATAMA
Hipérbola
Hipérbola
Continuous delivery 15
Continuous delivery 15
Similar a Continuous delivery 6
Continuous delivery chapter13
Continuous delivery chapter13
favril1
Capistrano in practice - WebCareer
Capistrano in practice - WebCareer
Kyosuke MOROHASHI
Jjug springセッション
Jjug springセッション
Yuichi Hasegawa
OpenStack Object Storage; Usage
OpenStack Object Storage; Usage
irix_jp
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
Shuji Watanabe
20160720 aws development-tools-and_hybrid_cdp
20160720 aws development-tools-and_hybrid_cdp
Yukitaka Ohmura
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
Yukihiko SAWANOBORI
【勉強会】パターンによるソフトウェア構成管理
【勉強会】パターンによるソフトウェア構成管理
zuisener .
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
Ryosuke MATSUMOTO
大崎的デリバリー第2章
大崎的デリバリー第2章
Koji Takahara
Using docker infrastructure
Using docker infrastructure
Junya Niwa
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
Tomohiro Ohtake
130207 kyotorb
130207 kyotorb
Yuki Shibazaki
Open stack reference architecture v1 2
Open stack reference architecture v1 2
Dell TechCenter Japan
HBaseCon 2012 参加レポート
HBaseCon 2012 参加レポート
NTT DATA OSS Professional Services
Mod mrubyについて
Mod mrubyについて
Ryosuke MATSUMOTO
Citrix eco new
Citrix eco new
Naotaka Jay HOTTA
serverless
serverless
Akira Otsuka
継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1
Yusuke HIDESHIMA
Webサーバ勉強会#4
Webサーバ勉強会#4
oranie Narut
Similar a Continuous delivery 6
(20)
Continuous delivery chapter13
Continuous delivery chapter13
Capistrano in practice - WebCareer
Capistrano in practice - WebCareer
Jjug springセッション
Jjug springセッション
OpenStack Object Storage; Usage
OpenStack Object Storage; Usage
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
20160720 aws development-tools-and_hybrid_cdp
20160720 aws development-tools-and_hybrid_cdp
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
密着! nibohsiデプロイ 13:00-13:05 - railsアプリのデプロイ事例 -
【勉強会】パターンによるソフトウェア構成管理
【勉強会】パターンによるソフトウェア構成管理
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
組み込みスクリプト言語Mrubyを利用したwebサーバの機能拡張支援機構
大崎的デリバリー第2章
大崎的デリバリー第2章
Using docker infrastructure
Using docker infrastructure
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
毎日が憧れの新築、反復可能なデリバリーによる常時新築システム
130207 kyotorb
130207 kyotorb
Open stack reference architecture v1 2
Open stack reference architecture v1 2
HBaseCon 2012 参加レポート
HBaseCon 2012 参加レポート
Mod mrubyについて
Mod mrubyについて
Citrix eco new
Citrix eco new
serverless
serverless
継続的デリバリー読書会資料 #1
継続的デリバリー読書会資料 #1
Webサーバ勉強会#4
Webサーバ勉強会#4
Continuous delivery 6
1.
大崎的 Delivery #6
@ShinyaOzawa
2.
6.1 導入 • 目的
• ビルド・デプロイメントツールに共通した原 則の概要や情報、コツや小技、更なる情報へ の参照 • スクリプトによる環境管理 • 11 章「基盤と環境を管理する」で扱う • 使い続けるものだから注意深く設計、保 守しなければいけない • Rails なら、Rake などを使えば動かすのは 簡単
3.
6.2 ビルドツールの概要 (1/2) •
共通 – タスクが正しい順序で実行され、依存してい る各タスクが正確に一度だけ実行される – 依存関係のネットワーク内にあるタスクをす べて実行する • 本質的な性質 – 「実行内容」「依存する別のタスク」 • ツールによる相違点 – タスク指向 or プロダクト指向
4.
6.2 ビルドツールの概要 (2/2) •
タスク指向 – 依存関係をタスクの集まりとして記述 – たとえば、Ant • 記述したタスク (テスト含) がすべて一度だけ実行 • プロダクト指向 – プロダクト (最終形体) から依存関係を記述 – たとえば、make • 修正されたファイルが含まれるプロダクトをビル ド
5.
6.2.1 Make • 強力なプロダクト指向ビルドツール •
コンパイル時間削減に寄与 • 欠点 – 大規模だと Makefile の管理が大変 – シェルに依存 • 今は Scons が好んで使われている – ただ、Autotools を使った make install に当たる処 理などは個別に書く必要がある – Autotools • OS 依存性を吸収してくれるツール郡 (configure 作ると きとか)
6.
6.2.2 Ant • タスク指向のビルドツール •
Java の呼び出しが簡単に書ける • 欠点 – XML が難解 – 定型処理を書くのに時間を要する? – antcall が混乱を引き起こす • タスクからタスクを呼び出すタスク – ビルドプロセスの情報が取得できない – Import、macrodef が新人ユーザに理解されない?
7.
6.2.3 NAnt と
MSBuild • Java 開発者が NAnt を作成 • Microsoft が NAnt の純正マイナー版を提供 – MSBuild になった • 欠点は Ant と一緒
8.
6.2.4 Maven • タスク指向のビルドツール •
Convention over configuration の原則 – http://knowledge.sorich.jp/?Java%2FMaven%2FMaven%E 3%81%AE%E7%89%B9%E5%BE%B4 (引用) • 依存を勝手に解消してくれる • Ivy を Ant のタスクに入れれば依存関係の解消は可 能 • 欠点 – 規約に従ってないことが困難 – 拡張するのが大変だが、大概はプラグインがある – 依存ライブラリの自動更新 • 13 章「コンポーネントや依存関係を管理する」で詳細
9.
6.2.5 Rake • プロダクト、タスク両指向なビルドツー
ル • Ruby でタスク拡張ができる • Ruby 以外でも使える? • 欠点 – クロスプラットフォームではない • JRuby が急速?に人気を獲得してる理由 – RubyGems が必須
10.
6.2.6 Builder • プロダクト指向フレームワーク&インク
リメンタルなビルド • Rake でできることはすべてできる • Maven と同じ規約 • Ant タスクも使える • Maven より高速 • 欠点 – タスク拡張が極めて困難
11.
6.2.7 Psake (酒) •
タスク指向ビルドツール • Windows ビルドツール – PowerShell で書かれている • 依存関係は解消してくれる
12.
6.3 ビルドスクリプトとデプロイメ
ントスクリプトの原則とプラク ティス • 一般的な原則とプラクティスの紹介 • どのテクノロジーでも適用できる
13.
6.3.1 デプロメントパイプラインのス テージそれぞれに対してスクリプトを
書け • ドメイン駆動設計で作れ? • 肥大化したら、ステージ毎に分ける (p158) – コミットスクリプト – 受入テストスクリプト – 非機能要件スクリプト • スクリプトはソース同じリポジトリに バージョン管理する
14.
6.3.2 アプリケーションをデプロイ するのに適切なテクノロジーを使
え • 疑似本番環境へのデプロイも自動化されてい ることが重要 • 一般的なミドルウェアには付属しているツー ルがあるので、それを使用しなければいけな い • デプロイするのは関係者全員 – デプロイツール設計は最初から全員で考える • ツールは、アプリケーションのアップグレー ド、サービス停止、DB の更新などもできな ければいけない
15.
6.3.3 すべての環境にデプロイする
のに、同じスクリプトを使え • あらゆる環境にデプロイするのに、同一 のスクリプトを使う (p159) • 外部連携 URI などは設定情報としてスクリ プトと別に管理する – デプロイメントスクリプトから検索できるこ と • 「アプリケーションをローカルで実行で きるようにするために投資しない理由を どう正当化するか?」?
16.
6.3.4 OS のパッケージングツールを
使え • OS のパッケージングテクノロジーを使うことを強く勧める – deb とか RPM • パッケージングを使えば、Puppet、CfEngine、Marimba に簡単 に載せれる • 多層アーキテクチャの場合も、各々でパッケージを作る • バイナリのパッケージングは自動化されていなければならな い • Rails なら RubyGems だが、できるとこは OS の標準的なパッ ケージ管理に従った方がよい • CPAN はプラットフォームの差異を自動で変換する – CPAN 最強 – cpanm もあるし – perlbrew もあるし
17.
6.3.5 デプロメントプロセスが冪等
であることを保証せよ • 冪等 – 何度やっても同じ結果 • 正しく動くとわかっているベースラインから開始する? – 適切なミドルウェア、アプリケーションが動作する設定などすべて含 まれなければいけない • 差分デプロイではなく、スクラッチでデプロイしたほうがいい – 例外 1) クラスタシステムの場合、全体を同時デプロイすることに常に 意味があるわけれはない (クラスタとか全く関係なくね?) • p321 「カナリアリリース」 • 炭鉱のカナリア – 例外 2) コンポーネント毎にアプリケーションが分かれてて、本番のコ ンポーネントと組み合わせテストが完了している場合 • rsync とか使ってもファイル単位で保証できる • Puppet は設定分析をし、望ましい状態と同期するために必要な変更 だけを行う – 11 章「基盤と環境を管理する」
18.
6.3.6 デプロイメントシステムをイ
ンクリメンタルに進化させよ • シンプルでインクリメンタルなステップ の集まり • すべてのステップを完了させなければい けないわけではない • 開発環境から順序立てて、スクリプトを 作っていき、運用担当者に共有したり フィードバック受けたりで、最後は本番 環境にも同じスクリプトでデプロイでき るようにする
19.
6.4 JVM を対象としたアプリケー ションのためのプロジェクト構造 •
Java プロジェクトの標準的なレイアウト説 明
20.
6.4.1 プロジェクトのレイアウト • Maven
標準ディレクトリ構成の紹介 • 6.2.4 参照
21.
6.4.2 ソースコードを管理する • ファイルのパッケージ名と同じ名前のディレ
クトリにファイルを格納? – あたりまえってか、それ以外でどうやんだ? • 1 ファイル 1 クラス • 命名規則に従う • CheckStyle、FindBugs で上記規約をコミット ステージで強制する • 生成される定義 (!= config)、メタデータは src に含めない – target において、clean で削除できるようにする
22.
6.4.3 テストを管理する • テスト用はすべて
test/[language] に置く • 単体テストコードはソースコードと同じ パッケージ階層で作る • その他のテストは、別パッケージに置け るが普通は同じディレクトリに置く – ビルドスクリプトでフィルタリングを行い、 テストを別々に実行できるようにすればいい
23.
6.4.4 ビルドの成果物を管理する • Maven
はビルド結果を target に格納する – バージョン管理にコミットしてはいけない • ビルドプロセスは、最終的に JAR、WAR、EAR のかた ちでバイナリを生成する • 別コンポーネント用 (提供ライブラリ) に別の JAR を提 供してもよい – 13 章「コンポーネントや依存関係を管理する」 • JAR を複数生成するポイント – アプリケーションのデプロイメントをシンプルにする – ビルドプロセスを効率的にし、依存関係の複雑さを最小化 する • プロジェクトは一定のサイズに抑えれば、保守、管理 がしやすくなる
24.
6.4.5 ライブラリを管理する • 管理するパターンは
2 つ – Maven や Ivy に完全に委譲 – lib ディレクトリを作り、そこにコピーしとく • より洗練されたアプローチ – 組織内でリポジトリを作り、あらゆるプロ ジェクトで必要となるライブラリを格納して おくこと • 13 章「コンポーネントや依存関係を管理する」 • Ivy や Maven は本番筐体に置くな – 本番でコンパイルすな!
25.
6.5 デプロイメントスクリプト
(1/2) • 原則「テスト環境や本番環境の変更は、必ず自動かされたプロセス を通じて行わなければならない」 • デプロメントをスクリプト化するやりかたは 3 つ – システムが単一の筐体で実行されるなら、その筐体でローカルに実施 する必要なものをすべて行うスクリプトを書く – 大抵は別々なので、コンポーネント毎に分ける • データベースアップグレード • アプリケーションサーバにバイナリをデプロイ • アプリケーション依存のサービスをアップグレード – rsync、scp を使ったバイナリをコピーし、ssh を使ってコマンドを実行 • リモートデプロイのやり方は 3 つ – 各筐体にログインしてコマンドを実行 – エージェントを使って各リモートで実行 (次ページ) – プラットフォーム毎に適切なパッケージング技術を使って配布? (次 ページ) • これが一番強力
26.
6.5 デプロイメントスクリプト
(2/2) • プラットフォーム毎に適切なパッケージング技術を使って配 布 – ControlTier、BMC BladeLogic のようなデプロイメントツール、 Marionette Collective、CfEngine、Puppet のような基盤管理ツール は適切なバージョンがインストールされていることを保証して くれる • 11 章「基盤と環境を管理する」 – アプリケーションデプロメント管理と基盤管理の両方で同じ ツールセットが使える • エージェントモデル& CI の利点 – 作業削減 • チェックインして、CI サーバを使ってリモートデプロイ – CI サーバがプロセス管理を見える化してくれる – CI サーバがリモートアクセスするので、本番にログインしない などのセキュリティが保たれる – エージェントモデルうんぬんじゃなくて、CI サーバの話
27.
6.5.1 デプロイレイヤとテストレ
イヤ • 「適正であることがわかっている土台の 上にシステムを構築するよう努力せよ」 – コンパイルできない変更をテストしない – コミットテストに失敗した変更をテストしな い • むしろできなくね? • ソフトウェアをレイヤ状に考える
28.
6.5.2 環境設定をテストする • 各レイヤをテストして、問題が起きたらすぐに失敗さ
せる – 問題の明確化 • 極めてシンプルなスモークテストを行い、主要なリ ソースがあることを確認する – スモークテストは、度正常な簡易テスト – p378 「基盤やアプリケーションを監視する」 • スモークテストの例 – DB からレコード検索 – Web サイトであれば 200 OK – メッセージブローカーにメッセージ送信 – ファイアウォール経由での ping – ラウンドロビンができているか
29.
6.6 コツと裏技 • 解決策や戦略の一覧化
30.
6.6.1 常に相対パスを使え • 絶対パスを使わない?
– ソフトウェアをレイヤに分けた時に、OS 層まで入っ てなかったっけ? • すべてにおいて相対パスを使えば、すべてが正し い場所に置かれていることが保証できる? • 絶対パスを例外 – ハードコードされたパスに依存する 3rd ライブラリ • アプリケーションもシステムのパッケージング ツールを使って、FHS などの規約を強制する – 標準的じゃない場所へのインストールは、設定シス テムのオプションを使う – 2 章「構成管理」
31.
6.6.2 手作業を根絶せよ • 手作業は絶対ミスるし、個人に頼る部分
が多い • 「同じことを 2 回やることになったと き」は、プロセスの自動化をする
32.
6.6.3 バイナリからバージョン管理 へのトレーサビリティを組み込め • バイナリから生成元のバージョンがわか
ることは、とても大切 – .NET ではアセンブリにメタデータを組み込め る – JAR もマニフェストファイルにメタデータを 含めることができる • 他のやりかた – 各バイナリの MD5 をリビジョンと一緒に DB に格納する
33.
6.6.4 ビルド時にバイナリをバー ジョン管理にチェックインするな • バイナリが独自のリビジョン番号を持つので
混乱する • その代わりに、バイナリとレポートを共通の ファイルシステムに置く? • ソースから再生成できなければ、構成管理を 改善する • 一般的なルールとして、ビルド、テスト、デ プロイメントで生成されるものはチェックイ ンしない – CI でビルドをトリガーとしてリビジョンを紐づけ ておく
34.
6.6.5 テストが失敗してもビルドは
続けよ • 続けるという意味は、失敗したことを記 録し、ビルドプロセスの最後で各タスク の失敗をレポートすればよい • 各タスクでビルドプロセスを止めると、 次のタスクの結果が分からない • Nant、Ant では failure-property で制御でき る
35.
6.6.6 統合スモークテストでアプリ
ケーションに制約をかけよ • アプリケーションが不正な状態であれば、 停止する – デプロイスクリプトでデプロイするときに、 正しいマシンかどうかをチェックしてもよい • バッチの話があるが、外部連携とかテス ト起動できないようなのはどうすればい いんだ?
36.
6.6.7 .NET のコツと裏技 •
.NET のプロジェクトファイルには、実際 にビルドするファイルへの参照が含まれ る – ファイル消してもダメなときがある – Windows では「隠しファイルを表示する」機 能を ON にする • 理想はソリューションから消した時に一 緒に消してくれるといいが・・・ • bin、obj も悪さするから消したほうがい い? – 「clean solution」コマンドを打てばいい
37.
6.7 まとめ • ビルド、デプロイメントプロセスをガイ
ドとして使ってスクリプトを集める – 自動化は尐しずつ進める – 何度も繰り返しやって、自動化してく • スクリプトはデプロイする唯一の方法と しなければいけない
Descargar ahora