Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Kodai Sakabe
1,392 views
Applications made with twelve factor-app
ASTT、東産業Matsuriでの発表
Technology
◦
Read more
3
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 46
2
/ 46
3
/ 46
4
/ 46
5
/ 46
6
/ 46
7
/ 46
8
/ 46
9
/ 46
10
/ 46
11
/ 46
12
/ 46
13
/ 46
14
/ 46
15
/ 46
16
/ 46
17
/ 46
18
/ 46
19
/ 46
20
/ 46
21
/ 46
22
/ 46
23
/ 46
24
/ 46
25
/ 46
26
/ 46
27
/ 46
28
/ 46
29
/ 46
30
/ 46
31
/ 46
32
/ 46
33
/ 46
34
/ 46
35
/ 46
36
/ 46
37
/ 46
38
/ 46
39
/ 46
40
/ 46
41
/ 46
42
/ 46
43
/ 46
44
/ 46
45
/ 46
46
/ 46
More Related Content
PDF
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
by
Y Watanabe
PDF
Beyond the Twelve-Factor App
by
Kazuya Takahashi
PPTX
The Twelve-Factor App (2017)
by
Kihyun Kim
PDF
継続的デリバリー読書会資料 #1
by
Yusuke HIDESHIMA
PPTX
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
by
Yosuke Arai
PDF
クラウドが実現するソフト開発・運用の変革と自動化
by
Etsuji Nakai
PDF
Webアプリ開発向け ゆるふわDocker使いが Cloud Naive開発に必要なetc.
by
YASUKAZU NAGATOMI
PDF
クラウドセキュリティ基礎 #seccamp
by
Masahiro NAKAYAMA
Javaでやってみる The Twelve Factor App JJUG-CCC 2014 Fall 講演資料
by
Y Watanabe
Beyond the Twelve-Factor App
by
Kazuya Takahashi
The Twelve-Factor App (2017)
by
Kihyun Kim
継続的デリバリー読書会資料 #1
by
Yusuke HIDESHIMA
Cloud Native Appのデプロイ先に関する考察:VM? コンテナ? aPaaS? or Serverless?
by
Yosuke Arai
クラウドが実現するソフト開発・運用の変革と自動化
by
Etsuji Nakai
Webアプリ開発向け ゆるふわDocker使いが Cloud Naive開発に必要なetc.
by
YASUKAZU NAGATOMI
クラウドセキュリティ基礎 #seccamp
by
Masahiro NAKAYAMA
Similar to Applications made with twelve factor-app
PDF
Building Scalable Application on the Cloud
by
Keisuke Nishitani
PDF
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
by
智治 長沢
PDF
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
by
Ayumu Aizawa
PDF
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
by
Takashi Watanabe
PDF
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
by
Takuma SHIRAISHI
PDF
SGT技術トークス 継続的デリバリー
by
Yukei Wachi
PDF
tweleve-factor-app_and_enterprise
by
Naoto TAKAHASHI
PDF
20170418 aws black-belt-architecture_pattern_of_serverless
by
Amazon Web Services Japan
PPTX
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
by
真吾 吉田
PPTX
Continuous delivery chapter13
by
favril1
PDF
クラウドセキュリティ基礎
by
Masahiro NAKAYAMA
PDF
ワンクリックデプロイ101 #ocdeploy
by
Ryutaro YOSHIBA
PDF
雲の上の継続的デリバリー - Cloudforce Japan 2012
by
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
PDF
大崎的デリバリー第2章
by
Koji Takahara
PDF
雲の上の継続的デリバリー
by
Salesforce Developers Japan
PDF
エンタープライズアプリケーション品質向上のカギ -サービス仮想化と継続的デリバリー
by
Takashi Watanabe
PDF
The Twelve-Factor Appで考えるAWSのサービス開発
by
Amazon Web Services Japan
PDF
【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用
by
智治 長沢
PPTX
Continuous delivery 6
by
ShinyaOzawa
PDF
Heroku入門
by
Salesforce Developers Japan
Building Scalable Application on the Cloud
by
Keisuke Nishitani
Team Foundation Server ~ 今を生きるエンジニアのための開発基盤とは 【BPStudy #63】
by
智治 長沢
Ruby コミュニティの文化に学ぶエンタープライズシステム開発の処方箋
by
Ayumu Aizawa
継続的デリバリーとサービス仮想化で変わる、エンタープライズアジャイル開発
by
Takashi Watanabe
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
by
Takuma SHIRAISHI
SGT技術トークス 継続的デリバリー
by
Yukei Wachi
tweleve-factor-app_and_enterprise
by
Naoto TAKAHASHI
20170418 aws black-belt-architecture_pattern_of_serverless
by
Amazon Web Services Japan
サーバー管理よ、サヨウナラ。サーバーレス アーキテクチャの意義と実践
by
真吾 吉田
Continuous delivery chapter13
by
favril1
クラウドセキュリティ基礎
by
Masahiro NAKAYAMA
ワンクリックデプロイ101 #ocdeploy
by
Ryutaro YOSHIBA
雲の上の継続的デリバリー - Cloudforce Japan 2012
by
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
大崎的デリバリー第2章
by
Koji Takahara
雲の上の継続的デリバリー
by
Salesforce Developers Japan
エンタープライズアプリケーション品質向上のカギ -サービス仮想化と継続的デリバリー
by
Takashi Watanabe
The Twelve-Factor Appで考えるAWSのサービス開発
by
Amazon Web Services Japan
【Agile Forum in Gifu】 Visual Studio 2010 でみる、アジャイル開発における開発支援ツールの活用
by
智治 長沢
Continuous delivery 6
by
ShinyaOzawa
Heroku入門
by
Salesforce Developers Japan
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から学ぶ必要がない
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
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) 」
Download