twelve factor app
と
エンタープライズ
23回PaaS勉強会
• たかはしなおと
• TwitterID: tnaoto
• 本業:クラウド基盤の開発
本日のお話
The Twelve-Factor App
• 日経コンピュータ 9/18 号
• 日経ITPro

http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/
The Twelve-Factor App
3つに分類
• アプリケーションの迅速な改修
• 環境への迅速な展開
• リソース増減や運用管理を容易にする
その1
アプリケーションの改修を迅速にするためのプラクティス
Ⅹ. Dev/prod parity
• 開発と本番の一致
• 3つのギャップ
• 時間のギャップ

コードが本番に反映されるまでの時間
• 人材のギャップ

開発者と運用者
• ツールのギャップ

開発環境と本番環境で使われるミドルの違い
• 継続的デプロイを行うためにはギャップを埋める必要がある
Ⅹ. Dev/prod parity
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/110900002
エンタープライズには、開発者が本番環境にアクセス出来なかったり、

本番環境に商用製品を利用することによるギャップもある
( ̄- ̄)x
許可取ってないw
Ⅰ. Codebase
2つの視点
• 「コードベース」:アプリケーションを構成するコードの塊
• 「デプロイ」:インスタンス(≠配備(する))
開発と本番のデプロイを同一コードから行うことで、

環境トラブルの原因や重複コードを作ることを排除する
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/110900003/
( ̄- ̄)x
許可取ってないw
Ⅰ. Codebase
The Twelve Factor Appの世界
ソースコードのチェックアウトから本番環境への展開がほぼ一直線。
すべてがコードで扱われ、バージョン管理システムで管理されている
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/110900003/
( ̄- ̄)x
許可取ってないw
Ⅰ. Codebase
エンタープライズの世界
• 開発者が実行モジュールと適用手順書を作成し、

運用者が、手順書に従って本番環境に展開する
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/110900003/
( ̄- ̄)x
許可取ってないw
Ⅱ. Dependencies
暗黙的依存関係の排除
• アプリケーションがシステムツールを使うならば、
それを組み込むべきである
• ライブラリの依存関係解決にはツールを使う
• メリット
• ライブラリ管理
• 環境構築
• ライブラリの自動収集
Ⅱ. Dependencies
The Twelve Factor Appの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/110900004/
依存関係を定義ファイルに記述
ビルド実行時にツールがライブラリを収集し利用
( ̄- ̄)x
許可取ってないw
Ⅱ. Dependencies
エンタープライズの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/110900004/
依存関係はドキュメントに記載、
収集は人間の手による手動
( ̄- ̄)x
許可取ってないw
その2
環境への展開を迅速にするプラクティス
Ⅴ. Build, release, run
「動作・行為」ではなく、「各ステージ」について説明している
• ビルドステージ
• ソースコード、ライブラリ、リソースを集め、

実行モジュール(=ビルド)を生成
• リリースステージ
• 実行モジュールに対し、設定情報を組み込んだリリース

(=配布物)を生成
• 実行ステージ
• リリースを実行する

(ステージング、プロダクションなどの環境=ステージ)
Ⅴ. Build, release, run
The Twelve Factor Appの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/110900004/
3つのメリット
• ソフトウエアのバージョン
組み合わせによって動作し
なくなるリスクを軽減
• 複数の環境への展開が容易
• 環境設定の自動化
OSSを使っている場合に特に有用
( ̄- ̄)x
許可取ってないw
Ⅴ. Build, release, run
エンタープライズの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/110900004/
• 環境設定(ステージアップ)は手作業
• 本番環境にしか無いライブラリがある
( ̄- ̄)x
許可取ってないw
Ⅲ. Config
• 実行環境の違いに対応するためのもの
• The Twelve Factor Appでは、OSの環境変数を推奨
• 設定もソースコード共に管理
Ⅲ. Config
The Twelve Factor Appの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/111700006/
前述の[Ⅴ. build,release,run]と組み合わせて考えると
環境に依存しないコードと環境固有の設定を明確に分離し、管理することが可能
( ̄- ̄)x
許可取ってないw
Ⅲ. Config
エンタープライズの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/111700006/
「時間のギャップ」により展開に時間がかかる
手動であるためマシン台数の増加に対し、リニアに展開時間も増える
( ̄- ̄)x
許可取ってないw
Ⅳ. Backing Services
連携サービス(ネットワーク越しの連携)
• 2つに分類
• ローカルサービス
• 自社のサービス(RDBやSMTPなど)
• サードパーティサービス
• AmazonS3のようなクラウドサービスや

twitterのようなWebAPIでアクセス可能なもの
連携情報はコードには記述せず、「Ⅲ. Config」によって行われる
Ⅳ. Backing Services
The Twelve Factor Appの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/111700007
アプリケーションのコードに変更を加えなくても、設定に格納されたア
クセス情報を変更するだけで、連携サービスの切り替えができるべき
( ̄- ̄)x
許可取ってないw
Ⅳ. Backing Services
エンタープライズの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/111700007
古いシステムはハードコードであったり、連携の仕方が特殊であることが多く、

また度重なる改修によりシステム自体がスパゲッティ化
連携変更は、膨大な調査と改修、テスト時間を要することが多い
( ̄- ̄)x
許可取ってないw
その3
リソース増減や運用管理を容易にするプラクティス
Ⅷ. Concurrency
要はスケールアウトどうするか
• アプリケーションはマルチポスト、マルチプロ
セスで動作できるように作る
• プロセスはデーモン化したりPIDファイルを作
らず、プロセスマネージャな機構の利用を推奨
Ⅷ. Concurrency
The Twelve Factor Appの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/111700008
プロセスの起動・停止に制約を設けない
プロセスの増減は必要に応じて行えればよい
( ̄- ̄)x
許可取ってないw
Ⅷ. Concurrency
エンタープライズの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/111700008
必要リソースを事前設計。最大処理数に合わせて構築
ただし、必要リソースが読めないシステムも存在する
( ̄- ̄)x
許可取ってないw
Ⅵ. Processes & Ⅶ. Port Binding
• Ⅵ. Processes
• プロセスは、ステートレス、かつシェアードナッシングである
• 永続データはサービスに保存(ex:RDB)
• Ⅶ. Port Binding
• ポートバインディングを通じてサービスを公開する
• アプリケーションに実行環境を埋め込み自らポートを開き起動す
る。
• アプリケーション自身が動作する環境を実行環境に期待しない
ここにⅧ. Concurrencyも加えて考える
Ⅵ. Processes & Ⅶ. Port Binding
The Twelve Factor Appの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/111700009
プロセスモデルとは、

各構成要素を1プロセス以上の並行実行可
能なプロセス群として実装し、プロセス
のインスタンスを実行に必要なサーバー資
源とセットで増減することによりスケール
することを想定したもの
要は、アプリケーションはプロセス、処
理タイプごとに実装
サービスポートを開くことでアプリケー
ションが連携しシステムを組み上げたもの
( ̄- ̄)x
許可取ってないw
Ⅵ. Processes & Ⅶ. Port Binding
エンタープライズの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/111700009
• TomcatやGlassFishなどを
ベースとする商用製品は、
実行環境自体がプロセスで
あり、その管理下でポート
管理される
• 潤沢なスペックの1つ物理
ホストの上で実行され、ポー
トやプロセスの増減を気に
する必要がない場合もある
( ̄- ̄)x
許可取ってないw
Ⅸ. Disposability
廃棄容易性
• アプリケーションの起動・終了を素早く行う
ことで、スケールアウト・ダウンだけでなく、
アプリケーションの入れ替えも容易になる
• 特に停止は、行儀よく(Gracefull)である必
要を求めている
Ⅸ. Disposability
The Twelve Factor Appの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/111700010
クラウドのメリットを最大限活かし(リソース無限)、
サービスを停止することなく、アプリケーションの入れ替えを行う
( ̄- ̄)x
許可取ってないw
Ⅸ. Disposability
エンタープライズの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/111700010
システムリソースは有限
稼働中のサービスを停止し、アプリケーションを入れ替える
( ̄- ̄)x
許可取ってないw
Ⅺ. Logs
• ログはイベントストリームである
• アプリケーションはログの出力先について関
知しない
Ⅺ. Logs
The Twelve Factor Appの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/111700012
実行環境上にログファ
イルを作らない
ログは実行環境の出力
機構に任せ、然るべき
場所へ送る
( ̄- ̄)x
許可取ってないw
Ⅺ. Logs
エンタープライズの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/111700012
ログの使い方は主に2つ
・アラート発砲トリガー
シスログを舐めてERRORなどの文
字が出たら、障害通知を行う
・障害発生時の調査資料
開発者は実行環境にはログイン出来
ないため、予め仕込んであるログ抽
出ツールを運用者に実行してもらい
ログを回収する
( ̄- ̄)x
許可取ってないw
Ⅻ. Admin Processes
管理プロセス

ここでの「プロセス」は、フロー(流れ)
• アプリケーションの運用プロセス

1度しか実行されなくても通常のプロセスと
同等に扱う
• アプリケーションやリリースに含めて管理す
る
Ⅻ. Admin Processes
The Twelve Factor Appの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/111700013/
管理プロセスを実行するスクリプトもコードと一緒に管理
( ̄- ̄)x
許可取ってないw
Ⅻ. Admin Processes
エンタープライズの世界
http://itpro.nikkeibp.co.jp/atcl/column/14/110900092/111700013/
開発者が作業手順書を作成し、運用者が実行する管理
プロセスの実行記録などのエビデンスが必要とされることがある
( ̄- ̄)x
許可取ってないw
番外編
SoRとSoEとtwelve factor app
• 最近よく聞く言葉
• SoR:System of Record 

基幹系業務システム
• SoE:System of Engagement 

twelve factor appな世界
• 既存システムを[Ⅳ. Backing Services]として、
twelve factorな世界と連携していく必要がある
番外編
Immutable Infrastructureとdocker
• The Twelve Factor Appな世界を実践すると、
必然とImmutable Infrastructureもdockerも実
践できますよね?
おわり

More Related Content

PDF
Cloud Foundryで学ぶ、PaaSのしくみ講座
PDF
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
PDF
パフォーマンス計測Ciサービスを作って得た知見を共有したい
PDF
Docker PaaSとしての OpenShift, Deis, Flynn比較
PDF
はじめてのCF buildpack
PDF
ProjectAtomic-and-geard
PDF
Jenkins 再入門
Cloud Foundryで学ぶ、PaaSのしくみ講座
『コンテナ疲れ』と戦う、k8s・PaaS・Serverlessの活用法
パフォーマンス計測Ciサービスを作って得た知見を共有したい
Docker PaaSとしての OpenShift, Deis, Flynn比較
はじめてのCF buildpack
ProjectAtomic-and-geard
Jenkins 再入門

What's hot (20)

PDF
Cloud foundryのコミュニティを紹介するよ
PPTX
Jenkins User Conference 東京 2015
PDF
Dockerの事例紹介
PDF
Ciじゃない方のJenkins
PDF
runC概要と使い方
PDF
Jenkinsユーザカンファレンス2015 前座資料
PDF
PaaS / Cloud Foundry makes you happy
PDF
ざっくり始めるCloud Native開発
PPTX
コンテナ運用基盤 with OpenShift
 
PPTX
Git & GitHub & kintone でウルトラハッピー!
PDF
Cloud Foundry Container-to-Container Networking
PPTX
GitLabを16万8千光年ワープさせた話(改)
PDF
KubernetesとOpenShiftの話
PDF
Infrastrucure as a CodeにおけるJenkinsの役割
PPTX
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
PDF
知って欲しいPaaSの話
PDF
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
PDF
Docker + Checkpoint/Restore
PPTX
「DevOps with GitLab」でDevOps環境をセットアップしてみた!
PDF
Docker で Deep Learning
Cloud foundryのコミュニティを紹介するよ
Jenkins User Conference 東京 2015
Dockerの事例紹介
Ciじゃない方のJenkins
runC概要と使い方
Jenkinsユーザカンファレンス2015 前座資料
PaaS / Cloud Foundry makes you happy
ざっくり始めるCloud Native開発
コンテナ運用基盤 with OpenShift
 
Git & GitHub & kintone でウルトラハッピー!
Cloud Foundry Container-to-Container Networking
GitLabを16万8千光年ワープさせた話(改)
KubernetesとOpenShiftの話
Infrastrucure as a CodeにおけるJenkinsの役割
SI現場のテスト自動化への挑戦〜フルコンテナ構成のCI/CD環境〜
知って欲しいPaaSの話
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
Docker + Checkpoint/Restore
「DevOps with GitLab」でDevOps環境をセットアップしてみた!
Docker で Deep Learning
Ad

Viewers also liked (20)

PPTX
Theories andphil inedu
PPT
Dbhondoren 13 14
PPTX
Bacteria, part one
PDF
Free market update: 22/11/2012
PPTX
JumpToGoal opportunity analysis project
PDF
森理式ハッカソンのすすめ
PDF
Nanotubo gabriel artigo
PPTX
How to look for specific news publications using the e journal portal
PDF
Konsument göteborg zviedrijas vizīte
PDF
Steve Dean: Washing My Eyelids
PPTX
Traditional presentation styles of food
PPTX
περιβαλλοντικες οργανωσεις γεωργιάκου
PDF
Adrienne Andrew Slaughter: Carbless in Seattle
PPTX
What's the Half-Life of Your Data?
PDF
Communication Catalysts: Changing the World by Doing Our Jobs
PPTX
Reducing Tool Costs
PPTX
Broadband in my area
PDF
Nodig Moscow 2012 conference programme
PPTX
Harmonizing Data for the Warehouse
PPTX
Smart Lighting in Multipurpose Outdoor Environments: Energy Efficient Solutio...
Theories andphil inedu
Dbhondoren 13 14
Bacteria, part one
Free market update: 22/11/2012
JumpToGoal opportunity analysis project
森理式ハッカソンのすすめ
Nanotubo gabriel artigo
How to look for specific news publications using the e journal portal
Konsument göteborg zviedrijas vizīte
Steve Dean: Washing My Eyelids
Traditional presentation styles of food
περιβαλλοντικες οργανωσεις γεωργιάκου
Adrienne Andrew Slaughter: Carbless in Seattle
What's the Half-Life of Your Data?
Communication Catalysts: Changing the World by Doing Our Jobs
Reducing Tool Costs
Broadband in my area
Nodig Moscow 2012 conference programme
Harmonizing Data for the Warehouse
Smart Lighting in Multipurpose Outdoor Environments: Energy Efficient Solutio...
Ad

Similar to tweleve-factor-app_and_enterprise (20)

PDF
マイクロサービスに至る歴史とこれから - XP祭り2021
PDF
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
PDF
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
PDF
Microservicesを実現するために、インフラエンジニアと開発者がすべきこと
PDF
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
PDF
月間 250 億 imps 配信するために fluct が考えていること!
PDF
Force.com開発基礎
PDF
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
PDF
Cloud operator days tokyo 2020講演資料_少人数チームでの機械学習製品の効率的な開発と運用
PPTX
多対多のクラウド利用を支えるデータ標準化技術
PDF
[Developers Summit 2015 講演資料] リクルートテクノロジーズ 14,000件/秒の配信を実現した リクルートのモバイルアプリを支え...
PPTX
Docker webinar 20170616 - Modernize Traditional Apps with Docker Enterprise E...
PDF
Devsumi2013 14
PDF
20141003 webマーケティングエンジニアリング
PDF
チラシルiOSでの広告枠開発
PPTX
20170705 apiをつくろう
PDF
DevLOVE iPhoneアプリ勉強会
PPTX
誰もがアプリ開発に携われる時代へ ビジネスを加速させるローコードプラットフォーム Power Platform のご紹介
PDF
Applications made ​​with twelve factor-app
PPTX
Spring I/O 2015 報告
マイクロサービスに至る歴史とこれから - XP祭り2021
Spring I/O 2018 報告 RESTDocs RAML, Cloud Contract
SpotBugs(FindBugs)による 大規模ERPのコード品質改善
Microservicesを実現するために、インフラエンジニアと開発者がすべきこと
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
月間 250 億 imps 配信するために fluct が考えていること!
Force.com開発基礎
【16-E-4】残業ゼロで開発スピードが10倍に!もう元の開発体制には戻れないデンソー流のアジャイル開発
Cloud operator days tokyo 2020講演資料_少人数チームでの機械学習製品の効率的な開発と運用
多対多のクラウド利用を支えるデータ標準化技術
[Developers Summit 2015 講演資料] リクルートテクノロジーズ 14,000件/秒の配信を実現した リクルートのモバイルアプリを支え...
Docker webinar 20170616 - Modernize Traditional Apps with Docker Enterprise E...
Devsumi2013 14
20141003 webマーケティングエンジニアリング
チラシルiOSでの広告枠開発
20170705 apiをつくろう
DevLOVE iPhoneアプリ勉強会
誰もがアプリ開発に携われる時代へ ビジネスを加速させるローコードプラットフォーム Power Platform のご紹介
Applications made ​​with twelve factor-app
Spring I/O 2015 報告

tweleve-factor-app_and_enterprise