Suche senden
Hochladen
Applications made with twelve factor-app
•
3 gefällt mir
•
1,384 views
Kodai Sakabe
Folgen
ASTT、東産業Matsuriでの発表
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 46
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Y Watanabe
Beyond the Twelve-Factor App
Beyond the Twelve-Factor App
Kazuya Takahashi
コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望
コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望
Yoichi Kawasaki
Heroku Inside
Heroku Inside
Ayumu Aizawa
Citrix eco new
Citrix eco new
Naotaka Jay HOTTA
Force.com開発基礎
Force.com開発基礎
Salesforce Developers Japan
MicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組み
Shinichiro Arai
Serverless for VUI
Serverless for VUI
真吾 吉田
Empfohlen
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
Y Watanabe
Beyond the Twelve-Factor App
Beyond the Twelve-Factor App
Kazuya Takahashi
コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望
コンテナ&サーバーレス:トレンドの考察と少し先の未来の展望
Yoichi Kawasaki
Heroku Inside
Heroku Inside
Ayumu Aizawa
Citrix eco new
Citrix eco new
Naotaka Jay HOTTA
Force.com開発基礎
Force.com開発基礎
Salesforce Developers Japan
MicrosoftのOSSへの取り組み
MicrosoftのOSSへの取り組み
Shinichiro Arai
Serverless for VUI
Serverless for VUI
真吾 吉田
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
Yosuke Arai
Azure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - Overview
Keiji Kamebuchi
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
Trainocate Japan, Ltd.
20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure
Issei Hiraoka
OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304
Shinichiro Arai
Microservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on Azure
Tsukasa Kato
Spring12新機能webinar
Spring12新機能webinar
Salesforce Developers Japan
俺とHashiCorp
俺とHashiCorp
Toru Makabe
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Daisuke Nishino
20181120 HowtoFlow
20181120 HowtoFlow
Tomoyuki Obi
JAWS-UG Meets Windows (JAWS Days 2017)
JAWS-UG Meets Windows (JAWS Days 2017)
Amazon Web Services Japan
Windows Azure for PHP Developers
Windows Azure for PHP Developers
fumios
Azure Stack Hybrid DevOpsデモンストレーション
Azure Stack Hybrid DevOpsデモンストレーション
Masahiko Ebisuda
機械学習の定番プラットフォームSparkの紹介
機械学習の定番プラットフォームSparkの紹介
Cloudera Japan
デブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレース
デブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレース
Developers Summit
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018
Uemura Yuichi
xDB Replication ブローシャー
xDB Replication ブローシャー
Yuji Fujita
.NETアプリケーションのクラウド最適化
.NETアプリケーションのクラウド最適化
Takeshi Fukuhara
Azure DevOps - ALGYAN Oct 2022.pdf
Azure DevOps - ALGYAN Oct 2022.pdf
YasuhiroHanda2
Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00
Daisuke Nishino
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?
Yosuke Arai
Azure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - Overview
Keiji Kamebuchi
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
Trainocate Japan, Ltd.
20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure
Issei Hiraoka
OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304
Shinichiro Arai
Microservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on Azure
Tsukasa Kato
Spring12新機能webinar
Spring12新機能webinar
Salesforce Developers Japan
俺とHashiCorp
俺とHashiCorp
Toru Makabe
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Daisuke Nishino
20181120 HowtoFlow
20181120 HowtoFlow
Tomoyuki Obi
JAWS-UG Meets Windows (JAWS Days 2017)
JAWS-UG Meets Windows (JAWS Days 2017)
Amazon Web Services Japan
Windows Azure for PHP Developers
Windows Azure for PHP Developers
fumios
Azure Stack Hybrid DevOpsデモンストレーション
Azure Stack Hybrid DevOpsデモンストレーション
Masahiko Ebisuda
機械学習の定番プラットフォームSparkの紹介
機械学習の定番プラットフォームSparkの紹介
Cloudera Japan
デブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレース
デブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレース
Developers Summit
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018
Uemura Yuichi
xDB Replication ブローシャー
xDB Replication ブローシャー
Yuji Fujita
.NETアプリケーションのクラウド最適化
.NETアプリケーションのクラウド最適化
Takeshi Fukuhara
Azure DevOps - ALGYAN Oct 2022.pdf
Azure DevOps - ALGYAN Oct 2022.pdf
YasuhiroHanda2
Open棟梁概要説明 v02-00
Open棟梁概要説明 v02-00
Daisuke Nishino
Ähnlich wie Applications made with twelve factor-app
(20)
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
Azure DevOps 関西 2019 - Overview
Azure DevOps 関西 2019 - Overview
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
G tech2016 デジタルトランスフォーメーションを牽引するAzure+OSSのスキル習得ポイント
20190201 Cloud Native Kansai AKS Azure
20190201 Cloud Native Kansai AKS Azure
OSSではじめるオープン・スタンダードのクラウド @201304
OSSではじめるオープン・スタンダードのクラウド @201304
Microservices and Servcie Mesh on Azure
Microservices and Servcie Mesh on Azure
Spring12新機能webinar
Spring12新機能webinar
俺とHashiCorp
俺とHashiCorp
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
20181120 HowtoFlow
20181120 HowtoFlow
JAWS-UG Meets Windows (JAWS Days 2017)
JAWS-UG Meets Windows (JAWS Days 2017)
Windows Azure for PHP Developers
Windows Azure for PHP Developers
Azure Stack Hybrid DevOpsデモンストレーション
Azure Stack Hybrid DevOpsデモンストレーション
機械学習の定番プラットフォームSparkの紹介
機械学習の定番プラットフォームSparkの紹介
デブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレース
デブサミ2013【14-E-2】パフォーマンス・チューニングに革命をもたらす最新テクノロジー - トランザクショントレース
Cloud Foundry構成概要 111018
Cloud Foundry構成概要 111018
xDB Replication ブローシャー
xDB Replication ブローシャー
.NETアプリケーションのクラウド最適化
.NETアプリケーションのクラウド最適化
Azure DevOps - ALGYAN Oct 2022.pdf
Azure DevOps - ALGYAN Oct 2022.pdf
Open棟梁概要説明 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
3.
• https://speakerdeck.com/takai/continuous-delivery-in-cookpad
4.
• https://speakerdeck.com/takai/continuous-delivery-in-cookpad
5.
継続的にデリバリーできる 仕組みって?
6.
Twelve-Factor App WebApplication、SaaSを作り上げるための方法論
• http://twelve-factor-ja.herokuapp.com/
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(続き •
リソースは自由にデプロイにアタッチしたり、デプロイからデ タッチしたりできる。 • ハードウェアの問題によってアプリケーションのデータベース の動作がおかしい場合、 • アプリケーションの管理者は最新のバックアップから新しいデー タベースサーバーを立ち上げる。 • そして現在の本番データベースをデタッチし、 • 新しいデータベースをアタッチする-コードを一切変更せずに。
15.
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間でつなげ独立させる
19.
Concurrency • プロセスモデルによってスケールアウトする
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)
28.
CodeBase
29.
Dependencies
30.
Config
31.
Disposability providerを変えることで違う環境へ構築。または、 bundle
exec knife solo bootstrap webapp等
32.
Dev/prod parity 同じBuild
STEPで同じMiddleware。同じVagrantfile。
33.
Continuous Integration
34.
初期構築 6ヶ月 ⇒ 30m
35.
学習コスト 役割毎に分割 プロビジョニングログ
実機による確認 上記から変に1から学ぶ必要がない
36.
37.
はまった作業は Commitメッセージ&コメント
38.
commitにより、設定情報だけではなく、 なんのためにcommitしたかを追える Tagにより、アークテクチャーのバージョン管理
!!
39.
リリース作業 bundle exec
cap production deploy
40.
環境を選ばない bundle exec
knife solo bootstrap YourServer
41.
ubuntu & CentOSの確認
bundle exec kitchen test
42.
テスト済みのインフラ基盤 bundle exec
rake spec
43.
44.
Continuous delivery
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) 」
Jetzt herunterladen