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

1,010 views
939 views

Published on

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

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,010
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

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

  1. 1. Applications made with Twelve-Factor-App For DevLove甲子園LT @koudaiii
  2. 2. Profile id: koudaiii fullname: Kodai Sakabe
  3. 3. • https://speakerdeck.com/takai/continuous-delivery-in-cookpad
  4. 4. • https://speakerdeck.com/takai/continuous-delivery-in-cookpad
  5. 5. 継続的にデリバリーできる 仕組みって?
  6. 6. Twelve-Factor App WebApplication、SaaSを作り上げるための方法論 • http://twelve-factor-ja.herokuapp.com/
  7. 7. 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)
  8. 8. CodeBase • バージョン管理されている1つのコードベース と複数のデプロイ • Git,SVN等 • 常に1対1の関係
  9. 9. Dependencies • 依存関係を明示的に宣言し分離する • CPANやRubyGem等。~env系のツール • すべての依存関係を 依存関係宣言 マニフェス トで完全かつ厳密に宣言する(Gemfile) • 宣言したものを利用する(bundle exec)
  10. 10. Config • 設定を環境変数に格納する • アプリケーションの 設定 は、デプロイ(ステージン グ、本番、開発環境など)の間で異なり得る唯一のも の • 設定をコードから厳密に分離すること • 環境変数に格納(qt)または、dotenv等(database)を用 いる
  11. 11. Disposability • プロセス は 廃棄容易 であり即座に起動・終了 することができる。 • 素早く柔軟なスケールと、コード や 設定 に対 する変更の素早いデプロイを容易にし、本番 デプロイの堅牢性を高める
  12. 12. Dev/prod parity • 開発、ステージング、本番環境をできるだけ一致させ た状態を保つ • 3つのギャップをなくす • 時間のギャップ・・コードが本番に反映される時間 • 人材のギャップ・・リリースは運用担当者 • ツールのギャップ・・開発と本番のMiddlewareが違う
  13. 13. Dev/prod parity(続き • 開発者が書いたコードは数時間後、さらには 数分後にはデプロイされる • コードを書いた開発者はそのコードのデプロ イに深く関わり、そのコードの本番環境での 挙動をモニタリングする。 • 継続的デプロイしやすいよう開発環境と本番 環境のギャップを小さく保つ
  14. 14. CodeBase
  15. 15. Dependencies
  16. 16. Config
  17. 17. Disposability providerを変えることで違う環境へ構築。または、 bundle exec knife solo bootstrap webapp等
  18. 18. Dev/prod parity 同じBuild STEPで同じMiddleware。同じVagrantfile。
  19. 19. Continuous Integration
  20. 20. 初期構築 6ヶ月!?   30m
  21. 21. 学習コスト 役割毎に分割 プロビジョニングログ ローカルで確認 上記から変に1から学ぶ必要がない
  22. 22. はまった作業は Commitメッセージ&コメント
  23. 23. commitにより、設定情報だけではなく、 なんのためにcommitしたかを追える Tagにより、アークテクチャーのバージョン管理 ! !
  24. 24. リリース作業 bundle exec cap production deploy
  25. 25. 環境を選ばない bundle exec knife solo bootstrap YourServer
  26. 26. ubuntu & CentOSの確認 bundle exec kitchen test
  27. 27. テスト済みのインフラ基盤 bundle exec rake spec
  28. 28. Next Step Blue-Green Deployment! ChatOps!
  29. 29. 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) 」

×