30
Applications made with Twelve-Factor-App For DevLove甲子園LT @koudaiii

Applications made with twelve factor-app for dev love甲子園lt

  • Upload
    -

  • View
    757

  • Download
    3

Embed Size (px)

DESCRIPTION

at 2014/08/23 DevLove甲子園LT用

Citation preview

Page 1: Applications made with twelve factor-app for dev love甲子園lt

Applications made with Twelve-Factor-App

For DevLove甲子園LT@koudaiii

Page 2: Applications made with twelve factor-app for dev love甲子園lt

Profile

id: koudaiii fullname: Kodai Sakabe

Page 3: Applications made with twelve factor-app for dev love甲子園lt

• https://speakerdeck.com/takai/continuous-delivery-in-cookpad

Page 4: Applications made with twelve factor-app for dev love甲子園lt

• https://speakerdeck.com/takai/continuous-delivery-in-cookpad

Page 5: Applications made with twelve factor-app for dev love甲子園lt

継続的にデリバリーできる 仕組みって?

Page 6: Applications made with twelve factor-app for dev love甲子園lt

Twelve-Factor AppWebApplication、SaaSを作り上げるための方法論

• http://twelve-factor-ja.herokuapp.com/

Page 7: Applications made with twelve factor-app for dev love甲子園lt

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)

Page 8: Applications made with twelve factor-app for dev love甲子園lt

CodeBase

• バージョン管理されている1つのコードベースと複数のデプロイ

• Git,SVN等

• 常に1対1の関係

Page 9: Applications made with twelve factor-app for dev love甲子園lt

Dependencies• 依存関係を明示的に宣言し分離する

• CPANやRubyGem等。~env系のツール

• すべての依存関係を 依存関係宣言 マニフェストで完全かつ厳密に宣言する(Gemfile)

• 宣言したものを利用する(bundle exec)

Page 10: Applications made with twelve factor-app for dev love甲子園lt

Config• 設定を環境変数に格納する

• アプリケーションの 設定 は、デプロイ(ステージング、本番、開発環境など)の間で異なり得る唯一のもの

• 設定をコードから厳密に分離すること

• 環境変数に格納(qt)または、dotenv等(database)を用いる

Page 11: Applications made with twelve factor-app for dev love甲子園lt

Disposability

• プロセス は 廃棄容易 であり即座に起動・終了することができる。

• 素早く柔軟なスケールと、コード や 設定 に対する変更の素早いデプロイを容易にし、本番デプロイの堅牢性を高める

Page 12: Applications made with twelve factor-app for dev love甲子園lt

Dev/prod parity• 開発、ステージング、本番環境をできるだけ一致させた状態を保つ

• 3つのギャップをなくす

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

• 人材のギャップ・・リリースは運用担当者

• ツールのギャップ・・開発と本番のMiddlewareが違う

Page 13: Applications made with twelve factor-app for dev love甲子園lt

Dev/prod parity(続き• 開発者が書いたコードは数時間後、さらには数分後にはデプロイされる

• コードを書いた開発者はそのコードのデプロイに深く関わり、そのコードの本番環境での挙動をモニタリングする。

• 継続的デプロイしやすいよう開発環境と本番環境のギャップを小さく保つ

Page 14: Applications made with twelve factor-app for dev love甲子園lt

CodeBase

Page 15: Applications made with twelve factor-app for dev love甲子園lt

Dependencies

Page 16: Applications made with twelve factor-app for dev love甲子園lt

Config

Page 17: Applications made with twelve factor-app for dev love甲子園lt

Disposabilityproviderを変えることで違う環境へ構築。または、

bundle exec knife solo bootstrap webapp等

Page 18: Applications made with twelve factor-app for dev love甲子園lt

Dev/prod parity同じBuild STEPで同じMiddleware。同じVagrantfile。

Page 19: Applications made with twelve factor-app for dev love甲子園lt

Continuous Integration

Page 20: Applications made with twelve factor-app for dev love甲子園lt

初期構築 6ヶ月!? ⇒ 30m

Page 21: Applications made with twelve factor-app for dev love甲子園lt

学習コスト 役割毎に分割

プロビジョニングログ ローカルで確認

上記から変に1から学ぶ必要がない

Page 22: Applications made with twelve factor-app for dev love甲子園lt

はまった作業は Commitメッセージ&コメント

Page 23: Applications made with twelve factor-app for dev love甲子園lt

commitにより、設定情報だけではなく、

なんのためにcommitしたかを追えるTagにより、アークテクチャーのバージョン管理

!!

Page 24: Applications made with twelve factor-app for dev love甲子園lt

リリース作業 bundle exec cap production deploy

Page 25: Applications made with twelve factor-app for dev love甲子園lt

環境を選ばない bundle exec knife solo bootstrap YourServer

Page 26: Applications made with twelve factor-app for dev love甲子園lt

ubuntu & CentOSの確認

bundle exec kitchen test

Page 27: Applications made with twelve factor-app for dev love甲子園lt

テスト済みのインフラ基盤 bundle exec rake spec

Page 28: Applications made with twelve factor-app for dev love甲子園lt
Page 29: Applications made with twelve factor-app for dev love甲子園lt

Next Step Blue-Green Deployment!

ChatOps!

Page 30: Applications made with twelve factor-app for dev love甲子園lt

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) 」