Dev ops
- 6. +
DevOpsの10ヶ条
【意訳】
1. インフラを自動化しよう
2. バージョン管理を共有しよう
3. ビルドとデプロイを1ステップで
4. 機能毎にブランチを切ろう
5. システムの指標を見えるようにしよう
6. 現状をIRCにつぶやくbotを使おう
7. 他のメンバに敬意を払おう
8. 他のメンバを信頼しよう
9. 失敗に対して健全に対処しよう
10.非難は無視しよう
http://www.slideshare.net/jallspaw/10-deploys-per-day-dev-and-ops-cooperation-at-flickr
- 9. +
DevOpsの事例
Obama for America(大統領選)
ボランティア開発
EC2でVM 4,000台規模 / Puppetで管理
Githubですべて管理
1日10回デプロイできますか? @ Flickr , @cookpad
1日1000回デプロイできますか? @amazon
日本でもWeb系で採用例がどんどん増えているみたいですよ
Web系のスタートアップ企業はほとんどが採用しているようです。
- 16. +
ツール群
インフラ周り
OS仮想化(VMWare / KVM / Vagrant )
クラウド構築(OpenStack / CloudStack / Eucaliptus)
ネットワーク仮想化(OpenFlow)
設定反映周り
マシン状態管理(Chef / Puppet / Ansible)
デプロイ(Capistrano / Fabric )
テスト周り
マシン状態 ( serverspec )
アプリケーション( selenium / silktest )
BDDツール( Cucumber )
管理関連
プロジェクト管理( Trac / redmine)
CIツール( Jenkins )
バージョン管理( git /mercurial / subversion )
監視関連
サーバ監視( Zabbix / Nagios / Hinemos )
ロギング( fluentd )
- 17. +
インフラ周り
VMWare / KVM
OS仮想化基盤、OSの上にOSを載せましょう
OpenStack / CloudStack / Eucaliptus
仮想化基盤の管理。AWSみたいなのを作りましょう
Vagrant
仮想化基盤の操作をコマンド化/コード化しよう
OpenFlow
ネットワークを仮想化/コード化しよう
- 18. +
VMWare / KVM / Xen / VirtualBox
皆さんご存知、OSの仮想化。
OS on OS (Hyper-visor)
メリットの出る場面例
物理マシン1台のリソースを余すところ無く使いたい
HWが今にも壊れそうなので移行したい
物理マシンが1台しかないけど、いろんなテスト環境がほしい
デメリット
オンプレと比較するとオーバーヘッドが大きい
- 19. +
OpenStack / CloudStack / Eucaliptus
クラウド環境構築・運用ソフトウェア
OS仮想化したけど、台数増えるとコマンドとか1台1台Hyper-visorにロ
グインしてVMを操作するの大変ですよね?
AWSみたいに使いたいですよね?
メリットの出る場面
人手で余るような大規模さや、そもそも人手でやっていてはどうしよう
もないときに効果を発揮する
DCとかHDDが1日1個壊れる環境とか、アクセスが増えた時に自動的
にVMの台数を増やすとか
GUIも一緒についてくるので、コマンド叩けなくてもなんとかなる!
デメリット
マシンが1台しかないのならESXiで十分
- 22. +
設定周り
Chef / Puppet / Ansible
サーバの状態・バージョン管理。サーバ状態をコード化しよう
Capistrano / Fabric
デプロイの自動化。デプロイ手順をコード化しよう
- 23. +
Chef / Puppet / Ansible
サーバ構成自動化ツール。インストール後のパッケージ管理や環境設定な
どをコード化。何度実行しても同じ結果になる冪等性という特徴。
ChefとPuppetはpush型、pull型(サバクラ)の両方ができますがサーバにイ
ンストールが必要です。Ansibleはpush型のみですが、サーバにSSHが
入っていれば利用できます。最近流行ってます。ChefはRubyでかけます。
メリットの出る場面
試験環境と同じアプリケーションをインストールしたいですよね?環境構築手順
書を書くなら、そのまま動く手順書を作りたいですよね?
インストールとかでミスしませんか?私はよくします。マシン10台で初期設定し
ろとか言われたら泣きますよね?
AWSでOS起動を自動化してもインストール手作業だったら意味ないじゃない!
デメリット
ChefとPuppetはリモートマシンに専用のインストールが必要。
Linux専用です。WindowsにはSystemCenter?があるそうです。
- 24. +
Capistrano / Fabric
デプロイの自動化ツール。リモートマシンで指定のコマンドを叩
きます。サーバにsshが入っていれば利用できます。
CapistranoはRubyでかけます。FabricはPythonでかけます。
メリットの出る場面
テスト環境と同じデプロイ手順を行いたい場合。デプロイの手順書はい
つも最新化されていますか?
幾つものサーバで同じ操作をする必要が有る場合
あなたはデプロイでミスをしませんか?私はします
開発環境をいちいち作るの面倒じゃないですか?
デメリット
Linux専用。Windowsでは「DevOps workbench」というのがでたそう
な。(capistranoはWinRDでWindowsでも使えるみたいなノリの表示は
出るけど、試してません)
- 27. +
selenium / SilkTest
UIテスト自動化ツール。回帰テストなどの何度もテストを実施
するときのお供に。
メリットの出る場面
回帰テストがたくさん出るプロジェクト
アジャイル/TDDをやっているプロジェクト
リファクタリングするときに
デメリット
2度目以降のUIテストを自動化するツールなので、テストを1回しか
しないのであれば、手動の方が早いです。
SilkTestは有料です。
- 31. +
Git / mercurial / Subversion
バージョン管理ツール。git/mercurialは分散型。subversionは中央
集中型。
Githubとか有名ですよね?
メリット
コードのバージョン管理・開発の状態管理。
先のインフラ自動化ツールを使えば、環境のバージョン管理や、デプロ
イ手順のバージョン管理が行える。
Jenkinsおじさんと連携すれば、pull requestされた時にテストして結果
を返してくれる。
デメリット
学習コスト
- 33. +
Zabbix / Nagios / Hinemos
監視システム。監視・通知をする運用ツール
Zabbix/Nagiosはmunin/gangliaなどのリソースモニタリングツー
ルと一緒にどうぞ。
Hinemosはジョブ設定などもできるらしいですが、皆さんのほう
が詳しいんじゃないんでしょうか?
メリットのある場面
商用環境なら入れましょう
アクセス負荷などでサーバがやばい状態になったかどうかわかります。
通知とかできます。
デメリット
アプリケーションのインストールが必要