SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
Applications made 
with Twelve-Factor-App 
@koudaiii
Profile 
id: koudaiii 
fullname: Kodai Sakabe
• https://speakerdeck.com/takai/continuous-delivery-in-cookpad
• https://speakerdeck.com/takai/continuous-delivery-in-cookpad
継続的にデリバリーできる 
仕組みって?
Twelve-Factor App 
WebApplication、SaaSを作り上げるための方法論 
• http://twelve-factor-ja.herokuapp.com/
Twelve-Factor Appって? 
• 寄稿者が何百何千ものアプリケーションの開 
発・運用・スケールを経験してきた知見であ 
り方法論 
• Herokuプラットフォーム上を前提としている
方法論 
• セットアップ自動化のために 宣言的な フォーマットを使い、プロジェクトに 
新しく加わった開発者が要する時間とコストを最小化する。 
• 下層のOSへの 依存関係を明確化 し、実行環境間での 移植性を最大化 する。 
• モダンな クラウドプラットフォーム 上への デプロイ に適しており、サーバー 
管理やシステム管理を不要なものにする。 
• 開発環境と本番環境の 差異を最小限 にし、アジリティを最大化する 継続的 
デプロイ を可能にする。 
• ツール、アーキテクチャ、開発プラクティスを大幅に変更することなく ス 
ケールアップ できる。
1. コードベース (Codebase) 
2. 依存関係 (Dependencies) 
3. 設定 (Config) 
4. バックエンドサービス (Backing Services) 
5. ビルド、リリース、実行 (Build, release, run) 
6. プロセス (Processes) 
7. ポートバインディング (Port binding) 
8. 並行性 (Concurrency) 
9. 廃棄容易性 (Disposability) 
10.開発/本番一致 (Dev/prod parity) 
11.ログ (Logs) 
12.管理プロセス (Admin processes)
CodeBase 
• バージョン管理されている1つのコードベース 
と複数のデプロイ 
• Git,SVN等 
• 常に1対1の関係
Dependencies 
• 依存関係を明示的に宣言し分離する 
• CPANやRubyGem等。~env系のツール 
• すべての依存関係を 依存関係宣言 マニフェス 
トで完全かつ厳密に宣言する(Gemfile) 
• 宣言したものを利用する(bundle exec)
Config 
• 設定を環境変数に格納する 
• アプリケーションの 設定 は、デプロイ(ステージン 
グ、本番、開発環境など)の間で異なり得る唯一のも 
の 
• 設定をコードから厳密に分離すること 
• 環境変数に格納(qt)または、dotenv等(database)を用 
いる
Backing Services 
• バックエンドサービスをアタッチされたリソースとし 
て扱う 
• Twelve-Factor Appのデプロイは、 
• アプリケーションのコードに変更を加えることなく、 
• ローカルで管理されるMySQLデータベースをサード 
パーティに管理されるサービス(Amazon RDSなど) 
に切り替えることができるべき
Backing Services(続き 
• リソースは自由にデプロイにアタッチしたり、デプロイからデ 
タッチしたりできる。 
• ハードウェアの問題によってアプリケーションのデータベース 
の動作がおかしい場合、 
• アプリケーションの管理者は最新のバックアップから新しいデー 
タベースサーバーを立ち上げる。 
• そして現在の本番データベースをデタッチし、 
• 新しいデータベースをアタッチする-コードを一切変更せずに。
Backing Services(続き
Build, release, run 
• ビルド、リリース、実行の3つのステージを厳密に分離する。 
Capistrano等 
• releasesという名前のサブディレクトリに格納し、 
• 現在のリリースは現在のリリースのディレクトリへのシンボリック 
リンクとなる。 
• Capistranoのrollbackコマンドを使うと、簡単かつ即座に以前のリ 
リースにロールバック 
• 今だとBule-Green deployment
Processes 
• アプリケーションを1つもしくは複数のステート 
レスなプロセスとして実行する 
• プロセスはステートレスかつシェアードナッシン 
グ である。 
• 永続化する必要のあるすべてのデータは、ステー 
トフルなバックエンドサービス(典型的にはデー 
タベース)に格納しなければならない。
Port binding 
• ポートバインディングを通してサービスを公開する 
• WebアプリケーションはWebサーバーコンテナの内部で実行されることが 
ある。 
• Twelve-Factor Appは完全に自己完結 し、Webに公開されるサービスを作 
成するために、コンテナが実行環境にWebサーバーランタイムを注入する 
ことを頼りにしない。 
• Webアプリケーションは ポートにバインドすることでHTTPをサービスと 
して公開し、 そのポートにリクエストが来るのを待つ。 
• APPとWebはPort間でつなげ独立させる
Concurrency 
• プロセスモデルによってスケールアウトする
Concurrency(続き 
• プロセスは決してデーモン化するべきではないし、PID 
ファイルを書き出すべきではない。 
• その代わりに、OSのプロセスマネージャー(例: 
Upstart、クラウドプラットフォームの分散プロセスマ 
ネージャー、あるいは開発環境におけるForemanのような 
ツール)を頼ることで、 
• 出力ストリームを管理し、プロセスのクラッシュに対応し、 
ユーザーによる再起動やシャットダウンを処理すべき
Disposability 
• 高速な起動とグレースフルシャットダウンで堅牢性 
を最大化する 
• プロセス は 廃棄容易 であり即座に起動・終了する 
ことができる。 
• この性質が、素早く柔軟なスケールと、コード や 設 
定 に対する変更の素早いデプロイを容易にし、本番 
デプロイの堅牢性を高める
Dev/prod parity 
• 開発、ステージング、本番環境をできるだけ一致させ 
た状態を保つ 
• 3つのギャップをなくす 
• 時間のギャップ・・コードが本番に反映される時間 
• 人材のギャップ・・リリースは運用担当者 
• ツールのギャップ・・開発と本番のMiddlewareが違う
Dev/prod parity(続き 
• 継続的デプロイしやすいよう開発環境と本番環境のギャッ 
プを小さく保つ 
• 開発者が書いたコードは数時間後、さらには数分後には 
デプロイされる 
• コードを書いた開発者はそのコードのデプロイに深く関 
わり、そのコードの本番環境での挙動をモニタリングす 
る。 
• 開発環境と本番環境をできるだけ一致させた状態を保つ。
Logs 
• ログをイベントストリームとして扱う 
• ログは、すべての実行中のプロセスとバックエ 
ンドサービスの出力ストリームから収集された 
イベントが、集約されて時刻順に並べられたス 
トリームである。 
• 生の状態のログは、通常1行が1つのイベントを 
表すテキストフォーマットである
Logs(続き 
• FluentdやSplunk,BigQuery等を組み合わせで以下の利点 
• 過去の特定のイベントを見つける。 
• 大きなスケールの傾向をグラフ化する。(1分あたり 
のリクエスト数など) 
• ユーザー定義のヒューリスティクスに基づいて素早く 
アラートを出す。(1分あたりのエラー数がある閾値 
を超えた場合にアラートを出すなど)
Admin processes 
• 管理タスク(マイグレーション等)を1回限りのプロセスとして 
実行 
• 1回限りの管理プロセスは、アプリケーションの通常の長時 
間実行されるプロセスと全く同じ環境で実行されるべき 
• これらのプロセスは、あるリリースに対して実行され、その 
リリースに対して実行されるすべてのプロセスと同じコード 
と設定を使う。 
• デプロイ時に一緒にされるべきである。(db:migrate等)
1. コードベース (Codebase) 
2. 依存関係 (Dependencies) 
3. 設定 (Config) 
4. バックエンドサービス (Backing Services) 
5. ビルド、リリース、実行 (Build, release, run) 
6. プロセス (Processes) 
7. ポートバインディング (Port binding) 
8. 並行性 (Concurrency) 
9. 廃棄容易性 (Disposability) 
10.開発/本番一致 (Dev/prod parity) 
11.ログ (Logs) 
12.管理プロセス (Admin processes)
CodeBase
Dependencies
Config
Disposability 
providerを変えることで違う環境へ構築。または、 
bundle exec knife solo bootstrap webapp等
Dev/prod parity 
同じBuild STEPで同じMiddleware。同じVagrantfile。
Continuous Integration
初期構築 
6ヶ月 ⇒ 30m
学習コスト 
役割毎に分割 
プロビジョニングログ 
実機による確認 
上記から変に1から学ぶ必要がない
はまった作業は 
Commitメッセージ&コメント
commitにより、設定情報だけではなく、 
なんのためにcommitしたかを追える 
Tagにより、アークテクチャーのバージョン管理 
!!
リリース作業 
bundle exec cap production deploy
環境を選ばない 
bundle exec knife solo bootstrap YourServer
ubuntu & CentOSの確認 
bundle exec kitchen test
テスト済みのインフラ基盤 
bundle exec rake spec
Continuous delivery
Next Step 
Blue-Green Deployment! 
ChatOps!
Reference 
• http://twelve-factor-ja.herokuapp.com/ 
• twelve-factor-app 
• https://speakerdeck.com/takai/continuous-delivery-in-cookpad 
• continuous-delivery-in-cookpad 
• http://www.atmarkit.co.jp/ait/articles/1312/03/news033.html 
• 継続的デリバリ/デプロイを実現する手法・ツールまとめ 
• http://easyramble.com/warn-missing-cookbook-dependency.html 
• WARN: MissingCookbookDependencyとChefで警告が出る場合の対処 
• http://qiita.com/cazador/items/e0db714555f2f36d98c6 
• 大規模にchefを使い倒すためのcookbook pattern 
• 書籍「入門Chef Solo - Infrastructure as Code」「Vagrant入門ガイド」「Chef活用ガイド コードではじめる 
構成管理」「Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) 」

Weitere ähnliche Inhalte

Ähnlich wie Applications made ​​with twelve factor-app

Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?Yosuke Arai
 
Azure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - OverviewAzure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - OverviewKeiji Kamebuchi
 
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイントG tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイントTrainocate Japan, Ltd.
 
20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS AzureIssei Hiraoka
 
OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304Shinichiro Arai
 
Microservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on AzureMicroservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on AzureTsukasa Kato
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説Daisuke Nishino
 
20181120 HowtoFlow
20181120 HowtoFlow20181120 HowtoFlow
20181120 HowtoFlowTomoyuki Obi
 
Windows Azure for PHP Developers
Windows Azure for PHP DevelopersWindows Azure for PHP Developers
Windows Azure for PHP Developersfumios
 
Azure Stack Hybrid DevOpsデモンストレーション
Azure Stack Hybrid DevOpsデモンストレーションAzure Stack Hybrid DevOpsデモンストレーション
Azure Stack Hybrid DevOpsデモンストレーションMasahiko Ebisuda
 
機械学習の定番プラットフォームSparkの紹介
機械学習の定番プラットフォームSparkの紹介機械学習の定番プラットフォームSparkの紹介
機械学習の定番プラットフォームSparkの紹介Cloudera Japan
 
デブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレース
デブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレースデブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレース
デブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレースDevelopers Summit
 
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018Uemura Yuichi
 
xDB Replication ブローシャー
xDB Replication ブローシャーxDB Replication ブローシャー
xDB Replication ブローシャーYuji Fujita
 
.NETアプリケーションのクラウド最適化
.NETアプリケーションのクラウド最適化.NETアプリケーションのクラウド最適化
.NETアプリケーションのクラウド最適化Takeshi Fukuhara
 
Azure DevOps - ALGYAN Oct 2022.pdf
Azure DevOps - ALGYAN Oct 2022.pdfAzure DevOps - ALGYAN Oct 2022.pdf
Azure DevOps - ALGYAN Oct 2022.pdfYasuhiroHanda2
 
Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00Daisuke Nishino
 

Ähnlich wie Applications made ​​with twelve factor-app (20)

Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
 
Azure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - OverviewAzure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - Overview
 
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイントG tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
 
20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure
 
OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304
 
Microservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on AzureMicroservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on Azure
 
Spring12新機能webinar
Spring12新機能webinarSpring12新機能webinar
Spring12新機能webinar
 
俺とHashiCorp
俺とHashiCorp俺とHashiCorp
俺とHashiCorp
 
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
 
20181120 HowtoFlow
20181120 HowtoFlow20181120 HowtoFlow
20181120 HowtoFlow
 
JAWS-UG Meets Windows (JAWS Days 2017)
JAWS-UG Meets Windows (JAWS Days 2017)JAWS-UG Meets Windows (JAWS Days 2017)
JAWS-UG Meets Windows (JAWS Days 2017)
 
Windows Azure for PHP Developers
Windows Azure for PHP DevelopersWindows Azure for PHP Developers
Windows Azure for PHP Developers
 
Azure Stack Hybrid DevOpsデモンストレーション
Azure Stack Hybrid DevOpsデモンストレーションAzure Stack Hybrid DevOpsデモンストレーション
Azure Stack Hybrid DevOpsデモンストレーション
 
機械学習の定番プラットフォームSparkの紹介
機械学習の定番プラットフォームSparkの紹介機械学習の定番プラットフォームSparkの紹介
機械学習の定番プラットフォームSparkの紹介
 
デブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレース
デブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレースデブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレース
デブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレース
 
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018
 
xDB Replication ブローシャー
xDB Replication ブローシャーxDB Replication ブローシャー
xDB Replication ブローシャー
 
.NETアプリケーションのクラウド最適化
.NETアプリケーションのクラウド最適化.NETアプリケーションのクラウド最適化
.NETアプリケーションのクラウド最適化
 
Azure DevOps - ALGYAN Oct 2022.pdf
Azure DevOps - ALGYAN Oct 2022.pdfAzure DevOps - ALGYAN Oct 2022.pdf
Azure DevOps - ALGYAN Oct 2022.pdf
 
Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00
 

Applications made ​​with twelve factor-app

  • 1. Applications made with Twelve-Factor-App @koudaiii
  • 2. Profile id: koudaiii fullname: Kodai Sakabe
  • 7. Twelve-Factor Appって? • 寄稿者が何百何千ものアプリケーションの開 発・運用・スケールを経験してきた知見であ り方法論 • Herokuプラットフォーム上を前提としている
  • 8. 方法論 • セットアップ自動化のために 宣言的な フォーマットを使い、プロジェクトに 新しく加わった開発者が要する時間とコストを最小化する。 • 下層のOSへの 依存関係を明確化 し、実行環境間での 移植性を最大化 する。 • モダンな クラウドプラットフォーム 上への デプロイ に適しており、サーバー 管理やシステム管理を不要なものにする。 • 開発環境と本番環境の 差異を最小限 にし、アジリティを最大化する 継続的 デプロイ を可能にする。 • ツール、アーキテクチャ、開発プラクティスを大幅に変更することなく ス ケールアップ できる。
  • 9. 1. コードベース (Codebase) 2. 依存関係 (Dependencies) 3. 設定 (Config) 4. バックエンドサービス (Backing Services) 5. ビルド、リリース、実行 (Build, release, run) 6. プロセス (Processes) 7. ポートバインディング (Port binding) 8. 並行性 (Concurrency) 9. 廃棄容易性 (Disposability) 10.開発/本番一致 (Dev/prod parity) 11.ログ (Logs) 12.管理プロセス (Admin processes)
  • 10. CodeBase • バージョン管理されている1つのコードベース と複数のデプロイ • Git,SVN等 • 常に1対1の関係
  • 11. Dependencies • 依存関係を明示的に宣言し分離する • CPANやRubyGem等。~env系のツール • すべての依存関係を 依存関係宣言 マニフェス トで完全かつ厳密に宣言する(Gemfile) • 宣言したものを利用する(bundle exec)
  • 12. Config • 設定を環境変数に格納する • アプリケーションの 設定 は、デプロイ(ステージン グ、本番、開発環境など)の間で異なり得る唯一のも の • 設定をコードから厳密に分離すること • 環境変数に格納(qt)または、dotenv等(database)を用 いる
  • 13. Backing Services • バックエンドサービスをアタッチされたリソースとし て扱う • Twelve-Factor Appのデプロイは、 • アプリケーションのコードに変更を加えることなく、 • ローカルで管理されるMySQLデータベースをサード パーティに管理されるサービス(Amazon RDSなど) に切り替えることができるべき
  • 14. Backing Services(続き • リソースは自由にデプロイにアタッチしたり、デプロイからデ タッチしたりできる。 • ハードウェアの問題によってアプリケーションのデータベース の動作がおかしい場合、 • アプリケーションの管理者は最新のバックアップから新しいデー タベースサーバーを立ち上げる。 • そして現在の本番データベースをデタッチし、 • 新しいデータベースをアタッチする-コードを一切変更せずに。
  • 16. Build, release, run • ビルド、リリース、実行の3つのステージを厳密に分離する。 Capistrano等 • releasesという名前のサブディレクトリに格納し、 • 現在のリリースは現在のリリースのディレクトリへのシンボリック リンクとなる。 • Capistranoのrollbackコマンドを使うと、簡単かつ即座に以前のリ リースにロールバック • 今だとBule-Green deployment
  • 17. Processes • アプリケーションを1つもしくは複数のステート レスなプロセスとして実行する • プロセスはステートレスかつシェアードナッシン グ である。 • 永続化する必要のあるすべてのデータは、ステー トフルなバックエンドサービス(典型的にはデー タベース)に格納しなければならない。
  • 18. Port binding • ポートバインディングを通してサービスを公開する • WebアプリケーションはWebサーバーコンテナの内部で実行されることが ある。 • Twelve-Factor Appは完全に自己完結 し、Webに公開されるサービスを作 成するために、コンテナが実行環境にWebサーバーランタイムを注入する ことを頼りにしない。 • Webアプリケーションは ポートにバインドすることでHTTPをサービスと して公開し、 そのポートにリクエストが来るのを待つ。 • APPとWebはPort間でつなげ独立させる
  • 20. Concurrency(続き • プロセスは決してデーモン化するべきではないし、PID ファイルを書き出すべきではない。 • その代わりに、OSのプロセスマネージャー(例: Upstart、クラウドプラットフォームの分散プロセスマ ネージャー、あるいは開発環境におけるForemanのような ツール)を頼ることで、 • 出力ストリームを管理し、プロセスのクラッシュに対応し、 ユーザーによる再起動やシャットダウンを処理すべき
  • 21. Disposability • 高速な起動とグレースフルシャットダウンで堅牢性 を最大化する • プロセス は 廃棄容易 であり即座に起動・終了する ことができる。 • この性質が、素早く柔軟なスケールと、コード や 設 定 に対する変更の素早いデプロイを容易にし、本番 デプロイの堅牢性を高める
  • 22. Dev/prod parity • 開発、ステージング、本番環境をできるだけ一致させ た状態を保つ • 3つのギャップをなくす • 時間のギャップ・・コードが本番に反映される時間 • 人材のギャップ・・リリースは運用担当者 • ツールのギャップ・・開発と本番のMiddlewareが違う
  • 23. Dev/prod parity(続き • 継続的デプロイしやすいよう開発環境と本番環境のギャッ プを小さく保つ • 開発者が書いたコードは数時間後、さらには数分後には デプロイされる • コードを書いた開発者はそのコードのデプロイに深く関 わり、そのコードの本番環境での挙動をモニタリングす る。 • 開発環境と本番環境をできるだけ一致させた状態を保つ。
  • 24. Logs • ログをイベントストリームとして扱う • ログは、すべての実行中のプロセスとバックエ ンドサービスの出力ストリームから収集された イベントが、集約されて時刻順に並べられたス トリームである。 • 生の状態のログは、通常1行が1つのイベントを 表すテキストフォーマットである
  • 25. Logs(続き • FluentdやSplunk,BigQuery等を組み合わせで以下の利点 • 過去の特定のイベントを見つける。 • 大きなスケールの傾向をグラフ化する。(1分あたり のリクエスト数など) • ユーザー定義のヒューリスティクスに基づいて素早く アラートを出す。(1分あたりのエラー数がある閾値 を超えた場合にアラートを出すなど)
  • 26. Admin processes • 管理タスク(マイグレーション等)を1回限りのプロセスとして 実行 • 1回限りの管理プロセスは、アプリケーションの通常の長時 間実行されるプロセスと全く同じ環境で実行されるべき • これらのプロセスは、あるリリースに対して実行され、その リリースに対して実行されるすべてのプロセスと同じコード と設定を使う。 • デプロイ時に一緒にされるべきである。(db:migrate等)
  • 27. 1. コードベース (Codebase) 2. 依存関係 (Dependencies) 3. 設定 (Config) 4. バックエンドサービス (Backing Services) 5. ビルド、リリース、実行 (Build, release, run) 6. プロセス (Processes) 7. ポートバインディング (Port binding) 8. 並行性 (Concurrency) 9. 廃棄容易性 (Disposability) 10.開発/本番一致 (Dev/prod parity) 11.ログ (Logs) 12.管理プロセス (Admin processes)
  • 32. Dev/prod parity 同じBuild STEPで同じMiddleware。同じVagrantfile。
  • 35. 学習コスト 役割毎に分割 プロビジョニングログ 実機による確認 上記から変に1から学ぶ必要がない
  • 36.
  • 39. リリース作業 bundle exec cap production deploy
  • 40. 環境を選ばない bundle exec knife solo bootstrap YourServer
  • 41. ubuntu & CentOSの確認 bundle exec kitchen test
  • 43.
  • 45. Next Step Blue-Green Deployment! ChatOps!
  • 46. Reference • http://twelve-factor-ja.herokuapp.com/ • twelve-factor-app • https://speakerdeck.com/takai/continuous-delivery-in-cookpad • continuous-delivery-in-cookpad • http://www.atmarkit.co.jp/ait/articles/1312/03/news033.html • 継続的デリバリ/デプロイを実現する手法・ツールまとめ • http://easyramble.com/warn-missing-cookbook-dependency.html • WARN: MissingCookbookDependencyとChefで警告が出る場合の対処 • http://qiita.com/cazador/items/e0db714555f2f36d98c6 • 大規模にchefを使い倒すためのcookbook pattern • 書籍「入門Chef Solo - Infrastructure as Code」「Vagrant入門ガイド」「Chef活用ガイド コードではじめる 構成管理」「Chef実践入門 ~コードによるインフラ構成の自動化 (WEB+DB PRESS plus) 」