Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Infrastructure as Codeの取り組みと改善

2,450 views

Published on

Developers Summit 2015にて登壇した際の資料です。

セッション:
http://event.shoeisha.jp/devsumi/20150219/session/710/

概要:
数年前よりChefやAnsibleといったProvisioning Toolsが広く話題となっています。
弊社では2013年にChefを導入、その後Chefでどこまで構築するか、テストはどうやって回すかを試行錯誤しながら取り組んできました。
そこで本セッションでは、実際に運用していく中で発生した課題をどのように解決していったかを、弊社におけるサーバ構築の概念を踏まえてお話します。

Published in: Internet
  • If you want to download or read this book, copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Infrastructure as Codeの取り組みと改善

  1. 1. 「実践!Infrastructure as Codeの取り組みと改善」 Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved. 株式会社サイバード 藤原 涼 本田 恭
  2. 2. Infrastructure as Code
  3. 3. Agenda 〜問題編〜  インフラの歴史とサーバ構築概念化 〜改善編〜  サーバ構築実践とAuto Scaling
  4. 4. Agenda 〜問題編〜 1: サービスの特徴 2: インフラの歴史 3: サーバ構築の概念化
  5. 5. 自己紹介 ● 藤原 涼 ● 2012年新卒入社 (3年目) ● Twitter @megadreams14 ● エンジニア ○ ソーシャルゲームの開発・運用 ○ サーバ運用からフロントエンド開発まで幅広く担当
  6. 6. サービスの特徴
  7. 7. ソーシャルゲームの開発・運用 〜女性向け恋愛ソーシャルゲーム〜
  8. 8. 恋愛ソーシャルゲームとは 華やかで 甘いストーリーが 楽しめる http://ikemen.cybird.ne.jp/of/play.html
  9. 9. 恋愛ソーシャルゲームとは アバターなどを 着せ替えて可愛く コーディネイト出来る http://ikemen.cybird.ne.jp/of/play.html
  10. 10. 私達が皆様にお約束すること http://ikemen.cybird.ne.jp/of/message.html
  11. 11. リリース一覧
  12. 12. イケメンシリーズ イケメン大奥 イケメン清盛 イケメン王宮 新章イケメン大奥 イケメン夜曲 イケメン幕末 イケメン王宮2 ラブセン 眠り姫イケメン王国
  13. 13. 急激なアクセス増加による サーバ負荷に耐える必要がある
  14. 14. 恋愛ソーシャルゲームのインフラ事情
  15. 15. 恋愛ソーシャルゲームのインフラ事情 2013年 2014年 2015年 夏 基本的に手動でサーバ構築 運用管理サービス
  16. 16. 恋愛ソーシャルゲームのインフラ事情 2013年 2014年 2015年 夏 基本的に手動でサーバ構築 Chefの導入とサーバ構築自動化 運用管理サービス
  17. 17. ミドルウェアのインストール 環境に合わせた設定適用 ソースコードのデプロイ 画像のデプロイ Zabbix Serverに追加 LBへの追加 https://www.chef.io/ http://jenkins-ci.org/
  18. 18. Chefが全体管理を行う ミドルウェアのインストール 環境に合わせた設定適用 ソースコードのデプロイ 画像のデプロイ Zabbix Serverに追加 LBへの追加
  19. 19. Chefを導入することで ● サーバ構築を自動化 ● 構築手順の明確化 ● 迅速なスケールアウト
  20. 20. サーバの自動構築が出来た Auto Scaling対応したい!!
  21. 21. 恋愛ソーシャルゲームのインフラ事情 2013年 2014年 2015年 夏 基本的に手動でサーバ構築 Chefの導入とサーバ構築自動化 秋 Auto Scaling導入 運用管理サービス
  22. 22. Auto Scaling運用当初
  23. 23. これまでのAuto Scaling 負荷情報を送信 http://www.blog.drvoip.com/wp-content/uploads/2015/01/awss31.png
  24. 24. これまでのAuto Scaling 負荷情報を送信 負荷検知 アラート発動
  25. 25. これまでのAuto Scaling 負荷情報を送信 負荷検知 アラート発動 AMIから起動
  26. 26. 負荷情報を送信 負荷検知 アラート発動 AMIから起動連携しながら構築 これまでのAuto Scaling
  27. 27. 負荷情報を送信 負荷検知 アラート発動 AMIから起動連携しながら構築本番稼働 これまでのAuto Scaling
  28. 28. ミドルウェアのインストール 環境に合わせた設定適用 ソースコードのデプロイ 画像のデプロイ Zabbix Serverに追加 LBへの追加 起動用AMI の作成
  29. 29. ミドルウェアのインストール 環境に合わせた設定適用 ソースコードのデプロイ 画像のデプロイ Zabbix Serverに追加 LBへの追加 オートスケールで 起動したサーバに実行
  30. 30. これまでのオートスケール 負荷情報を送信 負荷検知 アラート発動 連携しながら構築 AMIを定期的に更新本番稼働
  31. 31. Auto Scalingを導入することで ● 負荷に合わせて自動でサーバを増減 ○ 急激な負荷にも耐えられる ● スケジュール機能を利用したサーバ増減 ○ スケジュールでサーバ増減
  32. 32. Auto Scalingを導入することで 運用効率化と機会損失の削減 ● 負荷に合わせて自動でサーバを増減 ○ 急激な負荷にも耐えられる ● スケジュール機能を利用したサーバ増減 ○ スケジュールでサーバ増減
  33. 33. 恋愛ソーシャルゲームインフラ事情 2013年 2014年 2015年 夏 基本的に手動でサーバ構築 Chefの導入とサーバ構築自動化 秋 Auto Scaling導入冬 サーバ構築自動化とAuto Scaling本格運用 運用管理サービス
  34. 34. slideshare autoscale ゲーム http://goo.gl/i0cXfH
  35. 35. 恋愛ソーシャルゲームインフラ事情 2013年 2014年 2015年 夏 基本的に手動でサーバ構築 Chefの導入とサーバ構築自動化 秋 Auto Scaling導入冬 サーバ構築自動化とAuto Scaling本格運用夏 サーバ構築の運用上の課題と改善 運用管理サービス
  36. 36. Chefによる サーバ構築自動化での様々な問題
  37. 37. Chefが全体管理を行う ミドルウェアのインストール 環境に合わせた設定適用 ソースコードのデプロイ 画像のデプロイ Zabbix Serverに追加 LBへの追加 再 掲
  38. 38. 1:構成管理ツールに全てを任せている ● Chefのレシピのコードの複雑化 ○ Chefの役割が集中している ○ Cookbook同士が疎結合になっていない ○ 冪等性が担保されていない ● 外部サービスとの連携 ○ サーバ内で完結しない処理もレシピ化 ○ デプロイやロードバランサへの追加
  39. 39. 2:運用上の課題 ● Chef Serverとの接続エラー ○ 単一障害点、同時接続数問題 ● Chefの実行結果を追跡しずらい ○ 実行したサーバに入らないとログが確認できない
  40. 40. 問題点 ● 構成管理ツールに全てを任せている ● 運用上の問題 Chefの役割を明確化し、 サーバ構築をもっと単純化したい
  41. 41. サーバ構築の理想イメージ図 他サービスと連携 ? サーバ内で完結 全体管理 ?
  42. 42. サーバ構築の概念
  43. 43. Provisioning Toolchain
  44. 44. Orchestration Configuration Bootstrapping Application Service Deployment System Configuration Cloud or VM Image Launch OS Install [Provisioning Toolchain by Lee Thompson at Velocity 2010] 参考:http://kentana20.hatenablog.com/entry/2014/02/15/023158 Capistrano Fabric Puppet Chef EC2 OpenStack
  45. 45. Provisioning Toolchain ● Bootstrapping ● Configuration ● Orchestration
  46. 46. Bootstrapping ● OSのインストールとサーバ起動 ● Configurationを実行するための準備 OSのプロビジョニング Bootstrapping Configuration Orchestration
  47. 47. Configuration ● ミドルウェアのセットアップ ● 対象サーバの役割に応じた設定 ● サーバ単体で完結するような処理 システム構成のプロビジョニング 構成管理ツールが得意な領域 Bootstrapping Configuration Orchestration
  48. 48. Orchestration ● サーバ単体では完結しない処理を担う ○ GlusterFSのClusterに追加 ○ Jenkinsからソースコードデプロイ ○ zabbix-agentの起動など アプリケーションのプロビジョニング Bootstrapping Configuration Orchestration デプロイツールなどが得意な領域
  49. 49. サーバ構築における4つ目のレイヤー
  50. 50. Releasalization(造語) ● Orchestrationの処理内容をテスト ○ Serverspec ● サーバを本番環境に投入 ○ LBに追加 サービス提供のプロビジョニング Configuration Bootstrapping Releasalization Orchestration
  51. 51. Bootstrapping Releasalization Orchestration Configuration
  52. 52. Bootstrapping Releasalization Orchestration Configuration 単純化・明確化
  53. 53. サーバ構築の理想イメージ図 他サービスと連携 ? サーバ内で完結 全体管理 ? 再 掲
  54. 54. Bootstrapping ReleasalizationOrchestrationConfiguration
  55. 55. Bootstrapping ReleasalizationOrchestrationConfiguration Jenkinsが全体制御
  56. 56. Bootstrapping ReleasalizationOrchestrationConfiguration Jenkinsが全体制御 シンプルかつレジリエント
  57. 57. 恋愛ソーシャルゲームインフラ事情 2013年 2014年 夏 基本的に手動でサーバ構築 Chefの導入とサーバ構築自動化 秋 Auto Scaling導入冬 サーバ構築自動化とAuto Scaling本格運用 夏 サーバ構築の運用上の課題と改善 サーバ構築の概念化2015年 秋 冬 運用管理サービス
  58. 58. slideshare jenkins 役割 2015 http://goo.gl/dQozKz
  59. 59. 恋愛ソーシャルゲームインフラ事情 2013年 2014年 2015年 夏 基本的に手動でサーバ構築 Chefの導入とサーバ構築自動化 秋 Auto Scaling導入冬 サーバ構築自動化とAuto Scaling本格運用 夏 サーバ構築の運用上の課題と改善 サーバ構築の概念化 秋 Auto Scaling見直し 冬 運用管理サービス
  60. 60. これまでのAuto Scalingの問題点
  61. 61. これまでのAuto Scalingの問題点 ● 起動スクリプトで制御しなければいけない ● Auto Scaling機能で起動後すぐにELBに追加 ● 起動用AMI作成の手間
  62. 62. 起動スクリプトで 制御しなければいけない 〜問題1〜
  63. 63. 本番稼働 負荷情報を送信 負荷検知 アラート発動 AMIから起動連携しながら構築 起動スクリプトで制御
  64. 64. ● /etc/init.dでやっていること ○ サーバのホスト名の決定 ○ Chefの実行制御(失敗制御など) ○ メール通知 ● 手動起動の際にもChefが流れる ○ 間違って起動するとサービスに組み込まれる危険性 ○ サーバ再起動で毎回処理が走る 起動スクリプトで制御
  65. 65. Auto Scaling機能では 起動後すぐにELBに追加される 〜問題2〜
  66. 66. 起動したらELBに組み込まれる 負荷検知 アラート発動 サーバの状態 AMIから起動
  67. 67. 起動したらELBに組み込まれる サーバの状態 起動したタイミングで ELBに組み込まれる 負荷検知 アラート発動 AMIから起動
  68. 68. 起動したらELBに組み込まれる サーバの状態 起動したタイミングで ELBに組み込まれる 負荷検知 アラート発動 AMIから起動設定前に組み込みたくない
  69. 69. 起動したらELBに組み込まれる サーバの状態 負荷検知 アラート発動 起動後、 ELBから外す処理 AMIから起動
  70. 70. 起動したらELBに組み込まれる サーバの状態 負荷検知 アラート発動 AMIから起動 起動後、 ELBから外す処理
  71. 71. 起動したらELBに組み込まれる サーバの状態 負荷検知 アラート発動 AMIから起動 連携しながら構築
  72. 72. 起動したらELBに組み込まれる サーバの状態 負荷検知 アラート発動 AMIから起動 連携しながら構築
  73. 73. 起動したらELBに組み込まれる サーバの状態 負荷検知 アラート発動 AMIから起動 連携しながら構築
  74. 74. 起動したらELBに組み込まれる サーバの状態 負荷検知 アラート発動 AMIから起動 連携しながら構築
  75. 75. 起動したらELBに組み込まれる サーバの状態 負荷検知 アラート発動 AMIから起動 連携しながら構築 変則的なフローに嫌悪感
  76. 76. 起動用AMI作成の手間 〜問題3〜
  77. 77. 負荷情報を送信 負荷検知 アラート発動 連携しながら構築 AMIを定期的に更新本番稼働 起動用AMI作成の手間
  78. 78. ● 起動AMI用のレシピをメンテナンスしていない ○ 基本的に初回作成時のみ ○ 随時手動で設定変更 ● リソースデータの最新化の手間 ○ 予め画像ファイルなどをダウンロード ○ 本番稼働前は、差分のみを適用 ○ 画像の更新が多いため、差分がすぐに多くなる 起動用AMI作成の手間
  79. 79. ● 起動スクリプトで制御しなければいけない ● Auto Scaling機能で起動後すぐにELBに追加 ● 起動用AMI作成の手間 Auto Scalingの3つの問題
  80. 80. AMIは自動で 定期的に更新 起動スクリプト以外で 構築フローの実施 設定完了後に ELBに組込 Auto Scaling理想イメージ図 ?
  81. 81. 恋愛ソーシャルゲームインフラ事情 2013年 2014年 2015年 夏 基本的に手動でサーバ構築 Chefの導入とサーバ構築自動化 秋 Auto Scaling導入冬 サーバ構築自動化とAuto Scaling本格運用 夏 サーバ構築の運用上の課題と改善 サーバ構築の概念化 秋 Auto Scaling見直し 冬 運用管理サービス Auto Scaling運用とコスト削減取り組み
  82. 82. ここから「改善編」です
  83. 83. Agenda 〜問題編〜  インフラの歴史とサーバ構築概念化 〜改善編〜  サーバ構築実践とAuto Scaling
  84. 84. 自己紹介 ● 本田 恭 (ほんだ たかし) ● 2012年新卒入社 (3年目) ● Twitter: @Altsencturely ● インフラ系男子
  85. 85. Agenda 〜改善編〜 1: 各レイヤーの実践方法 2: Auto Scalingについて 3: やってみた結果
  86. 86. Agenda 〜改善編〜 1: 各レイヤーの実践方法 2: Auto Scalingについて 3: やってみた結果
  87. 87. Bootstrapping Releasalization Orchestration Configuration 再 掲
  88. 88. レイヤー ● Bootstrapping ● Configuration ● Orchestration ● Releasalization
  89. 89. Bootstrapping ● OSのインストールとサーバ起動 ● Configurationを実行するための準備 OSのプロビジョニング Bootstrapping Configuration Orchestration 再 掲
  90. 90. Bootstrapping実践 -物理- ● Kickstartで実行 ○ OSインストール ○ ディスクのパーティション設定 ○ NICやRoutingの設定 ○ SELinux無効化 ○ 管理ユーザーの作成 (Chef実行ユーザー) ■ useradd ■ authorized_keys
  91. 91. Bootstrapping実践 -クラウド- ● Kickstartの内容を実行しイメージ化 ○ OSの選択 ○ Volume設定 ○ Network Interface設定 ○ SELinux無効化 ○ 管理ユーザーの作成 (Chef実行ユーザー) ■ useradd ■ authorized_keys
  92. 92. 物理 クラウド 共通 ● SELinux無効化 ● 管理ユーザーの作成 (Chef実行ユーザー) ● OSインストール ● パーティション ● NICやRouting ● OSの選択 ● Volume設定 ● Network設定
  93. 93. Bootstrapping実践 ● Kickstartをベースに作業 ○ 物理とクラウド両方で同じように考えられるように ● 最低限の作業のみ行う ○ ミドルウェアのインストールや設定は他のレイヤー ○ Chefが実行できる状態にするだけ
  94. 94. レイヤー ● Bootstrapping ● Configuration ● Orchestration ● Releasalization
  95. 95. Configuration ● ミドルウェアのセットアップ ● 対象サーバの役割に応じた設定 ● サーバ単体で完結するような処理 システム構成のプロビジョニング 構成管理ツールが得意な領域 Bootstrapping Configuration Orchestration 再 掲
  96. 96. Configuration実践
  97. 97. Configuration実践 http://www.levihackwith.com/wp-content/uploads/2011/10/github-logo.png 【実行レシピ(例)】 host名 [設定] iptables [設定] User [設定] PHP [インストール] ImageMagick [インストール] Apache httpd [インストール] GlusterFS [インストール] Zabbix Agent [インストール] Fluentd [インストール] Serf [設定][起動] Chef Repository
  98. 98. Configuration実践 ● Chef Soloの利用 ○ Chef Server運用の問題を解決 ● Jenkinsからknife solo実行 ○ Chefの実行がより簡単になった ○ Chef実行結果ログがJenkins上で見られる
  99. 99. レイヤー ● Bootstrapping ● Configuration ● Orchestration ● Releasalization
  100. 100. Orchestration ● サーバ単体では完結しない処理を担う ○ GlusterFSのClusterに追加 ○ Jenkinsからソースコードデプロイ ○ zabbix-agentの起動など アプリケーションのプロビジョニング Bootstrapping Configuration Orchestration デプロイツールなどが得意な領域 再 掲
  101. 101. Orchestration実践 http://pocketstudio.jp.s3.amazonaws.com/log3/wp-content/uploads/2013/11/serf-logo.png S E R F
  102. 102. Serfって何? ● Go言語製オーケストレーションツール ○ メンバーシップ ○ 障害検知と復旧 ○ カスタムイベント伝播 ○ https://serfdom.io/ ● ゴシッププロトコル
  103. 103. これまでのSerfの利用方法 http://4.bp.blogspot.com/-XvJgBCygSCo/UxRl_TMQNlI/AAAAAAAAAWc/-ui0-NKM_70/s1600/logo.png S E R F
  104. 104. slideshare autoscale ゲーム http://goo.gl/MKgQPA
  105. 105. Orchestration実践 ● Serf ○ イベントを受けて各Nodeでやりたい処理を実行 ● Jenkins ○ サーバのSerfクラスタ参加イベントを検知 ○ Serf経由でOrchestration処理イベント発火
  106. 106. Serfの便利機能 ● Query ○ 実行結果をイベント発火者が取得できる ○ JenkinsがOrchestration処理の失敗を判定 ● Tags ○ ‘KEY=VALUE’形式でNodeに情報を持たせる ○ ChefのRoleの要約を記述している
  107. 107. Serfの便利機能 ● Query ○ 実行結果をイベント発火者が取得できる ○ JenkinsがOrchestration処理の失敗を判定 ● Tags ○ ‘KEY=VALUE’形式でNodeに情報を持たせる ○ ChefのRoleの要約を記述している ジョブの分岐と失敗判定
  108. 108. Configuration実践 http://www.levihackwith.com/wp-content/uploads/2011/10/github-logo.png 【実行レシピ(例)】 host名 [設定] iptables [設定] User [設定] PHP [インストール] ImageMagick [インストール] Apache httpd [インストール] GlusterFS [インストール] Zabbix Agent [インストール] Fluentd [インストール] Serf [設定][起動] Chef Repository 再 掲
  109. 109. Configuration実践 【実行レシピ(例)】 host名 [設定] iptables [設定] User [設定] PHP [インストール] ImageMagick [インストール] Apache httpd [インストール] GlusterFS [インストール] Zabbix Agent [インストール] Fluentd [インストール] Chef Repository Serf [設定][起動]
  110. 110. Orchestration実践 serf-members serf join Serf Cluster Serf http://s3-blog.the-new-it.com.s3.amazonaws.com/wp-content/uploads/2014/01/WPandS3Logos.png
  111. 111. Orchestration実践
  112. 112. Orchestration実践
  113. 113. Orchestration実践 Orchestration ジョブ実行
  114. 114. Orchestration実践 SerfのTagで ジョブ内容切り分け
  115. 115. Orchestration実践 【query】 httpd start ※-nodeで対象指定
  116. 116. Orchestration実践 【query】 httpd start
  117. 117. Orchestration実践 ● SerfでConfigurationとOrchestrationを連携 ○ ChefでSerfのインストールと起動 ● JenkinsでOrchestration処理実行 ○ Queryを使って成功/失敗の判断 ○ 処理内容はTagsで分岐
  118. 118. レイヤー ● Bootstrapping ● Configuration ● Orchestration ● Releasalization
  119. 119. Releasalization(造語) ● Orchestrationの処理内容をテスト ○ Serverspec ● サーバを本番環境に投入 ○ LBに追加 サービス提供のプロビジョニング Configuration Bootstrapping Releasalization Orchestration 再 掲
  120. 120. Serverspecって何? ● サーバ環境の自動テストフレームワーク ○ RSpecの機能を使って書ける ○ http://serverspec.org/
  121. 121. Orchestration実践 【query】 httpd start 再 掲
  122. 122. Releasalization実践 Serverspec
  123. 123. ● Orchestrationの処理内容をテスト ○ Serfでhttpd起動 => httpdが起動しているか ● Configurationのテストは別途実施 ○ Auto Scalingの話で紹介 Serverspecのテスト
  124. 124. Releasalization実践 LB追加
  125. 125. Releasalization実践
  126. 126. Releasalization実践 すべて成功したら本番環境投入
  127. 127. Releasalization実践 ● Serverspecによるテスト ○ 中途半端なサーバを本番投入しなくてすむ ○ Orchestration処理の品質向上 ● 全レイヤーの処理が成功すると本番投入
  128. 128. Bootstrapping AMI/Kickstart Releasalization JOB JOB Orchestration JOB JOB Configuration JOB JOB
  129. 129. Releasalization JOB JOB Orchestration JOB JOB Configuration JOB JOB Bootstrapping AMI/Kickstart
  130. 130. Releasalization JOB JOB Orchestration JOB JOB Configuration JOB JOB Bootstrapping AMI/Kickstart Serf serf-members
  131. 131. Releasalization JOB JOB Orchestration JOB JOB Configuration JOB JOB 【query】 httpd start Bootstrapping AMI/Kickstart
  132. 132. Releasalization JOB JOB Orchestration JOB JOB Configuration JOB JOB Serverspec Bootstrapping AMI/Kickstart
  133. 133. Releasalization JOB JOB Orchestration JOB JOB Configuration JOB JOB Bootstrapping AMI/Kickstart
  134. 134. サーバ構築の理想イメージ図 他サービスと連携 ? サーバ内で完結 全体管理 ? 再 掲
  135. 135. サーバ構築の理想イメージ図 他サービスと連携サーバ内で完結 全体管理
  136. 136. Agenda 〜改善編〜 1: 各レイヤーの実践方法 2: Auto Scalingについて 3: やってみた結果
  137. 137. ● 起動スクリプトで制御しなければいけない ● Auto Scaling機能で起動後すぐにELBに追加 ● 起動用AMI作成の手間 Auto Scalingの3つの問題 再 掲
  138. 138. 再 掲 AMIは自動で 定期的に更新 起動スクリプト以外で 構築フローの実施 設定完了後に ELBに組込 Auto Scaling理想イメージ図 ?
  139. 139. AMIは自動で 定期的に更新 起動スクリプト以外で 構築フローの実施 設定完了後に ELBに組込 Auto Scaling理想イメージ図 ?
  140. 140. Auto ScalingでELBに入る前に 何か処理がしたい
  141. 141. Lifecycle Hook
  142. 142. Lifecycle Hook ● Auto Scalingの新機能の1つ ○ 2014年8月発表 ● Auto ScalingのLifecycle内でインスタンスの状 態の制御と通知
  143. 143. http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/images/as-lifecycle-basic-diagram.png
  144. 144. Custom Action Custom Action
  145. 145. Lifecycle Hook機能まとめ ● Auto Scalingの遷移でユーザーに通知 ● 通知を受けてインスタンスへの処理が可能 ● APIで終了を通知しAuto Scalingの処理継続
  146. 146. Lifecycle Hook と 4つのレイヤー
  147. 147. Auto Scaling Group
  148. 148. Auto Scaling で起動開始
  149. 149. 起動通知 SQS
  150. 150. SQS 取得
  151. 151. ● Configuration ○ Chef ● Orchestration ○ デプロイ ○ サービス起動 ● Releasalization ○ Serverspec
  152. 152. 完了通知
  153. 153. グループへ 追加
  154. 154. サーバ追加
  155. 155. サーバ追加 ELB追加はAuto Scalingの機能
  156. 156. Lifecycle Hookのメリット ● JenkinsがAuto Scalingの発動を取れる ○ 各レイヤーの処理を自動化 ● JenkinsとAWSの様々なプロダクトで完結
  157. 157. Lifecycle Hookにより解決したこと ● 起動スクリプトで制御 ● 起動後すぐにELBに追加される
  158. 158. ● 起動スクリプトで制御 ● 起動後すぐにELBに追加される Lifecycle Hookにより解決したこと Auto Scalingを自然な形に
  159. 159. AMIは自動で 定期的に更新 起動スクリプト以外で 構築フローの実施 設定完了後に ELBに組込 ? Auto Scaling理想イメージ図 再 掲
  160. 160. Auto Scaling理想イメージ図 起動スクリプト以外で 構築フローの実施 設定完了後に ELBに組込 AMIは自動で 定期的に更新
  161. 161. Auto Scaling理想イメージ図 起動スクリプト以外で 構築フローの実施 設定完了後に ELBに組込 AMIは自動で 定期的に更新
  162. 162. Auto Scaling理想イメージ図 起動スクリプト以外で 構築フローの実施 設定完了後に ELBに組込 AMIは自動で 定期的に更新
  163. 163. ● Configuration ○ Chef ● Orchestration ○ デプロイ ○ サービス起動 ● Releasalization ○ Serverspec 再 掲
  164. 164. ● Configuration ○ Chef ● Orchestration ○ デプロイ ○ サービス起動 ● Releasalization ○ Serverspec
  165. 165. ChefとAMI連携の自動化 と Auto Scalingの高速化
  166. 166. AMI作成編 Plug-in
  167. 167. AMI作成編 起動
  168. 168. AMI作成編 Chef/Serverspec
  169. 169. AMI作成編 Configurationのテストを実施 Chef/Serverspec
  170. 170. Chef/Serverspec AMI作成編 【実行レシピ(例)】 host名 [設定] iptables [設定] User [設定] PHP [インストール] ImageMagick [インストール] Apache httpd [インストール] GlusterFS [インストール] Zabbix Agent [インストール] Fluentd [インストール] Serf [設定][起動]
  171. 171. Chef/Serverspec AMI作成編 【実行レシピ(例)】 host名 [設定] iptables [設定] User [設定] PHP [インストール] ImageMagick [インストール] Apache httpd [インストール] GlusterFS [インストール] Zabbix Agent [インストール] Fluentd [インストール] Serf [設定][起動] Chefはインストールと設定だけ
  172. 172. AMI作成編 ミドルウェア (インストールと設定)
  173. 173. AMI作成編 デプロイ
  174. 174. AMI作成編 ミドルウェア (インストールと設定) リソース (実行時の最新状態)
  175. 175. AMI作成編 AMI作成
  176. 176. AMI作成編 Auto Scaling 設定更新
  177. 177. 【AMI作成時(例)】 host名 [設定] iptables [設定] User [設定] PHP [インストール] ImageMagick [インストール] Apache httpd [インストール] GlusterFS [インストール] Zabbix Agent [インストール] Fluentd [インストール] Serf [設定][起動] Configurationの時間短縮
  178. 178. 【AMI作成時(例)】 host名 [設定] iptables [設定] User [設定] PHP [インストール] ImageMagick [インストール] Apache httpd [インストール] GlusterFS [インストール] Zabbix Agent [インストール] Fluentd [インストール] Serf [設定][起動] 【Auto Scaling(例)】 host名 [設定] iptables [設定] User [設定] PHP [インストール] ImageMagick [インストール] Apache httpd [インストール] GlusterFS [インストール] Zabbix Agent [インストール] Fluentd [インストール] Serf [設定][起動] Configurationの時間短縮
  179. 179. Configurationの時間短縮 【AMI作成時(例)】 host名 [設定] iptables [設定] User [設定] PHP [インストール] ImageMagick [インストール] Apache httpd [インストール] GlusterFS [インストール] Zabbix Agent [インストール] Fluentd [インストール] Serf [設定][起動] 【Auto Scaling(例)】 host名 [設定] iptables [設定] User [設定] PHP [インストール] ImageMagick [インストール] Apache httpd [インストール] GlusterFS [インストール] Zabbix Agent [インストール] Fluentd [インストール] Serf [設定][起動] 時間がかかる (10 - 15分) すぐに終わる (1 - 2分)
  180. 180. 【AMI作成時(例)】 host名 [設定] iptables [設定] User [設定] PHP [インストール] ImageMagick [インストール] Apache httpd [インストール] GlusterFS [インストール] Zabbix Agent [インストール] Fluentd [インストール] Serf [設定][起動] 【Auto Scaling(例)】 host名 [設定] iptables [設定] User [設定] PHP [インストール] ImageMagick [インストール] Apache httpd [インストール] GlusterFS [インストール] Zabbix Agent [インストール] Fluentd [インストール] Serf [設定][起動] Configurationの時間短縮 なるべく事前にやっておく
  181. 181. AMI問題の解決で得たこと ● Infrastructure as Codeの実現 ○ AMIをChefで管理可能 ○ テストも実行してChefのCIが可能 ● Auto Scalingの失敗時の予防線 ○ AMI自体のバージョン管理 ○ 各種サービスを起動させれば本番と同じ
  182. 182. Auto Scaling理想イメージ図 AMIは自動で 定期的に更新 起動スクリプト以外で 構築フローの実施 設定完了後に ELBに組込
  183. 183. Auto Scaling理想イメージ図 AMIは自動で 定期的に更新 起動スクリプト以外で 構築フローの実施 設定完了後に ELBに組込自然な形でAuto Scalingの実装
  184. 184. Agenda 〜改善編〜 1: 各レイヤーの実践方法 2: Auto Scalingについて 3: やってみた結果
  185. 185. やってみた結果 -概念化- ● Chefが本番に影響しない ○ 他サービスと連携しないからテストやCIもできる ● Serfの機能でフローの制御 ○ 失敗したら先に進まないようにできる ● 本番投入前にServerspecでテスト ○ 不完全なサーバは本番稼働させない
  186. 186. ● Chefが本番に影響しない ○ 他サービスと連携しないからテストやCIもできる ● Serfの機能でフローの制御 ○ 失敗したら先に進まないようにできる ● 本番投入前にServerspecでテスト ○ 不完全なサーバは本番稼働させない サーバ構築の安定化 やってみた結果 -概念化-
  187. 187. やってみた結果 -Auto Scaling- ● 起動スクリプトの制御不要 ○ JenkinsとLifecycle Hookの連携 ● ChefとAMIで差分がなくなった ○ 手動で行っていたことのコード化 ○ AMI自体のバージョン管理 ● ChefのCIができるようになった
  188. 188. ● 起動スクリプトの制御不要 ○ JenkinsとLifecycle Hookの連携 ● ChefとAMIで差分がなくなった ○ 手動で行っていたことのコード化 ○ AMI自体のバージョン管理 ● ChefのCIができるようになった やってみた結果 -Auto Scaling- Infrastructure as Code
  189. 189. やってみた結果 -改善について- ● 時間置いてからの改善大事 ○ 運用していると不満や改善案がたくさん出る ○ 技術が進歩している ● 開発・運用とインフラで仲良くするの大事 ○ インフラ側視点だけだと運用面で難あり ○ 開発・運用チーム視点だけだと他で使いまわせない
  190. 190. ● 時間置いてからの改善大事 ○ 運用していると不満や改善案がたくさん出る ○ 技術が進歩している ● 開発・運用とインフラで仲良くするの大事 ○ インフラ側視点だけだと運用面で難あり ○ 開発・運用チーム視点だけだと他で使いまわせない やってみた結果 -改善について- チーム間の連携は大事
  191. 191. Growth!
  192. 192. Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.

×