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

Post on 31-May-2015

759 views 3 download

Tags:

description

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

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

Applications made with Twelve-Factor-App

For DevLove甲子園LT@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 AppWebApplication、SaaSを作り上げるための方法論

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

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)を用いる

Disposability

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

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

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

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

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

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

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

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

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

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

CodeBase

Dependencies

Config

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

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

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