SlideShare a Scribd company logo
Copyright Drecom Co., Ltd. All Rights Reserved. 1
ドリコムの
Infrastructure as Code
2014.05.23
最新インフラエンジニア技術勉強会
Copyright Drecom Co., Ltd. All Rights Reserved. 2
名前
 ひらしー(とか狂犬?とか)
 出身:グンマー
所属
 サービス基盤本部 サービス基盤部 インフラグループ
職種
 インフラエンジニア
Copyright Drecom Co., Ltd. All Rights Reserved. 3
⁃ ドリコムのインフラ規模
⁃ Chef運用
⁃ コード管理
⁃ テスト駆動インフラ
Copyright Drecom Co., Ltd. All Rights Reserved. 4
ドリコムのインフラ規模
⁃ 1日の全アプリ合計PV
⁃ 1日の全アプリ合計DAU
1億以上
100万以上
Copyright Drecom Co., Ltd. All Rights Reserved. 5
ドリコムのインフラ規模
⁃ サーバ台数
ホスティング
クラウド
約300台
約1000台
Copyright Drecom Co., Ltd. All Rights Reserved. 6
ドリコムのインフラ規模
⁃ サーバ台数
1ヶ月の増加台数
約30台~50台
Copyright Drecom Co., Ltd. All Rights Reserved. 7
ドリコムのインフラ規模
⁃ 上記サーバを診るインフラエンジニア
Copyright Drecom Co., Ltd. All Rights Reserved. 8
ドリコムのインフラ規模
3人
Copyright Drecom Co., Ltd. All Rights Reserved. 9
ドリコムのインフラ規模
少人数で早く正確なインフラを回すには?
Copyright Drecom Co., Ltd. All Rights Reserved. 10
⁃ ドリコムのインフラ規模
⁃ Chef運用
⁃ コード管理
⁃ テスト駆動インフラ
Copyright Drecom Co., Ltd. All Rights Reserved. 11
Chefの運用方法
米国Chef社(旧: Opscode社)が開発
オープンソースとして公開されている
サーバの構成管理を行うフレームワーク
Copyright Drecom Co., Ltd. All Rights Reserved. 12
Chefの運用方法
⁃ 特徴
 Rubyで書ける(内部DSL)
 べき等性という考え方
 Rubyエンジニアが多いため、
構築状況が共有しやすい
Copyright Drecom Co., Ltd. All Rights Reserved. 13
Chefの運用方法
何度実行しても”nginx.conf.src”というChef管理のファイルと等しくなるべき
べき等性に沿った記述
Copyright Drecom Co., Ltd. All Rights Reserved. 14
Chefの運用方法
Chef-Server
Chef-Solo
Copyright Drecom Co., Ltd. All Rights Reserved. 15
Chefの運用方法
Chef-Server構成
※Chef社公式サイトから引用
Copyright Drecom Co., Ltd. All Rights Reserved. 16
Chefの運用方法
Chef-Solo構成
※Chef社公式サイトから引用
Copyright Drecom Co., Ltd. All Rights Reserved. 17
Chefの運用方法
Chef-Server
Chef-Solo
Copyright Drecom Co., Ltd. All Rights Reserved. 18
Chefの運用方法
⁃ Why
 以前はChef-Server構成だったが
 クライアント100台を超えたあたりからCouchDB
がボトルネックになった
※Chef11からPostgreSQLが採用された
 Chef-ServerとChef-Client連携による定期的収束
を既存サーバに適用できなかった
Copyright Drecom Co., Ltd. All Rights Reserved. 19
Chefの運用方法
⁃ Why
 プロビジョニング処理とサーバ情報の取得と
いう観点ではChef-Serverが必要ない
 現状Chef-Soloとシェルスクリプト
の組み合わせで十分
Copyright Drecom Co., Ltd. All Rights Reserved. 20
Chefの運用方法
ドリコムのChef開発フロー
Copyright Drecom Co., Ltd. All Rights Reserved. 21
Chefの運用方法
レシピの開発
Copyright Drecom Co., Ltd. All Rights Reserved. 22
22
CI
DC
DC
DC
本番環境
インフラメンバ
git push
Chefの運用方法
Copyright Drecom Co., Ltd. All Rights Reserved. 23
Chefの運用方法
GitLab
Copyright Drecom Co., Ltd. All Rights Reserved. 24
24
CI
DC
DC
DC
本番環境
GitLab
Chefの運用方法
インフラメンバ
Copyright Drecom Co., Ltd. All Rights Reserved. 25
Chefの運用方法
Jenkins
Copyright Drecom Co., Ltd. All Rights Reserved. 26
Chefの運用方法
Vagrant
vagrant snapshot back
OSインストール直後のスナップショット
vagrant provision
Chefの実行
Copyright Drecom Co., Ltd. All Rights Reserved. 27
Chefの運用方法
Foodcritic
Copyright Drecom Co., Ltd. All Rights Reserved. 28
Chefの運用方法
serverspec
nginxの状態をテストする例
Copyright Drecom Co., Ltd. All Rights Reserved. 29
29
CI
DC
DC
DC
本番環境
GitLab
Jenkins Vagrant
Chefの運用方法
インフラメンバ
Copyright Drecom Co., Ltd. All Rights Reserved. 30
30
CI
DC
DC
DC
本番環境
GitLab
Jenkins Vagrant
Chefの運用方法
インフラメンバ
Copyright Drecom Co., Ltd. All Rights Reserved. 31
31
CI
DC
DC
DC
本番環境
インフラメン
バ
GitLab
Jenkins Vagrant
Chefの運用方法
git push
Copyright Drecom Co., Ltd. All Rights Reserved. 32
32
CI
DC
DC
DC
本番環境
インフラメン
バ
GitLab
Jenkins Vagrant
Chefの運用方法
Copyright Drecom Co., Ltd. All Rights Reserved. 33
Rundeck
ホスト名やIPアドレスを正規表現で検索
Chefの運用方法
Zabbix-APIにて取得済のホスト情報
Copyright Drecom Co., Ltd. All Rights Reserved. 34
Rundeck
ホスト毎の実行結果
Chefの運用方法
Copyright Drecom Co., Ltd. All Rights Reserved. 35
35
CI
DC
DC
DC
本番環境
インフラメン
バ
GitLab
Jenkins Vagrant
Chefの運用方法
Copyright Drecom Co., Ltd. All Rights Reserved. 36
⁃ ドリコムのインフラ規模
⁃ Chef運用
⁃ コード管理
⁃ テスト駆動インフラ
Copyright Drecom Co., Ltd. All Rights Reserved. 37
コード管理
3つの
「○○ Driven Infrastracture」
Copyright Drecom Co., Ltd. All Rights Reserved. 38
コード管理
Issue Driven Infrastructure
Copyright Drecom Co., Ltd. All Rights Reserved. 39
コード管理
Pull Request Driven Infrastructure
Copyright Drecom Co., Ltd. All Rights Reserved. 40
コード管理
マサカリ Driven Infrastructure
Copyright Drecom Co., Ltd. All Rights Reserved. 41
⁃ ドリコムのインフラ規模
⁃ Chef運用
⁃ コード管理
⁃ テスト駆動インフラ
Copyright Drecom Co., Ltd. All Rights Reserved. 42
テスト駆動インフラ
テスト項目書 作業手順書
インフラ作業といえば…
Copyright Drecom Co., Ltd. All Rights Reserved. 43
テスト駆動インフラ
serverspecで作業項目を記載
GitLabを使ってコードレビュー
開発環境で実行・テスト
本番環境で実行・テスト
Copyright Drecom Co., Ltd. All Rights Reserved. 44
44
テストシナリオ(yaml)
drecom-serverspec
実行するserverspecファイルパス
テスト対象ホスト
テスト駆動インフラ
Copyright Drecom Co., Ltd. All Rights Reserved. 45
45
drecom-serverspec
テスト結果(コマンド出力)
テスト項目(describe)
テスト対象サーバ
テスト駆動インフラ
Copyright Drecom Co., Ltd. All Rights Reserved. 46
まとめ
Copyright Drecom Co., Ltd. All Rights Reserved. 47
少人数で早く正確なインフラを回すには?
Copyright Drecom Co., Ltd. All Rights Reserved. 48
⁃ 早
⁃ 正確
 Chefによるプロビジョニング自動化
 CIツールとserverspecによるテスト自動化
 PDCAサイクルによる品質管理
Copyright Drecom Co., Ltd. All Rights Reserved. 49
49
Plan
Do
Check
Action
Chef,serverspecのコードレビュー
Chef,Rundeckによる実行
serverspec実行
Chef,serverspecコード修正
Copyright Drecom Co., Ltd. All Rights Reserved. 50
その他雑感
Copyright Drecom Co., Ltd. All Rights Reserved. 51
⁃ Chef-Server
 Chef-Serverを有効に活用できている事例ってある?
⁃ Rundeck
 リモートサーバのオペレーション管理が便利すぎるのに無名
Copyright Drecom Co., Ltd. All Rights Reserved. 52
ご静聴ありがとうございました!!
Copyright Drecom Co., Ltd. All Rights Reserved. 53
会社概要
社名:
証券コー
ド:
本社:
電話番号:
社員数:
設立年月
日:
資本金:
事業内容:
株式会社ドリコム
3793 東証マザーズ
〒153-0064
東京都目黒区下目黒1丁目8-1 アルコタワー17F
TEL:03-6682-5700 FAX:03-6682-5711
239名 (正社員・契約社員のみ)
2001年11月13日
1,124百万円
(2014年3月末現在)
ソーシャルゲーム事業
ソーシャルラーニング事業
アドソリューション事業
Copyright Drecom Co., Ltd. All Rights Reserved.

More Related Content

PDF
これからはじめるインフラエンジニア
外道 父
 
PDF
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
賢 秋穂
 
PDF
AWSスポットインスタンスの真髄
外道 父
 
PDF
hb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_auto
Yuichiro Saito
 
PDF
cloudpackサーバ仕様書(サンプル)
iret, Inc.
 
PDF
Fluentd Meetup #2 @外道父 Fluentdを優しく見守る監視事例
外道 父
 
PDF
[JANOG35.5] WhiteBox SW検証 ~サーバサイド編~
gree_tech
 
PPTX
go-apt-cacher/mirror
yutannihilation
 
これからはじめるインフラエンジニア
外道 父
 
テスト駆動インフラ構築-Chefとserverspecを使ったインフラ自動化のすすめ-
賢 秋穂
 
AWSスポットインスタンスの真髄
外道 父
 
hb-agent 秘伝のタレからソースコードへ (ITインフラ 業務自動化現状確認会 ) #infra_auto
Yuichiro Saito
 
cloudpackサーバ仕様書(サンプル)
iret, Inc.
 
Fluentd Meetup #2 @外道父 Fluentdを優しく見守る監視事例
外道 父
 
[JANOG35.5] WhiteBox SW検証 ~サーバサイド編~
gree_tech
 
go-apt-cacher/mirror
yutannihilation
 

What's hot (19)

DOC
AWSインスタンス設定手順書
iret, Inc.
 
PDF
Cloudera impala
外道 父
 
PDF
AutoScale×ゲーム ~運用効率化への取り組み~
Takashi Honda
 
PPTX
Prometheus入門から運用まで徹底解説
貴仁 大和屋
 
PDF
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
Drecom Co., Ltd.
 
PDF
ソーシャルアプリを分析してみた
Drecom Co., Ltd.
 
PPTX
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech
 
PDF
VyOSでMPLS
雄也 日下部
 
PPTX
[社内勉強会]ELBとALBと数万スパイク負荷テスト
Takahiro Moteki
 
PDF
インフラエンジニア勉強会hbstudyについて
Toshiaki Baba
 
KEY
activerecord-turntable
Drecom Co., Ltd.
 
PDF
Chefのエンタープライズ事例 ossミドルウェアスタックishigakiテンプレートにおける事例-
賢 秋穂
 
PPTX
ペネトレーションツール Penetratorご紹介
Bluestar Corporation
 
PDF
NetOpsCoding#5 introduction
Taiji Tsuchiya
 
PPTX
プレゼン インフラエンジニア、アプリ開発者集まれ!今注目のクラウド 「Bluemix」、「soft layer」をはじめよう!(OSC福岡2015)
Yasushi Osonoi
 
PDF
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
 
PPTX
VIRLとPyATSで実現するネットワークCI
tetsusat
 
PPTX
Japan Container Day 2018
Yoshio Terada
 
PDF
Infrastrucure as a CodeにおけるJenkinsの役割
Takashi Honda
 
AWSインスタンス設定手順書
iret, Inc.
 
Cloudera impala
外道 父
 
AutoScale×ゲーム ~運用効率化への取り組み~
Takashi Honda
 
Prometheus入門から運用まで徹底解説
貴仁 大和屋
 
CEDEC 2015 Cocos2d-x と社内基盤の付き合い方 〜アップストリームファーストを目指して〜
Drecom Co., Ltd.
 
ソーシャルアプリを分析してみた
Drecom Co., Ltd.
 
Amazon EKS によるスマホゲームのバックエンド運用事例
gree_tech
 
VyOSでMPLS
雄也 日下部
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
Takahiro Moteki
 
インフラエンジニア勉強会hbstudyについて
Toshiaki Baba
 
activerecord-turntable
Drecom Co., Ltd.
 
Chefのエンタープライズ事例 ossミドルウェアスタックishigakiテンプレートにおける事例-
賢 秋穂
 
ペネトレーションツール Penetratorご紹介
Bluestar Corporation
 
NetOpsCoding#5 introduction
Taiji Tsuchiya
 
プレゼン インフラエンジニア、アプリ開発者集まれ!今注目のクラウド 「Bluemix」、「soft layer」をはじめよう!(OSC福岡2015)
Yasushi Osonoi
 
2014年を振り返る 今年の技術トレンドとDockerについて
Masahito Zembutsu
 
VIRLとPyATSで実現するネットワークCI
tetsusat
 
Japan Container Day 2018
Yoshio Terada
 
Infrastrucure as a CodeにおけるJenkinsの役割
Takashi Honda
 
Ad

Viewers also liked (19)

PDF
Simple Energy Brand Book
Brooke Webster
 
PDF
シリコンバレーと世界のPerlエンジニア #yapcasia @kawanet
Yusuke Kawasaki
 
KEY
エンジニア生存戦略
Drecom Co., Ltd.
 
PDF
とある診断員とSQLインジェクション
zaki4649
 
PDF
人と向き合うプロトタイピング
wariemon
 
PPTX
Nike- Strategic analysis
Fractal Analytics
 
PDF
【データアーティスト株式会社】5歳の娘でもわかるDMP
Satoru Yamamoto
 
PDF
DMP勉強会
Shoho Kozawa
 
PDF
The Drift Brand Book
Drift
 
PDF
アドテク勉強会
Shoho Kozawa
 
PDF
お金をかけないランディングページのつくりかた
Satoru Yamamoto
 
PDF
ITエンジニアに易しいUI/UXデザイン
Roy Kim
 
PDF
Slideshareで見つけた「読みやすい・見やすいスライド」に共通する4つのポイント
Taichi Hirano
 
PDF
カヤックコピー部のコピー講座
コピーライターはせがわ てつじ
 
PDF
分かりやすく、使いやすいデザインを生み出す工夫 先生:池田 拓司
schoowebcampus
 
PDF
コンテンツ作りの三原則
INFOBAHN.inc(株式会社インフォバーン)
 
PDF
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識
Tsutomu Sogitani
 
PDF
見やすいプレゼン資料の作り方 - リニューアル増量版
MOCKS | Yuta Morishige
 
PPTX
Top 5 Deep Learning and AI Stories - October 6, 2017
NVIDIA
 
Simple Energy Brand Book
Brooke Webster
 
シリコンバレーと世界のPerlエンジニア #yapcasia @kawanet
Yusuke Kawasaki
 
エンジニア生存戦略
Drecom Co., Ltd.
 
とある診断員とSQLインジェクション
zaki4649
 
人と向き合うプロトタイピング
wariemon
 
Nike- Strategic analysis
Fractal Analytics
 
【データアーティスト株式会社】5歳の娘でもわかるDMP
Satoru Yamamoto
 
DMP勉強会
Shoho Kozawa
 
The Drift Brand Book
Drift
 
アドテク勉強会
Shoho Kozawa
 
お金をかけないランディングページのつくりかた
Satoru Yamamoto
 
ITエンジニアに易しいUI/UXデザイン
Roy Kim
 
Slideshareで見つけた「読みやすい・見やすいスライド」に共通する4つのポイント
Taichi Hirano
 
カヤックコピー部のコピー講座
コピーライターはせがわ てつじ
 
分かりやすく、使いやすいデザインを生み出す工夫 先生:池田 拓司
schoowebcampus
 
コンテンツ作りの三原則
INFOBAHN.inc(株式会社インフォバーン)
 
ビジネスマン必見!キレイな提案書を作るためのデザインの基礎知識
Tsutomu Sogitani
 
見やすいプレゼン資料の作り方 - リニューアル増量版
MOCKS | Yuta Morishige
 
Top 5 Deep Learning and AI Stories - October 6, 2017
NVIDIA
 
Ad

Similar to ドリコムのInfrastructure as code (20)

PDF
drecomにおけるwinning the metrics battle
Mitsuki Kenichi
 
PDF
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
Drecom Co., Ltd.
 
PDF
ドリコムのインフラCI
Go Sueyoshi (a.k.a sue445)
 
PDF
ドリコムJenkins勉強会資料
Go Sueyoshi (a.k.a sue445)
 
PDF
こんな辛いテストはいやだ
Takuya Mikami
 
PPTX
Rails on GKEで運用するWebアプリケーションの紹介
Makoto Haruyama
 
PDF
プライベートクラウド作ってみました
Koji Hasebe
 
PPTX
サーバーレスで ガチ本番運用までやってるお話し
Akira Nagata
 
PPTX
コンテナの基本 ~Docker実践~
Ryosuke Uchiyama
 
PDF
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Hironobu Isoda
 
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
 
PDF
ドリコムを支える課金ライブラリを支えるJenkins
Go Sueyoshi (a.k.a sue445)
 
PDF
Docker事始めと最新動向 2015年6月
Emma Haruka Iwao
 
PDF
cndjp: 「Microclimate」by capsmalt
capsmalt
 
PDF
RANCHERを使ったDev(Ops)
Recruit Technologies
 
PPTX
クラウド概要 by Engine Yard
Yu Kitazume
 
PPTX
技術選択とアーキテクトの役割
Toru Yamaguchi
 
PDF
「AROW」お披露目(実用編)
Drecom Co., Ltd.
 
PDF
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
Shuji Yamada
 
PDF
Paa s and oss
Yusuke Ando
 
drecomにおけるwinning the metrics battle
Mitsuki Kenichi
 
[CEDEC2014]モバイルゲームにおける社内基盤開発と“実録”
Drecom Co., Ltd.
 
ドリコムのインフラCI
Go Sueyoshi (a.k.a sue445)
 
ドリコムJenkins勉強会資料
Go Sueyoshi (a.k.a sue445)
 
こんな辛いテストはいやだ
Takuya Mikami
 
Rails on GKEで運用するWebアプリケーションの紹介
Makoto Haruyama
 
プライベートクラウド作ってみました
Koji Hasebe
 
サーバーレスで ガチ本番運用までやってるお話し
Akira Nagata
 
コンテナの基本 ~Docker実践~
Ryosuke Uchiyama
 
Logicadの秒間16万リクエストをさばく広告入札システムにおける、gRPCの活用事例
Hironobu Isoda
 
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
 
ドリコムを支える課金ライブラリを支えるJenkins
Go Sueyoshi (a.k.a sue445)
 
Docker事始めと最新動向 2015年6月
Emma Haruka Iwao
 
cndjp: 「Microclimate」by capsmalt
capsmalt
 
RANCHERを使ったDev(Ops)
Recruit Technologies
 
クラウド概要 by Engine Yard
Yu Kitazume
 
技術選択とアーキテクトの役割
Toru Yamaguchi
 
「AROW」お披露目(実用編)
Drecom Co., Ltd.
 
2015-07-27 Docker Introduction 〜Dockerの基礎とユースケースに関する考察〜
Shuji Yamada
 
Paa s and oss
Yusuke Ando
 

Recently uploaded (10)

PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
20250730_QiitaBash_LT登壇資料_PDC_Kurashina.pdf
pdckurashina
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
20250729_Devin-for-Enterprise
Masaki Yamakawa
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 

ドリコムのInfrastructure as code

  • 1. Copyright Drecom Co., Ltd. All Rights Reserved. 1 ドリコムの Infrastructure as Code 2014.05.23 最新インフラエンジニア技術勉強会
  • 2. Copyright Drecom Co., Ltd. All Rights Reserved. 2 名前  ひらしー(とか狂犬?とか)  出身:グンマー 所属  サービス基盤本部 サービス基盤部 インフラグループ 職種  インフラエンジニア
  • 3. Copyright Drecom Co., Ltd. All Rights Reserved. 3 ⁃ ドリコムのインフラ規模 ⁃ Chef運用 ⁃ コード管理 ⁃ テスト駆動インフラ
  • 4. Copyright Drecom Co., Ltd. All Rights Reserved. 4 ドリコムのインフラ規模 ⁃ 1日の全アプリ合計PV ⁃ 1日の全アプリ合計DAU 1億以上 100万以上
  • 5. Copyright Drecom Co., Ltd. All Rights Reserved. 5 ドリコムのインフラ規模 ⁃ サーバ台数 ホスティング クラウド 約300台 約1000台
  • 6. Copyright Drecom Co., Ltd. All Rights Reserved. 6 ドリコムのインフラ規模 ⁃ サーバ台数 1ヶ月の増加台数 約30台~50台
  • 7. Copyright Drecom Co., Ltd. All Rights Reserved. 7 ドリコムのインフラ規模 ⁃ 上記サーバを診るインフラエンジニア
  • 8. Copyright Drecom Co., Ltd. All Rights Reserved. 8 ドリコムのインフラ規模 3人
  • 9. Copyright Drecom Co., Ltd. All Rights Reserved. 9 ドリコムのインフラ規模 少人数で早く正確なインフラを回すには?
  • 10. Copyright Drecom Co., Ltd. All Rights Reserved. 10 ⁃ ドリコムのインフラ規模 ⁃ Chef運用 ⁃ コード管理 ⁃ テスト駆動インフラ
  • 11. Copyright Drecom Co., Ltd. All Rights Reserved. 11 Chefの運用方法 米国Chef社(旧: Opscode社)が開発 オープンソースとして公開されている サーバの構成管理を行うフレームワーク
  • 12. Copyright Drecom Co., Ltd. All Rights Reserved. 12 Chefの運用方法 ⁃ 特徴  Rubyで書ける(内部DSL)  べき等性という考え方  Rubyエンジニアが多いため、 構築状況が共有しやすい
  • 13. Copyright Drecom Co., Ltd. All Rights Reserved. 13 Chefの運用方法 何度実行しても”nginx.conf.src”というChef管理のファイルと等しくなるべき べき等性に沿った記述
  • 14. Copyright Drecom Co., Ltd. All Rights Reserved. 14 Chefの運用方法 Chef-Server Chef-Solo
  • 15. Copyright Drecom Co., Ltd. All Rights Reserved. 15 Chefの運用方法 Chef-Server構成 ※Chef社公式サイトから引用
  • 16. Copyright Drecom Co., Ltd. All Rights Reserved. 16 Chefの運用方法 Chef-Solo構成 ※Chef社公式サイトから引用
  • 17. Copyright Drecom Co., Ltd. All Rights Reserved. 17 Chefの運用方法 Chef-Server Chef-Solo
  • 18. Copyright Drecom Co., Ltd. All Rights Reserved. 18 Chefの運用方法 ⁃ Why  以前はChef-Server構成だったが  クライアント100台を超えたあたりからCouchDB がボトルネックになった ※Chef11からPostgreSQLが採用された  Chef-ServerとChef-Client連携による定期的収束 を既存サーバに適用できなかった
  • 19. Copyright Drecom Co., Ltd. All Rights Reserved. 19 Chefの運用方法 ⁃ Why  プロビジョニング処理とサーバ情報の取得と いう観点ではChef-Serverが必要ない  現状Chef-Soloとシェルスクリプト の組み合わせで十分
  • 20. Copyright Drecom Co., Ltd. All Rights Reserved. 20 Chefの運用方法 ドリコムのChef開発フロー
  • 21. Copyright Drecom Co., Ltd. All Rights Reserved. 21 Chefの運用方法 レシピの開発
  • 22. Copyright Drecom Co., Ltd. All Rights Reserved. 22 22 CI DC DC DC 本番環境 インフラメンバ git push Chefの運用方法
  • 23. Copyright Drecom Co., Ltd. All Rights Reserved. 23 Chefの運用方法 GitLab
  • 24. Copyright Drecom Co., Ltd. All Rights Reserved. 24 24 CI DC DC DC 本番環境 GitLab Chefの運用方法 インフラメンバ
  • 25. Copyright Drecom Co., Ltd. All Rights Reserved. 25 Chefの運用方法 Jenkins
  • 26. Copyright Drecom Co., Ltd. All Rights Reserved. 26 Chefの運用方法 Vagrant vagrant snapshot back OSインストール直後のスナップショット vagrant provision Chefの実行
  • 27. Copyright Drecom Co., Ltd. All Rights Reserved. 27 Chefの運用方法 Foodcritic
  • 28. Copyright Drecom Co., Ltd. All Rights Reserved. 28 Chefの運用方法 serverspec nginxの状態をテストする例
  • 29. Copyright Drecom Co., Ltd. All Rights Reserved. 29 29 CI DC DC DC 本番環境 GitLab Jenkins Vagrant Chefの運用方法 インフラメンバ
  • 30. Copyright Drecom Co., Ltd. All Rights Reserved. 30 30 CI DC DC DC 本番環境 GitLab Jenkins Vagrant Chefの運用方法 インフラメンバ
  • 31. Copyright Drecom Co., Ltd. All Rights Reserved. 31 31 CI DC DC DC 本番環境 インフラメン バ GitLab Jenkins Vagrant Chefの運用方法 git push
  • 32. Copyright Drecom Co., Ltd. All Rights Reserved. 32 32 CI DC DC DC 本番環境 インフラメン バ GitLab Jenkins Vagrant Chefの運用方法
  • 33. Copyright Drecom Co., Ltd. All Rights Reserved. 33 Rundeck ホスト名やIPアドレスを正規表現で検索 Chefの運用方法 Zabbix-APIにて取得済のホスト情報
  • 34. Copyright Drecom Co., Ltd. All Rights Reserved. 34 Rundeck ホスト毎の実行結果 Chefの運用方法
  • 35. Copyright Drecom Co., Ltd. All Rights Reserved. 35 35 CI DC DC DC 本番環境 インフラメン バ GitLab Jenkins Vagrant Chefの運用方法
  • 36. Copyright Drecom Co., Ltd. All Rights Reserved. 36 ⁃ ドリコムのインフラ規模 ⁃ Chef運用 ⁃ コード管理 ⁃ テスト駆動インフラ
  • 37. Copyright Drecom Co., Ltd. All Rights Reserved. 37 コード管理 3つの 「○○ Driven Infrastracture」
  • 38. Copyright Drecom Co., Ltd. All Rights Reserved. 38 コード管理 Issue Driven Infrastructure
  • 39. Copyright Drecom Co., Ltd. All Rights Reserved. 39 コード管理 Pull Request Driven Infrastructure
  • 40. Copyright Drecom Co., Ltd. All Rights Reserved. 40 コード管理 マサカリ Driven Infrastructure
  • 41. Copyright Drecom Co., Ltd. All Rights Reserved. 41 ⁃ ドリコムのインフラ規模 ⁃ Chef運用 ⁃ コード管理 ⁃ テスト駆動インフラ
  • 42. Copyright Drecom Co., Ltd. All Rights Reserved. 42 テスト駆動インフラ テスト項目書 作業手順書 インフラ作業といえば…
  • 43. Copyright Drecom Co., Ltd. All Rights Reserved. 43 テスト駆動インフラ serverspecで作業項目を記載 GitLabを使ってコードレビュー 開発環境で実行・テスト 本番環境で実行・テスト
  • 44. Copyright Drecom Co., Ltd. All Rights Reserved. 44 44 テストシナリオ(yaml) drecom-serverspec 実行するserverspecファイルパス テスト対象ホスト テスト駆動インフラ
  • 45. Copyright Drecom Co., Ltd. All Rights Reserved. 45 45 drecom-serverspec テスト結果(コマンド出力) テスト項目(describe) テスト対象サーバ テスト駆動インフラ
  • 46. Copyright Drecom Co., Ltd. All Rights Reserved. 46 まとめ
  • 47. Copyright Drecom Co., Ltd. All Rights Reserved. 47 少人数で早く正確なインフラを回すには?
  • 48. Copyright Drecom Co., Ltd. All Rights Reserved. 48 ⁃ 早 ⁃ 正確  Chefによるプロビジョニング自動化  CIツールとserverspecによるテスト自動化  PDCAサイクルによる品質管理
  • 49. Copyright Drecom Co., Ltd. All Rights Reserved. 49 49 Plan Do Check Action Chef,serverspecのコードレビュー Chef,Rundeckによる実行 serverspec実行 Chef,serverspecコード修正
  • 50. Copyright Drecom Co., Ltd. All Rights Reserved. 50 その他雑感
  • 51. Copyright Drecom Co., Ltd. All Rights Reserved. 51 ⁃ Chef-Server  Chef-Serverを有効に活用できている事例ってある? ⁃ Rundeck  リモートサーバのオペレーション管理が便利すぎるのに無名
  • 52. Copyright Drecom Co., Ltd. All Rights Reserved. 52 ご静聴ありがとうございました!!
  • 53. Copyright Drecom Co., Ltd. All Rights Reserved. 53 会社概要 社名: 証券コー ド: 本社: 電話番号: 社員数: 設立年月 日: 資本金: 事業内容: 株式会社ドリコム 3793 東証マザーズ 〒153-0064 東京都目黒区下目黒1丁目8-1 アルコタワー17F TEL:03-6682-5700 FAX:03-6682-5711 239名 (正社員・契約社員のみ) 2001年11月13日 1,124百万円 (2014年3月末現在) ソーシャルゲーム事業 ソーシャルラーニング事業 アドソリューション事業 Copyright Drecom Co., Ltd. All Rights Reserved.

Editor's Notes

  • #2: はい。ではドリコムのInfrastructure as Code というタイトルで初めさせて頂きます
  • #3: 名前はひらしーとか暴力的なことは全くせずに寧ろおとなしいのですが狂犬と呼ばれています 出身は後ろを延ばさない方の”群馬”です。Google画像検索で表示されるこのような場所ではありません 所属・職種は世間一般的なWEBサービス会社のインフラ部署のインフラエンジニアです
  • #4: まずはドリコムのインフラ規模です
  • #5: PVとDAUですが 1日の全アプリ合計は=> 1億以上 1日の全アプリ合計は=>100万以上 となっております
  • #6: サーバ台数ですが全て仮想サーバ換算で ホスティングしているものが300台以上 イアースのクラウドで1000台以上 となっています
  • #7: そして1ヶ月に増加する台数は現在30台程度となっています
  • #8: これを診るインフラエンジニアの人数ですが
  • #9: 現在3人で回しています
  • #10: この人数で早く、安く、正確なインフラ構築をするためにインフラストラクチャのコード化をどのように活用しているかをお話していきます
  • #11: Chefの運用方法
  • #12: 既に皆さんご存知かと思いますがChefはサーバの構成管理を行うオープンソースのフレームワークですね
  • #13: 特徴としてRubyで書けるという点がRuby on Railsの会社であることと親和性が高く情報共有しやすいということととべき等性という考え方を元にした記述ができるという点があります
  • #14: 例えばこのようなnginxの設定ファイルを配布する例ですと、何度実行してもファイルの内容が同じになるということを保証する書き方ができます
  • #15: Chefには大きく分けて2つの構成がありまして
  • #16: 1つはこのように各サーバ情報を集約・管理するサーバを置き
  • #17: 各サーバのローカルでのみ動作する構成です
  • #18: ドリコムではChef-Soloのほうを採用しています。
  • #19: 以前はChef-Server構成でしたが、クライアント100台超えたあたりからCouchDBがボトルネックになりました。今はPostgreSQLなのでこれは改善されたとは思いますが 他にChef-Serverで管理している情報を変更することによりChef-Clientになんらかの影響をあたえるという機能を既存サーバに適用できなかったという点があります
  • #20: また、プロビジョニングとサーバ情報の取得という観点ではChef-Serverが必要ないので 現状はシェルスクリプトの組み合わせで十分足りると判断しています
  • #21: 実際のChef開発フローですが
  • #22: 例えばこのようにプロビジョニングするサーバのnginxの設定ファイルを変更するレシピを編集するとしますと
  • #23: まずCI環境にあるgitサーバにpushを行います
  • #24: 社内のほぼ全てのソースはGitLabサーバにて管理しています。 Chefのレシピのほうもこちらに含まれております
  • #25: PushするとGitLabによるWeb hook機能によりhttpリクエストが飛びまして
  • #26: そのhttp通信をJenkinsのGitlab Hook Pluginで拾いまして
  • #27: 仮想マシンにはベイグラントを使用して、いつでもOSインストール直後の状態のスナップショットからChefの実行ができるようにしています
  • #28: Chefのレシピの品質を上げるためにFoodcriticというコード規約をチェックするツールを使い
  • #29: また、テストにRubyでこのようにrspec風にテストを実行できるserverspecを使用します
  • #31: テストが全て完了するとインフラメンバに結果とgitlogの内容をメールします
  • #32: テストに失敗したら このように再度ソースコードを編集して、gitpushしテストが成功するまでCIをまわします
  • #33: その内容に問題なければインフラメンバが本番環境に反映するのですが
  • #34: こちらは数が多い時はRundeckというGUIでオペレーションの履歴とタスクの管理ができるツールで効率的に回しています ホスト一覧はZabbixにて管理しているホスト情報をZabbix-API経由で定期的に取得して更新しています
  • #35: 当初chefやcapistranoを使っていたのですが、サーバ数が多くなりすぎてタスクと実行履歴の管理ができなくなり、 RundeckというGUIでオペレーションの履歴とタスクの管理ができるツールで効率的に回しています
  • #36: そしてRundeckを使用して本番環境にChefとserverspecを使用します 試験環境でserverspecを使用しているので本番環境でserverspecを使用する必要ないと言う意見もありますが 全てのネットワーク環境、ハードウェア環境と同一のテスト環境をエミュレートするのは厳しいと考えていまして、毎回serverspecを実行しています
  • #37: 次にコード管理についてお話したいと思います
  • #38: 先程コード管理にgitlabを使用しているとお話しましたが、弊社ではgitlabを最大限に活用して3つのインフラとしてのコード運用をしております
  • #39: 1つはイシュードリブンインフラストラクチャと称しましてまずインフラの状態に変更を加えて欲しい人が要望を投げ、インフラメンバがこれに対応する方法 この運用方法であればChefやserverspecのコードがわからなくてもインフラメンバがgitlab上でコミュニケーションを取って依頼できますね
  • #40: もう1つはプルリクエストドリブンインフラストラクチャと称しまして、gitlabではMerge Requestなのですがgithubのプルリクエストと同じ機能なのでプロリクエストの名前を使ってます これはある程度Chefやserverspecに詳しい人やパラメータの変更のような簡単な部分であれば自ら進んで実施してもらっています。これを使う人はインフラやコードに対して意識が高いということが分かりますね
  • #41: もう1つは勝手にマサカリドリブンインフラストラクチャと読んでいるんですが、 gitlabであらゆるコミットに対してコメントが付けられるのでそれに対して意識の高いモヒカンが4方8方からマサカリが飛んでくるので インフラメンバがそれに対応するということをしています ここでは、メムキャッシュディーのサイズを間違えてマサカリが飛んできて修正したら別のモヒカンからマサカリが飛んで来たところですね
  • #42: 最後にテスト駆動インフラについてお話したいと思います
  • #43: インフラ作業といえば こんなテスト項目書であったり こんな作業手順書のような 開くのに時間がかかるエクセルが典型的ですが これでは1000台規模のサーバを作業するのはあまりにも厳しいので
  • #44: Rspecを知っている人はご存知ですけども、作業項目の階層をコードに記載したサーバスペックを作りまして これをGitlabでコードレビューします そして開発環境で作業とテストをしまして 問題なければ本番環境で作業とテストを実行します
  • #45: serverspec単体では機能が足りないので拡張したコマンドツールを使っています このように実行するserverspecファイルパスと対象ホストを指定したシナリオファイルを用意しまして 実行するとこのようにserverspecコード内でdescribeで指定した項目ごとに結果が表示されます このようにして大量のサーバとテスト項目を効率的に処理できるツールを用意しています
  • #46: serverspec単体では機能が足りないので拡張したコマンドツールを使っています このように実行するserverspecファイルパスと対象ホストを指定したシナリオファイルを用意しまして 実行するとこのようにserverspecコード内でdescribeで指定した項目ごとに結果が表示されます このようにして大量のサーバとテスト項目を効率的に処理できるツールを用意しています
  • #47: まとめになりますが
  • #48: 少人数で早く正確なインフラを回すには?という冒頭の問いの答えの1つになりますが
  • #49: 早さは Chefによるプロビジョニング自動化と serverspecによるテスト自動化 そして正確さは PDCAサイクルに沿った品質管理が失敗のないインフラにつながると思います
  • #50: 品質管理の一般的な手法にPDCAサイクルというものがありますがこれに準じたものになっていまして Plan がChef,serverspecのコードレビュー Do がChef,Rundeckによる実行 Checkがserverspec ActionがChef,serverspecコード修正 という形で進めるのが確実かと思います
  • #51: 最後にその他所感になりますが
  • #52: Chef-Serverを有効に活用できている事例を知らないので、 あったらこっそり教えて下さい Capistranoのタスク管理や履歴に残せないところが駄目で変えたんですが、大量のサーバをオペレーションするのが便利すぎるのに全く活用されている情報がないので 他社さんがどうやっているか気になります サーバースペックはコマンドを抽象化して、テストの振る舞いをコードに掛けるだけなんですが、色々な所に活用できるのでこれなしにはもういられないですね