SlideShare a Scribd company logo
1 of 192
Download to read offline
「実践!Infrastructure as Codeの取り組みと改善」
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.
株式会社サイバード
藤原 涼
本田 恭
Infrastructure as Code
Agenda
〜問題編〜
 インフラの歴史とサーバ構築概念化
〜改善編〜
 サーバ構築実践とAuto Scaling
Agenda 〜問題編〜
1: サービスの特徴
2: インフラの歴史
3: サーバ構築の概念化
自己紹介
● 藤原 涼
● 2012年新卒入社 (3年目)
● Twitter @megadreams14
● エンジニア
○ ソーシャルゲームの開発・運用
○ サーバ運用からフロントエンド開発まで幅広く担当
サービスの特徴
ソーシャルゲームの開発・運用
〜女性向け恋愛ソーシャルゲーム〜
恋愛ソーシャルゲームとは
華やかで
甘いストーリーが
楽しめる
http://ikemen.cybird.ne.jp/of/play.html
恋愛ソーシャルゲームとは
アバターなどを
着せ替えて可愛く
コーディネイト出来る
http://ikemen.cybird.ne.jp/of/play.html
私達が皆様にお約束すること
http://ikemen.cybird.ne.jp/of/message.html
リリース一覧
イケメンシリーズ
イケメン大奥 イケメン清盛 イケメン王宮
新章イケメン大奥 イケメン夜曲 イケメン幕末
イケメン王宮2 ラブセン
眠り姫イケメン王国
急激なアクセス増加による
サーバ負荷に耐える必要がある
恋愛ソーシャルゲームのインフラ事情
恋愛ソーシャルゲームのインフラ事情
2013年
2014年
2015年
夏
基本的に手動でサーバ構築
運用管理サービス
恋愛ソーシャルゲームのインフラ事情
2013年
2014年
2015年
夏
基本的に手動でサーバ構築
Chefの導入とサーバ構築自動化
運用管理サービス
ミドルウェアのインストール
環境に合わせた設定適用
ソースコードのデプロイ
画像のデプロイ
Zabbix Serverに追加
LBへの追加
https://www.chef.io/
http://jenkins-ci.org/
Chefが全体管理を行う
ミドルウェアのインストール
環境に合わせた設定適用
ソースコードのデプロイ
画像のデプロイ
Zabbix Serverに追加
LBへの追加
Chefを導入することで
● サーバ構築を自動化
● 構築手順の明確化
● 迅速なスケールアウト
サーバの自動構築が出来た
Auto Scaling対応したい!!
恋愛ソーシャルゲームのインフラ事情
2013年
2014年
2015年
夏
基本的に手動でサーバ構築
Chefの導入とサーバ構築自動化
秋
Auto Scaling導入
運用管理サービス
Auto Scaling運用当初
これまでのAuto Scaling
負荷情報を送信
http://www.blog.drvoip.com/wp-content/uploads/2015/01/awss31.png
これまでのAuto Scaling
負荷情報を送信
負荷検知
アラート発動
これまでのAuto Scaling
負荷情報を送信
負荷検知
アラート発動
AMIから起動
負荷情報を送信
負荷検知
アラート発動
AMIから起動連携しながら構築
これまでのAuto Scaling
負荷情報を送信
負荷検知
アラート発動
AMIから起動連携しながら構築本番稼働
これまでのAuto Scaling
ミドルウェアのインストール
環境に合わせた設定適用
ソースコードのデプロイ
画像のデプロイ
Zabbix Serverに追加
LBへの追加
起動用AMI
の作成
ミドルウェアのインストール
環境に合わせた設定適用
ソースコードのデプロイ
画像のデプロイ
Zabbix Serverに追加
LBへの追加
オートスケールで
起動したサーバに実行
これまでのオートスケール
負荷情報を送信
負荷検知
アラート発動
連携しながら構築 AMIを定期的に更新本番稼働
Auto Scalingを導入することで
● 負荷に合わせて自動でサーバを増減
○ 急激な負荷にも耐えられる
● スケジュール機能を利用したサーバ増減
○ スケジュールでサーバ増減
Auto Scalingを導入することで
運用効率化と機会損失の削減
● 負荷に合わせて自動でサーバを増減
○ 急激な負荷にも耐えられる
● スケジュール機能を利用したサーバ増減
○ スケジュールでサーバ増減
恋愛ソーシャルゲームインフラ事情
2013年
2014年
2015年
夏
基本的に手動でサーバ構築
Chefの導入とサーバ構築自動化
秋
Auto Scaling導入冬
サーバ構築自動化とAuto Scaling本格運用
運用管理サービス
slideshare autoscale ゲーム
http://goo.gl/i0cXfH
恋愛ソーシャルゲームインフラ事情
2013年
2014年
2015年
夏
基本的に手動でサーバ構築
Chefの導入とサーバ構築自動化
秋
Auto Scaling導入冬
サーバ構築自動化とAuto Scaling本格運用夏
サーバ構築の運用上の課題と改善
運用管理サービス
Chefによる
サーバ構築自動化での様々な問題
Chefが全体管理を行う
ミドルウェアのインストール
環境に合わせた設定適用
ソースコードのデプロイ
画像のデプロイ
Zabbix Serverに追加
LBへの追加
再 掲
1:構成管理ツールに全てを任せている
● Chefのレシピのコードの複雑化
○ Chefの役割が集中している
○ Cookbook同士が疎結合になっていない
○ 冪等性が担保されていない
● 外部サービスとの連携
○ サーバ内で完結しない処理もレシピ化
○ デプロイやロードバランサへの追加
2:運用上の課題
● Chef Serverとの接続エラー
○ 単一障害点、同時接続数問題
● Chefの実行結果を追跡しずらい
○ 実行したサーバに入らないとログが確認できない
問題点
● 構成管理ツールに全てを任せている
● 運用上の問題
Chefの役割を明確化し、
サーバ構築をもっと単純化したい
サーバ構築の理想イメージ図
他サービスと連携
?
サーバ内で完結
全体管理
?
サーバ構築の概念
Provisioning Toolchain
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
Provisioning Toolchain
● Bootstrapping
● Configuration
● Orchestration
Bootstrapping
● OSのインストールとサーバ起動
● Configurationを実行するための準備
OSのプロビジョニング
Bootstrapping
Configuration
Orchestration
Configuration
● ミドルウェアのセットアップ
● 対象サーバの役割に応じた設定
● サーバ単体で完結するような処理
システム構成のプロビジョニング
構成管理ツールが得意な領域
Bootstrapping
Configuration
Orchestration
Orchestration
● サーバ単体では完結しない処理を担う
○ GlusterFSのClusterに追加
○ Jenkinsからソースコードデプロイ
○ zabbix-agentの起動など
アプリケーションのプロビジョニング
Bootstrapping
Configuration
Orchestration
デプロイツールなどが得意な領域
サーバ構築における4つ目のレイヤー
Releasalization(造語)
● Orchestrationの処理内容をテスト
○ Serverspec
● サーバを本番環境に投入
○ LBに追加
サービス提供のプロビジョニング
Configuration
Bootstrapping
Releasalization
Orchestration
Bootstrapping
Releasalization
Orchestration
Configuration
Bootstrapping
Releasalization
Orchestration
Configuration
単純化・明確化
サーバ構築の理想イメージ図
他サービスと連携
?
サーバ内で完結
全体管理
?
再 掲
Bootstrapping
ReleasalizationOrchestrationConfiguration
Bootstrapping
ReleasalizationOrchestrationConfiguration
Jenkinsが全体制御
Bootstrapping
ReleasalizationOrchestrationConfiguration
Jenkinsが全体制御
シンプルかつレジリエント
恋愛ソーシャルゲームインフラ事情
2013年
2014年
夏
基本的に手動でサーバ構築
Chefの導入とサーバ構築自動化
秋
Auto Scaling導入冬
サーバ構築自動化とAuto Scaling本格運用
夏
サーバ構築の運用上の課題と改善
サーバ構築の概念化2015年
秋
冬
運用管理サービス
slideshare jenkins 役割 2015
http://goo.gl/dQozKz
恋愛ソーシャルゲームインフラ事情
2013年
2014年
2015年
夏
基本的に手動でサーバ構築
Chefの導入とサーバ構築自動化
秋
Auto Scaling導入冬
サーバ構築自動化とAuto Scaling本格運用
夏
サーバ構築の運用上の課題と改善
サーバ構築の概念化
秋
Auto Scaling見直し
冬
運用管理サービス
これまでのAuto Scalingの問題点
これまでのAuto Scalingの問題点
● 起動スクリプトで制御しなければいけない
● Auto Scaling機能で起動後すぐにELBに追加
● 起動用AMI作成の手間
起動スクリプトで
制御しなければいけない
〜問題1〜
本番稼働
負荷情報を送信
負荷検知
アラート発動
AMIから起動連携しながら構築
起動スクリプトで制御
● /etc/init.dでやっていること
○ サーバのホスト名の決定
○ Chefの実行制御(失敗制御など)
○ メール通知
● 手動起動の際にもChefが流れる
○ 間違って起動するとサービスに組み込まれる危険性
○ サーバ再起動で毎回処理が走る
起動スクリプトで制御
Auto Scaling機能では
起動後すぐにELBに追加される
〜問題2〜
起動したらELBに組み込まれる
負荷検知
アラート発動
サーバの状態 AMIから起動
起動したらELBに組み込まれる
サーバの状態
起動したタイミングで
ELBに組み込まれる
負荷検知
アラート発動
AMIから起動
起動したらELBに組み込まれる
サーバの状態
起動したタイミングで
ELBに組み込まれる
負荷検知
アラート発動
AMIから起動設定前に組み込みたくない
起動したらELBに組み込まれる
サーバの状態
負荷検知
アラート発動
起動後、
ELBから外す処理
AMIから起動
起動したらELBに組み込まれる
サーバの状態
負荷検知
アラート発動
AMIから起動
起動後、
ELBから外す処理
起動したらELBに組み込まれる
サーバの状態
負荷検知
アラート発動
AMIから起動
連携しながら構築
起動したらELBに組み込まれる
サーバの状態
負荷検知
アラート発動
AMIから起動
連携しながら構築
起動したらELBに組み込まれる
サーバの状態
負荷検知
アラート発動
AMIから起動
連携しながら構築
起動したらELBに組み込まれる
サーバの状態
負荷検知
アラート発動
AMIから起動
連携しながら構築
起動したらELBに組み込まれる
サーバの状態
負荷検知
アラート発動
AMIから起動
連携しながら構築
変則的なフローに嫌悪感
起動用AMI作成の手間
〜問題3〜
負荷情報を送信
負荷検知
アラート発動
連携しながら構築 AMIを定期的に更新本番稼働
起動用AMI作成の手間
● 起動AMI用のレシピをメンテナンスしていない
○ 基本的に初回作成時のみ
○ 随時手動で設定変更
● リソースデータの最新化の手間
○ 予め画像ファイルなどをダウンロード
○ 本番稼働前は、差分のみを適用
○ 画像の更新が多いため、差分がすぐに多くなる
起動用AMI作成の手間
● 起動スクリプトで制御しなければいけない
● Auto Scaling機能で起動後すぐにELBに追加
● 起動用AMI作成の手間
Auto Scalingの3つの問題
AMIは自動で
定期的に更新
起動スクリプト以外で
構築フローの実施
設定完了後に
ELBに組込
Auto Scaling理想イメージ図
?
恋愛ソーシャルゲームインフラ事情
2013年
2014年
2015年
夏
基本的に手動でサーバ構築
Chefの導入とサーバ構築自動化
秋
Auto Scaling導入冬
サーバ構築自動化とAuto Scaling本格運用
夏
サーバ構築の運用上の課題と改善
サーバ構築の概念化
秋
Auto Scaling見直し
冬
運用管理サービス
Auto Scaling運用とコスト削減取り組み
ここから「改善編」です
Agenda
〜問題編〜
 インフラの歴史とサーバ構築概念化
〜改善編〜
 サーバ構築実践とAuto Scaling
自己紹介
● 本田 恭 (ほんだ たかし)
● 2012年新卒入社 (3年目)
● Twitter: @Altsencturely
● インフラ系男子
Agenda 〜改善編〜
1: 各レイヤーの実践方法
2: Auto Scalingについて
3: やってみた結果
Agenda 〜改善編〜
1: 各レイヤーの実践方法
2: Auto Scalingについて
3: やってみた結果
Bootstrapping
Releasalization
Orchestration
Configuration
再 掲
レイヤー
● Bootstrapping
● Configuration
● Orchestration
● Releasalization
Bootstrapping
● OSのインストールとサーバ起動
● Configurationを実行するための準備
OSのプロビジョニング
Bootstrapping
Configuration
Orchestration
再 掲
Bootstrapping実践 -物理-
● Kickstartで実行
○ OSインストール
○ ディスクのパーティション設定
○ NICやRoutingの設定
○ SELinux無効化
○ 管理ユーザーの作成 (Chef実行ユーザー)
■ useradd
■ authorized_keys
Bootstrapping実践 -クラウド-
● Kickstartの内容を実行しイメージ化
○ OSの選択
○ Volume設定
○ Network Interface設定
○ SELinux無効化
○ 管理ユーザーの作成 (Chef実行ユーザー)
■ useradd
■ authorized_keys
物理 クラウド
共通
● SELinux無効化
● 管理ユーザーの作成 (Chef実行ユーザー)
● OSインストール
● パーティション
● NICやRouting
● OSの選択
● Volume設定
● Network設定
Bootstrapping実践
● Kickstartをベースに作業
○ 物理とクラウド両方で同じように考えられるように
● 最低限の作業のみ行う
○ ミドルウェアのインストールや設定は他のレイヤー
○ Chefが実行できる状態にするだけ
レイヤー
● Bootstrapping
● Configuration
● Orchestration
● Releasalization
Configuration
● ミドルウェアのセットアップ
● 対象サーバの役割に応じた設定
● サーバ単体で完結するような処理
システム構成のプロビジョニング
構成管理ツールが得意な領域
Bootstrapping
Configuration
Orchestration
再 掲
Configuration実践
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
Configuration実践
● Chef Soloの利用
○ Chef Server運用の問題を解決
● Jenkinsからknife solo実行
○ Chefの実行がより簡単になった
○ Chef実行結果ログがJenkins上で見られる
レイヤー
● Bootstrapping
● Configuration
● Orchestration
● Releasalization
Orchestration
● サーバ単体では完結しない処理を担う
○ GlusterFSのClusterに追加
○ Jenkinsからソースコードデプロイ
○ zabbix-agentの起動など
アプリケーションのプロビジョニング
Bootstrapping
Configuration
Orchestration
デプロイツールなどが得意な領域
再 掲
Orchestration実践
http://pocketstudio.jp.s3.amazonaws.com/log3/wp-content/uploads/2013/11/serf-logo.png
S E R F
Serfって何?
● Go言語製オーケストレーションツール
○ メンバーシップ
○ 障害検知と復旧
○ カスタムイベント伝播
○ https://serfdom.io/
● ゴシッププロトコル
これまでのSerfの利用方法
http://4.bp.blogspot.com/-XvJgBCygSCo/UxRl_TMQNlI/AAAAAAAAAWc/-ui0-NKM_70/s1600/logo.png
S E R F
slideshare autoscale ゲーム
http://goo.gl/MKgQPA
Orchestration実践
● Serf
○ イベントを受けて各Nodeでやりたい処理を実行
● Jenkins
○ サーバのSerfクラスタ参加イベントを検知
○ Serf経由でOrchestration処理イベント発火
Serfの便利機能
● Query
○ 実行結果をイベント発火者が取得できる
○ JenkinsがOrchestration処理の失敗を判定
● Tags
○ ‘KEY=VALUE’形式でNodeに情報を持たせる
○ ChefのRoleの要約を記述している
Serfの便利機能
● Query
○ 実行結果をイベント発火者が取得できる
○ JenkinsがOrchestration処理の失敗を判定
● Tags
○ ‘KEY=VALUE’形式でNodeに情報を持たせる
○ ChefのRoleの要約を記述している
ジョブの分岐と失敗判定
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
再 掲
Configuration実践
【実行レシピ(例)】
host名 [設定]
iptables [設定]
User [設定]
PHP [インストール]
ImageMagick [インストール]
Apache httpd [インストール]
GlusterFS [インストール]
Zabbix Agent [インストール]
Fluentd [インストール]
Chef
Repository
Serf [設定][起動]
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
Orchestration実践
Orchestration実践
Orchestration実践
Orchestration
ジョブ実行
Orchestration実践
SerfのTagで
ジョブ内容切り分け
Orchestration実践
【query】
httpd start
※-nodeで対象指定
Orchestration実践
【query】
httpd start
Orchestration実践
● SerfでConfigurationとOrchestrationを連携
○ ChefでSerfのインストールと起動
● JenkinsでOrchestration処理実行
○ Queryを使って成功/失敗の判断
○ 処理内容はTagsで分岐
レイヤー
● Bootstrapping
● Configuration
● Orchestration
● Releasalization
Releasalization(造語)
● Orchestrationの処理内容をテスト
○ Serverspec
● サーバを本番環境に投入
○ LBに追加
サービス提供のプロビジョニング
Configuration
Bootstrapping
Releasalization
Orchestration
再 掲
Serverspecって何?
● サーバ環境の自動テストフレームワーク
○ RSpecの機能を使って書ける
○ http://serverspec.org/
Orchestration実践
【query】
httpd start
再 掲
Releasalization実践
Serverspec
● Orchestrationの処理内容をテスト
○ Serfでhttpd起動 => httpdが起動しているか
● Configurationのテストは別途実施
○ Auto Scalingの話で紹介
Serverspecのテスト
Releasalization実践
LB追加
Releasalization実践
Releasalization実践
すべて成功したら本番環境投入
Releasalization実践
● Serverspecによるテスト
○ 中途半端なサーバを本番投入しなくてすむ
○ Orchestration処理の品質向上
● 全レイヤーの処理が成功すると本番投入
Bootstrapping
AMI/Kickstart
Releasalization
JOB JOB
Orchestration
JOB JOB
Configuration
JOB JOB
Releasalization
JOB JOB
Orchestration
JOB JOB
Configuration
JOB JOB
Bootstrapping
AMI/Kickstart
Releasalization
JOB JOB
Orchestration
JOB JOB
Configuration
JOB JOB
Bootstrapping
AMI/Kickstart
Serf
serf-members
Releasalization
JOB JOB
Orchestration
JOB JOB
Configuration
JOB JOB
【query】
httpd start
Bootstrapping
AMI/Kickstart
Releasalization
JOB JOB
Orchestration
JOB JOB
Configuration
JOB JOB
Serverspec
Bootstrapping
AMI/Kickstart
Releasalization
JOB JOB
Orchestration
JOB JOB
Configuration
JOB JOB
Bootstrapping
AMI/Kickstart
サーバ構築の理想イメージ図
他サービスと連携
?
サーバ内で完結
全体管理
?
再 掲
サーバ構築の理想イメージ図
他サービスと連携サーバ内で完結
全体管理
Agenda 〜改善編〜
1: 各レイヤーの実践方法
2: Auto Scalingについて
3: やってみた結果
● 起動スクリプトで制御しなければいけない
● Auto Scaling機能で起動後すぐにELBに追加
● 起動用AMI作成の手間
Auto Scalingの3つの問題
再 掲
再 掲
AMIは自動で
定期的に更新
起動スクリプト以外で
構築フローの実施
設定完了後に
ELBに組込
Auto Scaling理想イメージ図
?
AMIは自動で
定期的に更新
起動スクリプト以外で
構築フローの実施
設定完了後に
ELBに組込
Auto Scaling理想イメージ図
?
Auto ScalingでELBに入る前に
何か処理がしたい
Lifecycle Hook
Lifecycle Hook
● Auto Scalingの新機能の1つ
○ 2014年8月発表
● Auto ScalingのLifecycle内でインスタンスの状
態の制御と通知
http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/images/as-lifecycle-basic-diagram.png
Custom Action
Custom Action
Lifecycle Hook機能まとめ
● Auto Scalingの遷移でユーザーに通知
● 通知を受けてインスタンスへの処理が可能
● APIで終了を通知しAuto Scalingの処理継続
Lifecycle Hook
と
4つのレイヤー
Auto Scaling
Group
Auto Scaling
で起動開始
起動通知
SQS
SQS
取得
● Configuration
○ Chef
● Orchestration
○ デプロイ
○ サービス起動
● Releasalization
○ Serverspec
完了通知
グループへ
追加
サーバ追加
サーバ追加
ELB追加はAuto Scalingの機能
Lifecycle Hookのメリット
● JenkinsがAuto Scalingの発動を取れる
○ 各レイヤーの処理を自動化
● JenkinsとAWSの様々なプロダクトで完結
Lifecycle Hookにより解決したこと
● 起動スクリプトで制御
● 起動後すぐにELBに追加される
● 起動スクリプトで制御
● 起動後すぐにELBに追加される
Lifecycle Hookにより解決したこと
Auto Scalingを自然な形に
AMIは自動で
定期的に更新
起動スクリプト以外で
構築フローの実施
設定完了後に
ELBに組込
?
Auto Scaling理想イメージ図
再 掲
Auto Scaling理想イメージ図
起動スクリプト以外で
構築フローの実施
設定完了後に
ELBに組込
AMIは自動で
定期的に更新
Auto Scaling理想イメージ図
起動スクリプト以外で
構築フローの実施
設定完了後に
ELBに組込
AMIは自動で
定期的に更新
Auto Scaling理想イメージ図
起動スクリプト以外で
構築フローの実施
設定完了後に
ELBに組込
AMIは自動で
定期的に更新
● Configuration
○ Chef
● Orchestration
○ デプロイ
○ サービス起動
● Releasalization
○ Serverspec
再 掲
● Configuration
○ Chef
● Orchestration
○ デプロイ
○ サービス起動
● Releasalization
○ Serverspec
ChefとAMI連携の自動化
と
Auto Scalingの高速化
AMI作成編
Plug-in
AMI作成編
起動
AMI作成編
Chef/Serverspec
AMI作成編
Configurationのテストを実施
Chef/Serverspec
Chef/Serverspec
AMI作成編
【実行レシピ(例)】
host名 [設定]
iptables [設定]
User [設定]
PHP [インストール]
ImageMagick [インストール]
Apache httpd [インストール]
GlusterFS [インストール]
Zabbix Agent [インストール]
Fluentd [インストール]
Serf [設定][起動]
Chef/Serverspec
AMI作成編
【実行レシピ(例)】
host名 [設定]
iptables [設定]
User [設定]
PHP [インストール]
ImageMagick [インストール]
Apache httpd [インストール]
GlusterFS [インストール]
Zabbix Agent [インストール]
Fluentd [インストール]
Serf [設定][起動]
Chefはインストールと設定だけ
AMI作成編
ミドルウェア
(インストールと設定)
AMI作成編
デプロイ
AMI作成編
ミドルウェア
(インストールと設定)
リソース
(実行時の最新状態)
AMI作成編
AMI作成
AMI作成編
Auto Scaling
設定更新
【AMI作成時(例)】
host名 [設定]
iptables [設定]
User [設定]
PHP [インストール]
ImageMagick [インストール]
Apache httpd [インストール]
GlusterFS [インストール]
Zabbix Agent [インストール]
Fluentd [インストール]
Serf [設定][起動]
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 [設定][起動]
Configurationの時間短縮
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分)
【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の時間短縮
なるべく事前にやっておく
AMI問題の解決で得たこと
● Infrastructure as Codeの実現
○ AMIをChefで管理可能
○ テストも実行してChefのCIが可能
● Auto Scalingの失敗時の予防線
○ AMI自体のバージョン管理
○ 各種サービスを起動させれば本番と同じ
Auto Scaling理想イメージ図
AMIは自動で
定期的に更新
起動スクリプト以外で
構築フローの実施
設定完了後に
ELBに組込
Auto Scaling理想イメージ図
AMIは自動で
定期的に更新
起動スクリプト以外で
構築フローの実施
設定完了後に
ELBに組込自然な形でAuto Scalingの実装
Agenda 〜改善編〜
1: 各レイヤーの実践方法
2: Auto Scalingについて
3: やってみた結果
やってみた結果 -概念化-
● Chefが本番に影響しない
○ 他サービスと連携しないからテストやCIもできる
● Serfの機能でフローの制御
○ 失敗したら先に進まないようにできる
● 本番投入前にServerspecでテスト
○ 不完全なサーバは本番稼働させない
● Chefが本番に影響しない
○ 他サービスと連携しないからテストやCIもできる
● Serfの機能でフローの制御
○ 失敗したら先に進まないようにできる
● 本番投入前にServerspecでテスト
○ 不完全なサーバは本番稼働させない
サーバ構築の安定化
やってみた結果 -概念化-
やってみた結果 -Auto Scaling-
● 起動スクリプトの制御不要
○ JenkinsとLifecycle Hookの連携
● ChefとAMIで差分がなくなった
○ 手動で行っていたことのコード化
○ AMI自体のバージョン管理
● ChefのCIができるようになった
● 起動スクリプトの制御不要
○ JenkinsとLifecycle Hookの連携
● ChefとAMIで差分がなくなった
○ 手動で行っていたことのコード化
○ AMI自体のバージョン管理
● ChefのCIができるようになった
やってみた結果 -Auto Scaling-
Infrastructure as Code
やってみた結果 -改善について-
● 時間置いてからの改善大事
○ 運用していると不満や改善案がたくさん出る
○ 技術が進歩している
● 開発・運用とインフラで仲良くするの大事
○ インフラ側視点だけだと運用面で難あり
○ 開発・運用チーム視点だけだと他で使いまわせない
● 時間置いてからの改善大事
○ 運用していると不満や改善案がたくさん出る
○ 技術が進歩している
● 開発・運用とインフラで仲良くするの大事
○ インフラ側視点だけだと運用面で難あり
○ 開発・運用チーム視点だけだと他で使いまわせない
やってみた結果 -改善について-
チーム間の連携は大事
Growth!
Copyright 2015 CYBIRD Co., Ltd. All Rights Reserved.

More Related Content

What's hot

ドリコムのInfrastructure as code
ドリコムのInfrastructure as codeドリコムのInfrastructure as code
ドリコムのInfrastructure as code
Yosuke Hiraishi
 
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LTWeb Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Masahiro Nagano
 

What's hot (19)

コンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのかコンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのか
 
これからのOpenShiftの話をしよう
これからのOpenShiftの話をしようこれからのOpenShiftの話をしよう
これからのOpenShiftの話をしよう
 
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
 
今日からはじめるディープラーニング
今日からはじめるディープラーニング今日からはじめるディープラーニング
今日からはじめるディープラーニング
 
Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例Amazon EKS によるスマホゲームのバックエンド運用事例
Amazon EKS によるスマホゲームのバックエンド運用事例
 
ドリコムのInfrastructure as code
ドリコムのInfrastructure as codeドリコムのInfrastructure as code
ドリコムのInfrastructure as code
 
Chefのエンタープライズ事例 ossミドルウェアスタックishigakiテンプレートにおける事例-
Chefのエンタープライズ事例 ossミドルウェアスタックishigakiテンプレートにおける事例-Chefのエンタープライズ事例 ossミドルウェアスタックishigakiテンプレートにおける事例-
Chefのエンタープライズ事例 ossミドルウェアスタックishigakiテンプレートにおける事例-
 
CEDEC2015_OpenStack で運用する Private Cloud の泥臭い(リアル)な話
CEDEC2015_OpenStack で運用する Private Cloud の泥臭い(リアル)な話CEDEC2015_OpenStack で運用する Private Cloud の泥臭い(リアル)な話
CEDEC2015_OpenStack で運用する Private Cloud の泥臭い(リアル)な話
 
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
Dockerホスティング「Arukas」について(「さくらインターネット」のDockerホスティング「Arukas」と「Docker Machine」ドラ...
 
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LTWeb Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
Web Framework Benchmarksと Perl の現状報告会 YAPC::Asia Tokyo 2014 LT
 
すごいBOSHたのしく学ぼう
すごいBOSHたのしく学ぼうすごいBOSHたのしく学ぼう
すごいBOSHたのしく学ぼう
 
cloudpackサーバ仕様書(サンプル)
cloudpackサーバ仕様書(サンプル)cloudpackサーバ仕様書(サンプル)
cloudpackサーバ仕様書(サンプル)
 
Terraform Bootcamp - Azure Infrastructure as Code隊
Terraform Bootcamp - Azure Infrastructure as Code隊Terraform Bootcamp - Azure Infrastructure as Code隊
Terraform Bootcamp - Azure Infrastructure as Code隊
 
GCP vs 他社クラウド
GCP vs 他社クラウドGCP vs 他社クラウド
GCP vs 他社クラウド
 
go-apt-cacher/mirror
go-apt-cacher/mirrorgo-apt-cacher/mirror
go-apt-cacher/mirror
 
ProjectAtomic-and-geard
ProjectAtomic-and-geardProjectAtomic-and-geard
ProjectAtomic-and-geard
 
StackStorm Workflowの設計
StackStorm Workflowの設計StackStorm Workflowの設計
StackStorm Workflowの設計
 
自社クラウドサービスをAnsibleで作った話
自社クラウドサービスをAnsibleで作った話自社クラウドサービスをAnsibleで作った話
自社クラウドサービスをAnsibleで作った話
 
Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)Ansible ネットワーク自動化チュートリアル (JANOG42)
Ansible ネットワーク自動化チュートリアル (JANOG42)
 

Viewers also liked

師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013 師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013
hiboma
 

Viewers also liked (20)

達人プログラマーへの道
達人プログラマーへの道達人プログラマーへの道
達人プログラマーへの道
 
AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介
AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介
AWSでシステム構築工数を1/10にしつつ、高品質化も実現した枠組みのご紹介
 
仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法 仮想マシンを使った開発環境の簡単共有方法
仮想マシンを使った開発環境の簡単共有方法
 
Solaris Zone と Puppet、Serverspec でインフラ CI
Solaris Zone と Puppet、Serverspec でインフラ CI Solaris Zone と Puppet、Serverspec でインフラ CI
Solaris Zone と Puppet、Serverspec でインフラ CI
 
Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話
Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話
Infra as Code Sapppro Casual 札幌の開催趣旨とTest-Kitchenの話
 
Server specのご紹介
Server specのご紹介Server specのご紹介
Server specのご紹介
 
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストール
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストールAnsibleを使ってサーバ100台にBaculaクライアントを簡単インストール
Ansibleを使ってサーバ100台にBaculaクライアントを簡単インストール
 
師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013 師弟登壇・新米サムライの集い 2013
師弟登壇・新米サムライの集い 2013
 
Serverspec at Testing Framework Meeting
Serverspec at Testing Framework MeetingServerspec at Testing Framework Meeting
Serverspec at Testing Framework Meeting
 
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
Serverspecを使ってサーバ5000台のBaculaクライアントをテストServerspecを使ってサーバ5000台のBaculaクライアントをテスト
Serverspecを使ってサーバ5000台のBaculaクライアントをテスト
 
仕事を遊びにする自動化とガラクタプロダクト
仕事を遊びにする自動化とガラクタプロダクト仕事を遊びにする自動化とガラクタプロダクト
仕事を遊びにする自動化とガラクタプロダクト
 
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarbitamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
itamae + Serverspecで テスト駆動インフラやってみた #shibuyarb
 
ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例ペパボ福岡支社におけるRubyの活用事例
ペパボ福岡支社におけるRubyの活用事例
 
AWS Startup Tech Meetup #008 発表資料
AWS Startup Tech Meetup #008 発表資料AWS Startup Tech Meetup #008 発表資料
AWS Startup Tech Meetup #008 発表資料
 
[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話
[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話
[LT] インフラの人がChefやServerspec(ほか)が Rubyだったおかげですこし プログラムをするようになった話
 
Ansible の CI を drone/Dokcker で試してみた
Ansible の CI を drone/Dokcker で試してみたAnsible の CI を drone/Dokcker で試してみた
Ansible の CI を drone/Dokcker で試してみた
 
若手インフラエンジニア現状確認会 @hfm #wakateinfra
若手インフラエンジニア現状確認会 @hfm #wakateinfra若手インフラエンジニア現状確認会 @hfm #wakateinfra
若手インフラエンジニア現状確認会 @hfm #wakateinfra
 
The pragmatic programing 2.10 2.13
The pragmatic programing 2.10   2.13The pragmatic programing 2.10   2.13
The pragmatic programing 2.10 2.13
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
 
Serverspecの本気をみるのです
Serverspecの本気をみるのですServerspecの本気をみるのです
Serverspecの本気をみるのです
 

Similar to Infrastructure as Codeの取り組みと改善

泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
Akihiro Kuwano
 
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
Akihiro Kuwano
 
#01-03 solaris11で深化するクラウド
#01-03 solaris11で深化するクラウド#01-03 solaris11で深化するクラウド
#01-03 solaris11で深化するクラウド
SolarisJPNight
 

Similar to Infrastructure as Codeの取り組みと改善 (20)

Node-REDから見えた未来 - 変わるもの、変わらないもの -
Node-REDから見えた未来 - 変わるもの、変わらないもの -Node-REDから見えた未来 - 変わるもの、変わらないもの -
Node-REDから見えた未来 - 変わるもの、変わらないもの -
 
【15-B-L】Spinnakerで実現するデプロイの自動化
【15-B-L】Spinnakerで実現するデプロイの自動化【15-B-L】Spinnakerで実現するデプロイの自動化
【15-B-L】Spinnakerで実現するデプロイの自動化
 
スマホ版ログレスでグローバル展開を想定したサーバ構築をAnsibleで試してみた話
スマホ版ログレスでグローバル展開を想定したサーバ構築をAnsibleで試してみた話スマホ版ログレスでグローバル展開を想定したサーバ構築をAnsibleで試してみた話
スマホ版ログレスでグローバル展開を想定したサーバ構築をAnsibleで試してみた話
 
Microsoft Azure Update 20151112
Microsoft Azure Update 20151112Microsoft Azure Update 20151112
Microsoft Azure Update 20151112
 
Node-redでプロトタイピング
Node-redでプロトタイピングNode-redでプロトタイピング
Node-redでプロトタイピング
 
さくらのIoT Platformを使ってみよう ~OSC大阪編~
さくらのIoT Platformを使ってみよう ~OSC大阪編~さくらのIoT Platformを使ってみよう ~OSC大阪編~
さくらのIoT Platformを使ってみよう ~OSC大阪編~
 
Essentials of container
Essentials of containerEssentials of container
Essentials of container
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
20190319 xtech recochoku_15m_pub
20190319 xtech recochoku_15m_pub20190319 xtech recochoku_15m_pub
20190319 xtech recochoku_15m_pub
 
NCstudy 2.5
NCstudy 2.5NCstudy 2.5
NCstudy 2.5
 
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
オンプレエンジニアがクラウドエンジニアを夢見て。じっと手を見る。
 
CIサーバを制圧せよ! - プロジェクトメトリクスと自動化技術の活用よる混乱の収拾と「最強」の組織の育成
CIサーバを制圧せよ! - プロジェクトメトリクスと自動化技術の活用よる混乱の収拾と「最強」の組織の育成CIサーバを制圧せよ! - プロジェクトメトリクスと自動化技術の活用よる混乱の収拾と「最強」の組織の育成
CIサーバを制圧せよ! - プロジェクトメトリクスと自動化技術の活用よる混乱の収拾と「最強」の組織の育成
 
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Appsグリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
グリー株式会社『私たちが GCP を使い始めた本当の理由』第 9 回 Google Cloud INSIDE Game & Apps
 
私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由私たちがGCPを使い始めた本当の理由
私たちがGCPを使い始めた本当の理由
 
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
さくらのIoT Platformを使ってみよう ~Developers in KOBE編~
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
Microsoft MVP が語る Azure 移行の勘所
Microsoft MVP が語る Azure 移行の勘所Microsoft MVP が語る Azure 移行の勘所
Microsoft MVP が語る Azure 移行の勘所
 
#01-03 solaris11で深化するクラウド
#01-03 solaris11で深化するクラウド#01-03 solaris11で深化するクラウド
#01-03 solaris11で深化するクラウド
 
わんくま東京勉強会#46 Azureセッション資料
わんくま東京勉強会#46 Azureセッション資料わんくま東京勉強会#46 Azureセッション資料
わんくま東京勉強会#46 Azureセッション資料
 
わんくま東京勉強会#46 Azureセッション資料
わんくま東京勉強会#46 Azureセッション資料わんくま東京勉強会#46 Azureセッション資料
わんくま東京勉強会#46 Azureセッション資料
 

Infrastructure as Codeの取り組みと改善