SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
- DevLove Conference 2012 -




Chefを利⽤した運⽤省⼒化と
DevOpsの取り組みについて



                       並河 祐貴 (Yuuki NAMIKAWA)
                              id:rx7 / @namikawa


                                                   1
自己紹介
並河 祐貴 (a.k.a. id:rx7)

(株)サイバーエージェント所属
エンジニア
Blog: http://d.hatena.ne.jp/rx7/
Twitter: @namikawa

著書・寄稿多数



                                   2
これまでのキャリア
海岸沿いのSIer (2004〜2008)
 先端技術調査・導入(R&D)、現場PJ支援(SI)
 社内システム企画・運用、社内教育


SonicGarden (2008〜2010)
 B2B/B2C向けWebサービス、クラウド導入支援
 企画/営業/PR/サービス構築/運用/顧客サポート


CyberAgent (2010〜)
 Webサービス構築/運用/いわゆるマネジメント


                             3
今日の話は・・・
弊社のサービスとそれらの運用について
 最近のアメーバピグのシステム構成とか
 DevOpsの話はあまりしません ごめんなさい

Chefを利用したプログラマブルなシステム基盤
 実際に使ってどうだったか




    つまり主に「Chef」の話をしに来ました!




                            4
アメーバピグ (Ameba Pigg)




                      5
アメーバピグ (Ameba Pigg)
 アバター仮想空間サービス
  きせかえ、おでかけ、ゲーム
  – カジノ、つり、ライフ(庭)、アイランド(島)、カフェ(店)、
    ワールド(街)


 ユーザ数
  1300万人 (2012/09, Amebaユーザの約半数)

 トラフィック (アバター/ゲーム)
  約7〜8Gbps / ピーク帯

 同時接続ユーザ数 (アバター/ゲーム)
  約40万ユーザ / ピーク帯
                                     6
アメーバピグのアーキテクチャ

                                                    Other...

       HTTP


                       Web


User   TCP                                  memcached
       Socket                                (or none)




                      Socket
                (Java or node.js...)

 アバターサービスとゲームで
                                                DB
 実装言語やミドルウェアは                          (MySQL or MongoDB...)
 異なりますが、基本的な構成は
 同一となります。
                                                               7
これまでの(主にシステムの)変遷
本体(アバターサービス)だけでも・・・
 自作サーバ導入
 DBにFusion-ioのハードウェアを採用
 Chefの導入
 ネットワーク回線・LBの統合
 データセンター移設
 2系統化によるメンテナンス時間短縮




                          8
ピグでのシステム運用スタイル
職種は一応存在する
 アプリエンジニア(Dev?)
 インフラエンジニア(Ops?)...

チーム・体制
 各施策ごとに機能開発を担当するチーム
 非機能部分(性能・安定・効率化)を担当するチーム

基本的にシステム運用は全員プレイ
 モニタリングも
 障害対応も
 リリースやサーバ設定も
 当番はありますが、基本的にエンジニア全員で担当します

                              9
システム運用する上で
運用改善の過程でツールによる作業効率化
 アプリケーションのデプロイ
 サーバを増設する
 設定変更を反映する
 ...etc


アプリ/インフラ双⽅の協⼒が必要
 セットアップ、パフォーマンスチューニング、トラブ
 ルシューティング...

  DevとOpsで作業の境界は一切設けていないです
   タッグを組まないと解決できない課題が多数

                             10
少し昔の話




        11
僕が今の会社に入って
一番最初にやった仕事



             12
ピグのWeb/APサーバを3台増設
その時に渡された手順書(1台分)




                    13
14
アメーバピグの規模感
アメーバピグ
 サーバ台数: 約270台
 –   Web/APサーバ40台、Socketサーバ70台
 –   DB(MySQL+FIO)サーバ6台 x 2(スタンバイ)
 –   API, Storage, Hadoop Cluster, Mobile, Smart Phone
 –   Auth, Ranking, Backup etc

ピグライフ
 サーバ台数: 約280台
 – Socket(node.js)サーバ80台、DB(MongoDB)サーバ150台
 – Statサーバ20台、Log管理・解析、Smart Phone…etc

ピグアイランド・ピグカフェ・ピグワールド
 ライフとほぼ同等のシステム構成
 サーバ台数は、3サービスで約440台
     (テスト環境もあわせると)   サーバ台数は、ざっと1000台超の規模
                                                         15
1000台規模のサーバ群
DCは3箇所に分散 ⇒ 1箇所へ集約中

ほぼ物理サーバ + 一部社内クラウド + CDN
 次は、パブリッククラウドも


監視はmon + munin
 monにはかなり限界を感じているのでリプレースを検
 討中...


全サーバを「Chef」で管理

                             16
ピグのサーバ増設・運用管理
サービス・システム規模、共に右肩上がり

急な増設を求められることもあります
 ビッグイベントにあわせて30台入れちゃうとか
 想定を超えるスピードでサービスが成⻑するとか


数十台のサーバに同じ設定を入れたりも

そこで「Chef」を使ってみました


                          17
それ、
クラウド使ったら
でk(ry
   クラウドも、運用を効率化する1要素

ミドルウェアの設定管理や、プロセスの状態管理も
 含めて今回は「Chef」で自動化する話をします



                           18
Chefの概要


http://www.flickr.com/photos/jonathanbeard/3307862620/   19
「Chef」とは
            サーバの構築作業やシステム管理のツール
                  システムのあるべき状態を設定する
            オープンソース、Ruby製

            利用実績
                  37signals
                  Engine Yard
                  Rackspace hosting
                  etc…



http://www.flickr.com/photos/jonathanbeard/3307862620/   20
サーバ構築・システム管理自動化の必要性

             手作業では、そもそも時間がかかる
                   数十台、数百台のレベルになると・・・
                   同じ役割のサーバごとに環境差異が発⽣したりとか
                        サーバ投入までのリードタイムが⻑くなることで
                          機会損失を発⽣させることは避けたい


             人為的なミスを抑えたい
                   作業漏れ、ルーチン作業でのオペミス
                   作業者によって、スキルにバラつき
                     運用中のサーバでのミスは特に無くしたい
                  設定に間違いがあっても自動化しておく事で即修正可能


http://www.flickr.com/photos/jonathanbeard/3307862620/   21
それ、シェルスクリプトでよくね?
           サーバの状態が記述できるフレームワーク
                  基本的なタスクが備わっている
                  管理タスクの品質をできるだけ揃える


           Chefでは内部DSLを採用
                  Rubyでの柔軟な記述ができる


           プラットフォームの差異が吸収できる
                  ディストリビューションによってコマンドに差異
                  yumとaptとか


http://www.flickr.com/photos/photomequickbooth/4062072718/   22
Chefのシステムアーキテクチャ

                                                                                 Ruby
                        CouchDB                            Solr
                                                                                 Merb(Rack)
                                                                                 CouchDB
                                                         Chef-Solr
                                                          Indexer
                                                                                 Solr
                                                                                 RabbitMQ
                      Chef-Server
                                                         RabbitMQ                (Java)
                         API
                                                                                 (Erlang)
      Chef-Server
                                                                                 HTTP(REST)
        WebUI                                                                    JSON
                                        Chef-Client
                                        Chef-Client                  Knife
                                         Chef-Client
                                                                             Client


http://www.flickr.com/photos/jonathanbeard/3307862620/                                        23
Chefでの”主な”登場人物
            Node
            Role
            Cookbook
                  Recipe
                  Template
                  Attribute



                                時間の都合上、基本を簡単にご紹介します




http://www.flickr.com/photos/jonathanbeard/3307862620/   24
Node, Role, Cookbook の関連(例)

                                                                  nginxのCookbook

             サーバA
                                                         APサーバの
                                                                    Passengerの
                                                           Role
                                                                     Cookbook

             サーバB
                                                                  RubyのCookbook



             サーバC                                                  gitのCookbook

        Node                                             Role      Cookbook

          管理対象の                                          管理対象の    システムのあるべき形を
           サーバ                                           グルーピング      定義する設定

http://www.flickr.com/photos/jonathanbeard/3307862620/                             25
Chefのリポジトリ構造 (Cookbook)
      cookbooks/                                         設定したいパラメータ(各サーバ
                                                         固有のものやデフォルト値など)
        |-- attributes
                                                             を記述したもの
        |-- definitions
        |-- files
        |-- libraries                                      システムのあるべき姿、
        |-- providers                                      つまり設定内容を実際に
                                                           記載したRubyスクリプト
        |-- recipes
        |-- resources
        `-- templates                                     サーバへ配置する設定ファイルの
                                                         テンプレートで、eRubyで記述する




http://www.flickr.com/photos/jonathanbeard/3307862620/                        26
Recipe、Templateの一例
      ./recipe/default.rb                                ./templates/default/ports.conf.erb
       package "apache2" do                               Listen <%= port %>
        action :install                                   NameVirtualHost *:<%=port %>
       end

       template "/etc/apache2/ports.conf" do
        source "ports.conf.erb"                          ./attributes/default.rb
        owner "root"
                                                          default[:port] = “8080"
        group "root"
        mode 0644
        variables(
          :port => node[:port]
        )
       end
                                                             “port”:”80”     “node A”の情報を保持
                                                                              [Node Attribute],
       service "apache2" do
                                                                                [Run List] 等
        action [ :enable, :start ]                         実⾏するrecipeの設定
       end



                                                                       chef-client
                                                           node A         実⾏         Chef-Server


http://www.flickr.com/photos/jonathanbeard/3307862620/                                             27
Chefで利用できるResource
              Cookbook File                              Mount
              Cron                                       Ohai
              Deploy                                     Package
              Directory                                  PowerShell Script
              Erlang Call                                Remote Directory
              Execute                                    Remote File
              File                                       Route
              Git                                        Ruby Block
              Group                                      SCM
              HTTP Request                               Script
              Ifconfig                                   Service
              Link                                       Subversion
              Log                                        Template
              Mdadm                                      User

http://www.flickr.com/photos/jonathanbeard/3307862620/                       28
Chefのちょっとイケていないところ
           サーバのセットアップが面倒くさい
                  サーバセットアップは最初だけなので許容できる
                  Ubuntuだと割と楽かも。クライアントは簡単


           名前がSEO的に致命的
                  Chef, Cookbook, Recipe, knife...
                  リアルに調べ物をする時に困ります


           (dry-runができない)
                  テスト環境が必須 (クラウド・仮想化が最適)
                  10.14系から利用可能に!
http://www.flickr.com/photos/photomequickbooth/4062072718/   29
Chefの運用


http://www.flickr.com/photos/jonathanbeard/3307862620/   30
Chefを活用したサーバ増設
            PXE + kickstart + Chef
             1.      事前に chef-server 側でNodeの設定が必要
             2.      サーバに線を繋ぎ電源ON、PXEブート開始
             3.      Label No.とNode名を入⼒し、OSインストール開始
             4.      同時に chef-client のインストールと設定
             5.      kickstart の %post で chef-client を実⾏
                kickstartのcfgファイル

                       通常のOS
                       インストールタスク                                        通信
                                                           client            PXE+ksサーバ
                       chef-clientのインストール

                                                         OSインストール後                通信
                       chef-clientの設定
                                                         は直接通信
                       chef-clientの実⾏
                                                                    Chef-Server

http://www.flickr.com/photos/jonathanbeard/3307862620/                                   31
Kickstartでの %post スクリプト
      1.      Chef Clientのインストール
      2.      /etc/chef/client.rb の配置
      3.      “node_name”を取得・上記ファイルに設定
      4.      /etc/chef/validation.pemを配置
      5.      chef-clientコマンドを実⾏
       実際のOSインストール時にPXE Boot時に⼊⼒するラベル例

       boot: 1 node=chef-test01




http://www.flickr.com/photos/jonathanbeard/3307862620/   32
Chefを活用したサーバ増設
            今はオンプレミスな物理環境を想定

            クラウド環境でも応用可能
                  EC2だと、事前にAMIを作成しておいて、user-dataに
                  Node名を指定して...
                  (弊社のOpenStackクラウド基盤を活用)




http://www.flickr.com/photos/jonathanbeard/3307862620/   33
Cookbookの使い⽅
            Cookbookの例
                  ネットワーク設定
                  H/Wに必要な設定
                     – 主にH/W固有で必要なドライバやRAIDチェックスクリプト等
                  各サーバ共通で必要な設定
                     – DNS, NTP, LDAP, 監視ライブラリ, 鍵交換等
                  各Roleで必要な設定

             NodeへのCookbook設定例                           RoleへのCookbook設定例
            {                                            {
                "run_list": [                                "run_list": [
                  "recipe[network::xxxxx]",                    "recipe[ameba-common::pigglife]",
                  "recipe[hw::dell_r310]",                     "recipe[pigglife-mongodb::mongod]"
                  “role[pigglife-mongodb]"                   ]
                ]                                        }
            }

http://www.flickr.com/photos/jonathanbeard/3307862620/                                              34
Chefを使う上でやっていること
            Script Resource は基本的に使わない
                  何度でも実⾏される
                  chef-client実⾏時のチェック・運用が面倒
                  何度実⾏しても問題ないものしか使わない

                                                         過去、こんな感じで書いていました...
                     script “script_name" do
                      interpreter "bash"
                      user “username"
                      creates comp_dir + “script_name.done"
                      code <<-EOH
                        command
                        ......
                        ......
                      EOH
                     end




http://www.flickr.com/photos/jonathanbeard/3307862620/                         35
Chefを使う上でやっていること
            各nodeのChef適用は、chef-clientを実⾏
                  tomahawk: 複数のサーバで同じコマンドを実⾏
                  “knife ssh”, “knife ssh_cheto” 等も

            NodeのAttributeの登録
                  JSONファイルを自動⽣成して登録・バージョン管理
                  RoleもJSONファイル形式でバージョン管理

            アンインストール・削除等の処理も忘れずに

            Environment(0.10〜)の活用
                  development, staging, productionの分別

http://www.flickr.com/photos/jonathanbeard/3307862620/   36
Chefを使う上でやっていること
            verbose_logging false
                  デフォルトではInfoログが出過ぎる
                  影響のあった変更処理のみロギング

            why-run (0.10.14〜)
                  Chefでの処理をnodeに反映しないテストモード

            CouchDBのバックアップ
                  Chefサーバのバックアップ、/etc/chef 以下も
                     – (Chefリポジトリをバージョン管理していて、そちらのバック
                       アップがあれば特に必要ないかも)




http://www.flickr.com/photos/jonathanbeard/3307862620/   37
Chefを運用する上での課題
            Recipeが正しいことを保障するには?
                  仮想マシン等を活用してテスト
                     – VirtualBoxの制御ができるVagrantが便利
                     – 本当に正しい処理が⾏われているかは人手での確認が必要


                  why-run
                     – これも人手での判断が必要


                  Recipeのユニットテスト
                     – 場合によっては十分、nodeが正しい状態を保障しきれない


                  nodeでの自作チェックスクリプト・F/W


http://www.flickr.com/photos/jonathanbeard/3307862620/   38
Cookbookでのコミュニケーション
            セットアップ手順のチェックをRecipe
            (Cookbook)という名のコードベースで
                  DevとOpsのクロスチェック


            Cookbook/Node/Role等、バージョン管理して
            いるので、過去との差分も確認しやすい

            誰でもRead/Writeできる場所にあるので、みん
            なでメンテナンスできる

                             DevとOpsの新しいコミュニケーションツール

http://www.flickr.com/photos/jonathanbeard/3307862620/   39
これからChefを勉強する⽅へ
            chef-solo が便利
                  chef-server を必要とせず、ローカルにCookbookを
                  適用できる
                  小環境ならこれで十分
                  他にも、VMとかでテストとか練習とか

            Chefのインタラクティブシェル
                  “shef”

            Opscode Platform (Hosted Chef)
                  Chefのホスティング環境 (サーバ)
                  5 nodes までなら、無料で試せる

http://www.flickr.com/photos/jonathanbeard/3307862620/   40
まとめと今後の展望
            Chefを活用することで多くのサーバの増設・管理
            にかかる負担を軽減
                  あるべき状態に自動で設定・維持できる
                  ルールを少し覚えれば、誰でも簡単に設定が書ける
                  内部DSLなので、Rubyを覚えれば処理も柔軟に書ける


            クラウド等の基盤サービスと連携して、インフラ
            構築/運用の完全オートメーションができる仕組
            みにしたい



http://www.flickr.com/photos/jonathanbeard/3307862620/   41
Chefでサーバ管理の省⼒化
            をはじめてみませんか?



http://www.flickr.com/photos/jonathanbeard/3307862620/   42

Weitere ähnliche Inhalte

Was ist angesagt?

Performance and Scalability of Web Service
Performance and Scalability of Web ServicePerformance and Scalability of Web Service
Performance and Scalability of Web ServiceShinji Tanaka
 
クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0NIFTY Cloud
 
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Takashi Kanai
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
 
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜Naotoshi Seo
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Taro Hirose
 
サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜Yui Ito
 
Windows7でもchefしたい!
Windows7でもchefしたい!Windows7でもchefしたい!
Windows7でもchefしたい!Tamie YAMAMOTO
 
Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)hiboma
 
ロール適用ツール ~ansible art~
ロール適用ツール ~ansible art~ロール適用ツール ~ansible art~
ロール適用ツール ~ansible art~辰徳 斎藤
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Sho A
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalkBIGLOBE Tech Talk
 
Ansible handson ood2016
Ansible handson ood2016Ansible handson ood2016
Ansible handson ood2016Hideki Saito
 
Chef windows linux環境構築
Chef windows linux環境構築Chef windows linux環境構築
Chef windows linux環境構築靖 小田島
 

Was ist angesagt? (20)

Puppetのススメ
PuppetのススメPuppetのススメ
Puppetのススメ
 
Puppet on AWS
Puppet on AWSPuppet on AWS
Puppet on AWS
 
Performance and Scalability of Web Service
Performance and Scalability of Web ServicePerformance and Scalability of Web Service
Performance and Scalability of Web Service
 
Mina 20130417
Mina 20130417Mina 20130417
Mina 20130417
 
クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0クラウド上でのChef活用と ベストプラクティス v0.2.0
クラウド上でのChef活用と ベストプラクティス v0.2.0
 
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Chefで始めるWindows Server構築
Chefで始めるWindows Server構築
 
Ansible入門
Ansible入門Ansible入門
Ansible入門
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
ぼくのかんがえた Itamae/Serverspec 構成フレームワーク 〜 Kondate 〜
 
Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)Ansible 入門 #01 (初心者向け)
Ansible 入門 #01 (初心者向け)
 
サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜
 
入門Ansible
入門Ansible入門Ansible
入門Ansible
 
Windows7でもchefしたい!
Windows7でもchefしたい!Windows7でもchefしたい!
Windows7でもchefしたい!
 
Redmine Ansible
Redmine AnsibleRedmine Ansible
Redmine Ansible
 
Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)Sqale の Puppet と Chef (と テスト)
Sqale の Puppet と Chef (と テスト)
 
ロール適用ツール ~ansible art~
ロール適用ツール ~ansible art~ロール適用ツール ~ansible art~
ロール適用ツール ~ansible art~
 
Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門Ansible ではじめるインフラのコード化入門
Ansible ではじめるインフラのコード化入門
 
入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk入門 Chef Server #biglobetechtalk
入門 Chef Server #biglobetechtalk
 
Ansible handson ood2016
Ansible handson ood2016Ansible handson ood2016
Ansible handson ood2016
 
Chef windows linux環境構築
Chef windows linux環境構築Chef windows linux環境構築
Chef windows linux環境構築
 

Andere mochten auch

qpstudy 〜初心者にやさしいインフラ勉強会〜 の紹介
qpstudy 〜初心者にやさしいインフラ勉強会〜 の紹介qpstudy 〜初心者にやさしいインフラ勉強会〜 の紹介
qpstudy 〜初心者にやさしいインフラ勉強会〜 の紹介Akihiro Kuwano
 
Mashup Caravan in FUKUOKA (Cyberagent)
Mashup Caravan in FUKUOKA (Cyberagent)Mashup Caravan in FUKUOKA (Cyberagent)
Mashup Caravan in FUKUOKA (Cyberagent)moai kids
 
データベースシステム論13 - データベースの運用
データベースシステム論13 - データベースの運用データベースシステム論13 - データベースの運用
データベースシステム論13 - データベースの運用Shohei Yokoyama
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックYusuke Ando
 
データベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベースデータベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベースShohei Yokoyama
 
今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理Masahito Zembutsu
 
LODEO開発ストーリー
LODEO開発ストーリーLODEO開発ストーリー
LODEO開発ストーリーTomohiro Shinden
 
20140213 web×マス広告の統合分析第3部_公開用
20140213 web×マス広告の統合分析第3部_公開用20140213 web×マス広告の統合分析第3部_公開用
20140213 web×マス広告の統合分析第3部_公開用Cyberagent
 
Wikipedia解析
Wikipedia解析Wikipedia解析
Wikipedia解析ghazel7
 
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜gree_tech
 
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~Terui Masashi
 
XMLデータベースについて
XMLデータベースについてXMLデータベースについて
XMLデータベースについてKoji Kawaguchi
 
マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話Makoto Haruyama
 
Riak: 本物の高可用性を実現する仕組みとは?
Riak: 本物の高可用性を実現する仕組みとは?Riak: 本物の高可用性を実現する仕組みとは?
Riak: 本物の高可用性を実現する仕組みとは?Takahiko Sato
 
CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛Kazuki Aranami
 
VMware的インフラ仮想化の世界
VMware的インフラ仮想化の世界VMware的インフラ仮想化の世界
VMware的インフラ仮想化の世界Takahiro HAGIWARA
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecYukihiko SAWANOBORI
 

Andere mochten auch (20)

qpstudy 〜初心者にやさしいインフラ勉強会〜 の紹介
qpstudy 〜初心者にやさしいインフラ勉強会〜 の紹介qpstudy 〜初心者にやさしいインフラ勉強会〜 の紹介
qpstudy 〜初心者にやさしいインフラ勉強会〜 の紹介
 
Mashup Caravan in FUKUOKA (Cyberagent)
Mashup Caravan in FUKUOKA (Cyberagent)Mashup Caravan in FUKUOKA (Cyberagent)
Mashup Caravan in FUKUOKA (Cyberagent)
 
データベースシステム論13 - データベースの運用
データベースシステム論13 - データベースの運用データベースシステム論13 - データベースの運用
データベースシステム論13 - データベースの運用
 
DevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニックDevOpsを実現するChef活用テクニック
DevOpsを実現するChef活用テクニック
 
株式会社ディー・エヌ・エー LinkedIn導入事例 (2013年12月)
株式会社ディー・エヌ・エー LinkedIn導入事例 (2013年12月)株式会社ディー・エヌ・エー LinkedIn導入事例 (2013年12月)
株式会社ディー・エヌ・エー LinkedIn導入事例 (2013年12月)
 
データベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベースデータベースシステム論15 - 関係データモデル以外のデータベース
データベースシステム論15 - 関係データモデル以外のデータベース
 
今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理今日から業務で使える17の運用系Linuxツール、そして円環の理
今日から業務で使える17の運用系Linuxツール、そして円環の理
 
LODEO開発ストーリー
LODEO開発ストーリーLODEO開発ストーリー
LODEO開発ストーリー
 
Cent7@zabbix2.4を試す
Cent7@zabbix2.4を試すCent7@zabbix2.4を試す
Cent7@zabbix2.4を試す
 
Eight meets AWS
Eight meets AWSEight meets AWS
Eight meets AWS
 
20140213 web×マス広告の統合分析第3部_公開用
20140213 web×マス広告の統合分析第3部_公開用20140213 web×マス広告の統合分析第3部_公開用
20140213 web×マス広告の統合分析第3部_公開用
 
Wikipedia解析
Wikipedia解析Wikipedia解析
Wikipedia解析
 
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜QAエンジニアを通じて弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
QAエンジニアを通じて 弊社の開発環境がより良くなる日 〜 OpenSTF 編 〜
 
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
「クラウド本気で始めました」なSIerのChef活用と実践~Chefアンチパターンとの戦い~
 
XMLデータベースについて
XMLデータベースについてXMLデータベースについて
XMLデータベースについて
 
マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話マイクロサービスっぽい感じの話
マイクロサービスっぽい感じの話
 
Riak: 本物の高可用性を実現する仕組みとは?
Riak: 本物の高可用性を実現する仕組みとは?Riak: 本物の高可用性を実現する仕組みとは?
Riak: 本物の高可用性を実現する仕組みとは?
 
CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛CAPとBASE、ACIDの呪縛
CAPとBASE、ACIDの呪縛
 
VMware的インフラ仮想化の世界
VMware的インフラ仮想化の世界VMware的インフラ仮想化の世界
VMware的インフラ仮想化の世界
 
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpecマニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
マニアックツール紹介、マネジメントのKnife-Zero(Chef)とテストスイートInSpec
 

Ähnlich wie Chefを利用した運用省力化とDevOpsの取り組みについて

大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)Yuuki Namikawa
 
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)Yuuki Namikawa
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) Akihiro Kuwano
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionGoh Matsumoto
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osakaNaotaka Jay HOTTA
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Kenta Suzuki
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築VOYAGE GROUP
 
SQL Azure のシームレスな管理
SQL Azure のシームレスな管理SQL Azure のシームレスな管理
SQL Azure のシームレスな管理junichi anno
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみたngi group.
 
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )ロフト くん
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Masahiro Nagano
 
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3日本Javaユーザーグループ
 
20101018 JJUG CCC10 WindowsAzure
20101018 JJUG CCC10 WindowsAzure20101018 JJUG CCC10 WindowsAzure
20101018 JJUG CCC10 WindowsAzureShinichiro Isago
 
沢山のスマホサービス環境を カジュアルにセキュアに運用する
沢山のスマホサービス環境を カジュアルにセキュアに運用する沢山のスマホサービス環境を カジュアルにセキュアに運用する
沢山のスマホサービス環境を カジュアルにセキュアに運用するHirotomo Oi
 
Fusion-io(ioDrive) benchmarking #sfstudy 01 LT
Fusion-io(ioDrive) benchmarking #sfstudy 01 LTFusion-io(ioDrive) benchmarking #sfstudy 01 LT
Fusion-io(ioDrive) benchmarking #sfstudy 01 LTMasahito Zembutsu
 
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)Akihiro Kuwano
 
Couch DB in 15minutes
Couch DB in 15minutesCouch DB in 15minutes
Couch DB in 15minutesYohei Sasaki
 
Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Taku Unno
 

Ähnlich wie Chefを利用した運用省力化とDevOpsの取り組みについて (20)

大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (後編)
 
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
サーバの構築作業や運用管理を自動化する「Chef」 (CADC研究レポート発表LT)
 
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい) 泥臭い運用から、プログラマブルインフラ構築(に行きたい)
泥臭い運用から、プログラマブルインフラ構築(に行きたい)
 
Rails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd editionRails初心者レッスン lesson1 3rd edition
Rails初心者レッスン lesson1 3rd edition
 
Cloudstack user group meeting in osaka
Cloudstack user group meeting in osakaCloudstack user group meeting in osaka
Cloudstack user group meeting in osaka
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築
 
Fluentd meetup #2
Fluentd meetup #2Fluentd meetup #2
Fluentd meetup #2
 
SQL Azure のシームレスな管理
SQL Azure のシームレスな管理SQL Azure のシームレスな管理
SQL Azure のシームレスな管理
 
20091119_sinatraを使ってみた
20091119_sinatraを使ってみた20091119_sinatraを使ってみた
20091119_sinatraを使ってみた
 
Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )Operator reading and writing ( Operator SDK 編 )
Operator reading and writing ( Operator SDK 編 )
 
Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14Web Operations and Perl kansai.pm#14
Web Operations and Perl kansai.pm#14
 
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
メッセージングプラットフォーム Zimbra の紹介とその活用術 - JJUG ナイトセミナー2013/3
 
20101018 JJUG CCC10 WindowsAzure
20101018 JJUG CCC10 WindowsAzure20101018 JJUG CCC10 WindowsAzure
20101018 JJUG CCC10 WindowsAzure
 
PHP on Cloud
PHP on CloudPHP on Cloud
PHP on Cloud
 
沢山のスマホサービス環境を カジュアルにセキュアに運用する
沢山のスマホサービス環境を カジュアルにセキュアに運用する沢山のスマホサービス環境を カジュアルにセキュアに運用する
沢山のスマホサービス環境を カジュアルにセキュアに運用する
 
Fusion-io(ioDrive) benchmarking #sfstudy 01 LT
Fusion-io(ioDrive) benchmarking #sfstudy 01 LTFusion-io(ioDrive) benchmarking #sfstudy 01 LT
Fusion-io(ioDrive) benchmarking #sfstudy 01 LT
 
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
 
Couch DB in 15minutes
Couch DB in 15minutesCouch DB in 15minutes
Couch DB in 15minutes
 
Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4Aizu.LT::Tokyo #4
Aizu.LT::Tokyo #4
 

Mehr von Yuuki Namikawa

bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選Yuuki Namikawa
 
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)Yuuki Namikawa
 
#kuwacon Lightning Talks
#kuwacon Lightning Talks#kuwacon Lightning Talks
#kuwacon Lightning TalksYuuki Namikawa
 
パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)
パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)
パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)Yuuki Namikawa
 
中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)
中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)
中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)Yuuki Namikawa
 
JAWS-UGサミット2011春 LT資料
JAWS-UGサミット2011春 LT資料JAWS-UGサミット2011春 LT資料
JAWS-UGサミット2011春 LT資料Yuuki Namikawa
 
Railsの運用について
Railsの運用についてRailsの運用について
Railsの運用についてYuuki Namikawa
 
Webサーバ勉強会 (160-162:?)
Webサーバ勉強会 (160-162:?)Webサーバ勉強会 (160-162:?)
Webサーバ勉強会 (160-162:?)Yuuki Namikawa
 
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例Yuuki Namikawa
 
Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)
Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)
Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)Yuuki Namikawa
 
Amazon EC2を使った実践SaaS運用事例
Amazon EC2を使った実践SaaS運用事例Amazon EC2を使った実践SaaS運用事例
Amazon EC2を使った実践SaaS運用事例Yuuki Namikawa
 

Mehr von Yuuki Namikawa (11)

bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選bash(set)コマンドのオプション3選
bash(set)コマンドのオプション3選
 
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)
俺たちの自分戦略 - namikawa (DevLOVE Conference 2012)
 
#kuwacon Lightning Talks
#kuwacon Lightning Talks#kuwacon Lightning Talks
#kuwacon Lightning Talks
 
パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)
パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)
パブリッククラウドサービスAmazon EC2の性能検証レポート (CADC研究レポート発表会用)
 
中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)
中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)
中国のクラウドサービスについて (サイバーエージェント×クックパッド合同勉強会LT資料)
 
JAWS-UGサミット2011春 LT資料
JAWS-UGサミット2011春 LT資料JAWS-UGサミット2011春 LT資料
JAWS-UGサミット2011春 LT資料
 
Railsの運用について
Railsの運用についてRailsの運用について
Railsの運用について
 
Webサーバ勉強会 (160-162:?)
Webサーバ勉強会 (160-162:?)Webサーバ勉強会 (160-162:?)
Webサーバ勉強会 (160-162:?)
 
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例
クラウドサービスAmazon EC2を活用した「SKIPaaS」構築事例
 
Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)
Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)
Amazon EC2 を使ったSaaS運用事例(LT) - Tokyo Cloud Developers Meetup (20090409)
 
Amazon EC2を使った実践SaaS運用事例
Amazon EC2を使った実践SaaS運用事例Amazon EC2を使った実践SaaS運用事例
Amazon EC2を使った実践SaaS運用事例
 

Chefを利用した運用省力化とDevOpsの取り組みについて

  • 1. - DevLove Conference 2012 - Chefを利⽤した運⽤省⼒化と DevOpsの取り組みについて 並河 祐貴 (Yuuki NAMIKAWA) id:rx7 / @namikawa 1
  • 2. 自己紹介 並河 祐貴 (a.k.a. id:rx7) (株)サイバーエージェント所属 エンジニア Blog: http://d.hatena.ne.jp/rx7/ Twitter: @namikawa 著書・寄稿多数 2
  • 3. これまでのキャリア 海岸沿いのSIer (2004〜2008) 先端技術調査・導入(R&D)、現場PJ支援(SI) 社内システム企画・運用、社内教育 SonicGarden (2008〜2010) B2B/B2C向けWebサービス、クラウド導入支援 企画/営業/PR/サービス構築/運用/顧客サポート CyberAgent (2010〜) Webサービス構築/運用/いわゆるマネジメント 3
  • 4. 今日の話は・・・ 弊社のサービスとそれらの運用について 最近のアメーバピグのシステム構成とか DevOpsの話はあまりしません ごめんなさい Chefを利用したプログラマブルなシステム基盤 実際に使ってどうだったか つまり主に「Chef」の話をしに来ました! 4
  • 6. アメーバピグ (Ameba Pigg) アバター仮想空間サービス きせかえ、おでかけ、ゲーム – カジノ、つり、ライフ(庭)、アイランド(島)、カフェ(店)、 ワールド(街) ユーザ数 1300万人 (2012/09, Amebaユーザの約半数) トラフィック (アバター/ゲーム) 約7〜8Gbps / ピーク帯 同時接続ユーザ数 (アバター/ゲーム) 約40万ユーザ / ピーク帯 6
  • 7. アメーバピグのアーキテクチャ Other... HTTP Web User TCP memcached Socket (or none) Socket (Java or node.js...) アバターサービスとゲームで DB 実装言語やミドルウェアは (MySQL or MongoDB...) 異なりますが、基本的な構成は 同一となります。 7
  • 8. これまでの(主にシステムの)変遷 本体(アバターサービス)だけでも・・・ 自作サーバ導入 DBにFusion-ioのハードウェアを採用 Chefの導入 ネットワーク回線・LBの統合 データセンター移設 2系統化によるメンテナンス時間短縮 8
  • 9. ピグでのシステム運用スタイル 職種は一応存在する アプリエンジニア(Dev?) インフラエンジニア(Ops?)... チーム・体制 各施策ごとに機能開発を担当するチーム 非機能部分(性能・安定・効率化)を担当するチーム 基本的にシステム運用は全員プレイ モニタリングも 障害対応も リリースやサーバ設定も 当番はありますが、基本的にエンジニア全員で担当します 9
  • 10. システム運用する上で 運用改善の過程でツールによる作業効率化 アプリケーションのデプロイ サーバを増設する 設定変更を反映する ...etc アプリ/インフラ双⽅の協⼒が必要 セットアップ、パフォーマンスチューニング、トラブ ルシューティング... DevとOpsで作業の境界は一切設けていないです タッグを組まないと解決できない課題が多数 10
  • 14. 14
  • 15. アメーバピグの規模感 アメーバピグ サーバ台数: 約270台 – Web/APサーバ40台、Socketサーバ70台 – DB(MySQL+FIO)サーバ6台 x 2(スタンバイ) – API, Storage, Hadoop Cluster, Mobile, Smart Phone – Auth, Ranking, Backup etc ピグライフ サーバ台数: 約280台 – Socket(node.js)サーバ80台、DB(MongoDB)サーバ150台 – Statサーバ20台、Log管理・解析、Smart Phone…etc ピグアイランド・ピグカフェ・ピグワールド ライフとほぼ同等のシステム構成 サーバ台数は、3サービスで約440台 (テスト環境もあわせると) サーバ台数は、ざっと1000台超の規模 15
  • 16. 1000台規模のサーバ群 DCは3箇所に分散 ⇒ 1箇所へ集約中 ほぼ物理サーバ + 一部社内クラウド + CDN 次は、パブリッククラウドも 監視はmon + munin monにはかなり限界を感じているのでリプレースを検 討中... 全サーバを「Chef」で管理 16
  • 18. それ、 クラウド使ったら でk(ry クラウドも、運用を効率化する1要素 ミドルウェアの設定管理や、プロセスの状態管理も 含めて今回は「Chef」で自動化する話をします 18
  • 20. 「Chef」とは サーバの構築作業やシステム管理のツール システムのあるべき状態を設定する オープンソース、Ruby製 利用実績 37signals Engine Yard Rackspace hosting etc… http://www.flickr.com/photos/jonathanbeard/3307862620/ 20
  • 21. サーバ構築・システム管理自動化の必要性 手作業では、そもそも時間がかかる 数十台、数百台のレベルになると・・・ 同じ役割のサーバごとに環境差異が発⽣したりとか サーバ投入までのリードタイムが⻑くなることで 機会損失を発⽣させることは避けたい 人為的なミスを抑えたい 作業漏れ、ルーチン作業でのオペミス 作業者によって、スキルにバラつき 運用中のサーバでのミスは特に無くしたい 設定に間違いがあっても自動化しておく事で即修正可能 http://www.flickr.com/photos/jonathanbeard/3307862620/ 21
  • 22. それ、シェルスクリプトでよくね? サーバの状態が記述できるフレームワーク 基本的なタスクが備わっている 管理タスクの品質をできるだけ揃える Chefでは内部DSLを採用 Rubyでの柔軟な記述ができる プラットフォームの差異が吸収できる ディストリビューションによってコマンドに差異 yumとaptとか http://www.flickr.com/photos/photomequickbooth/4062072718/ 22
  • 23. Chefのシステムアーキテクチャ Ruby CouchDB Solr Merb(Rack) CouchDB Chef-Solr Indexer Solr RabbitMQ Chef-Server RabbitMQ (Java) API (Erlang) Chef-Server HTTP(REST) WebUI JSON Chef-Client Chef-Client Knife Chef-Client Client http://www.flickr.com/photos/jonathanbeard/3307862620/ 23
  • 24. Chefでの”主な”登場人物 Node Role Cookbook Recipe Template Attribute 時間の都合上、基本を簡単にご紹介します http://www.flickr.com/photos/jonathanbeard/3307862620/ 24
  • 25. Node, Role, Cookbook の関連(例) nginxのCookbook サーバA APサーバの Passengerの Role Cookbook サーバB RubyのCookbook サーバC gitのCookbook Node Role Cookbook 管理対象の 管理対象の システムのあるべき形を サーバ グルーピング 定義する設定 http://www.flickr.com/photos/jonathanbeard/3307862620/ 25
  • 26. Chefのリポジトリ構造 (Cookbook) cookbooks/ 設定したいパラメータ(各サーバ 固有のものやデフォルト値など) |-- attributes を記述したもの |-- definitions |-- files |-- libraries システムのあるべき姿、 |-- providers つまり設定内容を実際に 記載したRubyスクリプト |-- recipes |-- resources `-- templates サーバへ配置する設定ファイルの テンプレートで、eRubyで記述する http://www.flickr.com/photos/jonathanbeard/3307862620/ 26
  • 27. Recipe、Templateの一例 ./recipe/default.rb ./templates/default/ports.conf.erb package "apache2" do Listen <%= port %> action :install NameVirtualHost *:<%=port %> end template "/etc/apache2/ports.conf" do source "ports.conf.erb" ./attributes/default.rb owner "root" default[:port] = “8080" group "root" mode 0644 variables( :port => node[:port] ) end “port”:”80” “node A”の情報を保持 [Node Attribute], service "apache2" do [Run List] 等 action [ :enable, :start ] 実⾏するrecipeの設定 end chef-client node A 実⾏ Chef-Server http://www.flickr.com/photos/jonathanbeard/3307862620/ 27
  • 28. Chefで利用できるResource Cookbook File Mount Cron Ohai Deploy Package Directory PowerShell Script Erlang Call Remote Directory Execute Remote File File Route Git Ruby Block Group SCM HTTP Request Script Ifconfig Service Link Subversion Log Template Mdadm User http://www.flickr.com/photos/jonathanbeard/3307862620/ 28
  • 29. Chefのちょっとイケていないところ サーバのセットアップが面倒くさい サーバセットアップは最初だけなので許容できる Ubuntuだと割と楽かも。クライアントは簡単 名前がSEO的に致命的 Chef, Cookbook, Recipe, knife... リアルに調べ物をする時に困ります (dry-runができない) テスト環境が必須 (クラウド・仮想化が最適) 10.14系から利用可能に! http://www.flickr.com/photos/photomequickbooth/4062072718/ 29
  • 31. Chefを活用したサーバ増設 PXE + kickstart + Chef 1. 事前に chef-server 側でNodeの設定が必要 2. サーバに線を繋ぎ電源ON、PXEブート開始 3. Label No.とNode名を入⼒し、OSインストール開始 4. 同時に chef-client のインストールと設定 5. kickstart の %post で chef-client を実⾏ kickstartのcfgファイル 通常のOS インストールタスク 通信 client PXE+ksサーバ chef-clientのインストール OSインストール後 通信 chef-clientの設定 は直接通信 chef-clientの実⾏ Chef-Server http://www.flickr.com/photos/jonathanbeard/3307862620/ 31
  • 32. Kickstartでの %post スクリプト 1. Chef Clientのインストール 2. /etc/chef/client.rb の配置 3. “node_name”を取得・上記ファイルに設定 4. /etc/chef/validation.pemを配置 5. chef-clientコマンドを実⾏ 実際のOSインストール時にPXE Boot時に⼊⼒するラベル例 boot: 1 node=chef-test01 http://www.flickr.com/photos/jonathanbeard/3307862620/ 32
  • 33. Chefを活用したサーバ増設 今はオンプレミスな物理環境を想定 クラウド環境でも応用可能 EC2だと、事前にAMIを作成しておいて、user-dataに Node名を指定して... (弊社のOpenStackクラウド基盤を活用) http://www.flickr.com/photos/jonathanbeard/3307862620/ 33
  • 34. Cookbookの使い⽅ Cookbookの例 ネットワーク設定 H/Wに必要な設定 – 主にH/W固有で必要なドライバやRAIDチェックスクリプト等 各サーバ共通で必要な設定 – DNS, NTP, LDAP, 監視ライブラリ, 鍵交換等 各Roleで必要な設定 NodeへのCookbook設定例 RoleへのCookbook設定例 { { "run_list": [ "run_list": [ "recipe[network::xxxxx]", "recipe[ameba-common::pigglife]", "recipe[hw::dell_r310]", "recipe[pigglife-mongodb::mongod]" “role[pigglife-mongodb]" ] ] } } http://www.flickr.com/photos/jonathanbeard/3307862620/ 34
  • 35. Chefを使う上でやっていること Script Resource は基本的に使わない 何度でも実⾏される chef-client実⾏時のチェック・運用が面倒 何度実⾏しても問題ないものしか使わない 過去、こんな感じで書いていました... script “script_name" do interpreter "bash" user “username" creates comp_dir + “script_name.done" code <<-EOH command ...... ...... EOH end http://www.flickr.com/photos/jonathanbeard/3307862620/ 35
  • 36. Chefを使う上でやっていること 各nodeのChef適用は、chef-clientを実⾏ tomahawk: 複数のサーバで同じコマンドを実⾏ “knife ssh”, “knife ssh_cheto” 等も NodeのAttributeの登録 JSONファイルを自動⽣成して登録・バージョン管理 RoleもJSONファイル形式でバージョン管理 アンインストール・削除等の処理も忘れずに Environment(0.10〜)の活用 development, staging, productionの分別 http://www.flickr.com/photos/jonathanbeard/3307862620/ 36
  • 37. Chefを使う上でやっていること verbose_logging false デフォルトではInfoログが出過ぎる 影響のあった変更処理のみロギング why-run (0.10.14〜) Chefでの処理をnodeに反映しないテストモード CouchDBのバックアップ Chefサーバのバックアップ、/etc/chef 以下も – (Chefリポジトリをバージョン管理していて、そちらのバック アップがあれば特に必要ないかも) http://www.flickr.com/photos/jonathanbeard/3307862620/ 37
  • 38. Chefを運用する上での課題 Recipeが正しいことを保障するには? 仮想マシン等を活用してテスト – VirtualBoxの制御ができるVagrantが便利 – 本当に正しい処理が⾏われているかは人手での確認が必要 why-run – これも人手での判断が必要 Recipeのユニットテスト – 場合によっては十分、nodeが正しい状態を保障しきれない nodeでの自作チェックスクリプト・F/W http://www.flickr.com/photos/jonathanbeard/3307862620/ 38
  • 39. Cookbookでのコミュニケーション セットアップ手順のチェックをRecipe (Cookbook)という名のコードベースで DevとOpsのクロスチェック Cookbook/Node/Role等、バージョン管理して いるので、過去との差分も確認しやすい 誰でもRead/Writeできる場所にあるので、みん なでメンテナンスできる DevとOpsの新しいコミュニケーションツール http://www.flickr.com/photos/jonathanbeard/3307862620/ 39
  • 40. これからChefを勉強する⽅へ chef-solo が便利 chef-server を必要とせず、ローカルにCookbookを 適用できる 小環境ならこれで十分 他にも、VMとかでテストとか練習とか Chefのインタラクティブシェル “shef” Opscode Platform (Hosted Chef) Chefのホスティング環境 (サーバ) 5 nodes までなら、無料で試せる http://www.flickr.com/photos/jonathanbeard/3307862620/ 40
  • 41. まとめと今後の展望 Chefを活用することで多くのサーバの増設・管理 にかかる負担を軽減 あるべき状態に自動で設定・維持できる ルールを少し覚えれば、誰でも簡単に設定が書ける 内部DSLなので、Rubyを覚えれば処理も柔軟に書ける クラウド等の基盤サービスと連携して、インフラ 構築/運用の完全オートメーションができる仕組 みにしたい http://www.flickr.com/photos/jonathanbeard/3307862620/ 41
  • 42. Chefでサーバ管理の省⼒化 をはじめてみませんか? http://www.flickr.com/photos/jonathanbeard/3307862620/ 42