2014年末時点の
DevOps概観

@kbigwheel

DevOpsって何?

  • DevOps(デブオプス)は、ソフトウェア開発手法の一つ。開発 (Development) と運用 (Operations) を組み合わせたかばん語であり、開発担当者と運用担当者が連携して協力する開発手法をさす。 by wikipedia

自分流に言い換えると、
今までインフラが手作業でやっていた
以下のことをプログラムで自動的にやること

  • VM作成・破棄
  • OS・ミドルウェアインストール
  • ネットワーク設定
  • デプロイ

サーバーの構築・ミドルウェアのインストール・デプロイが
運用マターだったのは過去の話

今後は​エンジニアが自力で運用もできることが
要求されるようになる

仮想化技術の発展・IaaSの経済的合理化により
オンプレミスの保守点検を専門とした
インフラ屋さんはなくなったり極端に減ったり、
ごく一部の専門家のみになる

目下DevOpsに関連する
代表的なプロダクト

  • Chef, Puppet, Ansible
  • Docker
  • Lxc, OpenVZ, Linux-VServer
  • VirtualBox, VMWare
  • Vagrant
  • IaaS
    • AWS, Azure, GCE
  • PaaS
    • Heroku, GAE

図を書くのが面倒なので、
ここでホワイトボードを使って
相互関連性を説明

いいたい:

  • まだ新しい技術ゆえ、
    • 洗練されてない
    • ベストプラクティスがない
    • 同じ目的のツールが乱立
    • 相互に密接に関係しておりわかりづらい

興味があっても最初の1歩が困難

ようは今DevOpsツール
戦国時代なわけです

こういうとき、候補が複数あるツールから将来残るのを選べないと勉強し直すことになります

  • hg, bazaar(gitに敗北)
  • apptitude(apt-getに敗北)
  • ベータ(VHSに敗北)
  • ドリキャス(PS2・N64に敗北)

ただ、最近各競合ツールでの勝敗が見えてきた

プロビジョニングツール

だいたい最初からChefが
Puppet, Ansibleに対して優勢

chefはあまりに優勢であるため、
chef用のツールですら同じ目的のものが
複数ある始末だったのだけど、最近開発元が
公式支援ツールを定めたので決着ついた感じ

あとchef-serverを使わない小規模な活用ではchef-soloに代わりchef-zeroが今後は公式ツール

終わったはずのvagrant-berkshelfの代替については、
まあvagrant-berkshelfなんだかんだでメンテナンスされてるし
しばらく使えばいいんじゃないかな

今はtest-kitchen(+serverspec), chefspec, berkshelf, Foodcriticが正義

ハードウェアレベル仮想化(VirtualBox, VMWare)用のツール

Vagrant一択

  • ほぼ競合がいないため一択
  • 競合がなかったためリソースが集中しており
    プラグインが豊富

OSレベルの仮想化ツール

  • ただDockerの機能的優位性が確かでないらしく
    いろんな組織がDockerオルタナティブを活発に発表してるため、もう一荒れありそう
  • とはいうものの多分次の転換期は数年後なので
    しばらくはdockerど安定

LXC直、OpenVZなど多数の
アプローチがあったが

ここ1年ぐらいでDockerへ急速に収束

IaaS

  • 知名度的にAWS, GCE, Azureが3強だがほぼ拮抗
  • 割と学習コスト高いので全賭けは危険
  • AWSが日本的にはノウハウが溜まっており、一日の長
    • が、システムが全体的に複雑すぎる欠点あり

 

 

個人的にはPaaSで事足りるケースが殆んどであるため興味なし

まさに混沌

PaaS

  • Heroku, GAE以外にも乱立しているが
    個人的にはHeroku一択
    • 学習コストの低さ
      • 最低限の設定ファイルを書けばgit pushでデプロイ
    • 稼働させられるアプリケーションの自由度の高さ
      • Ruby, Python, Node.js, PHP, Closure, Scala, Java
    • 性能が必要なければ無料で無期限に動かせる手軽さ

というわけで、

おすすめ勉強ルート

  1. chef(プロビジョニングの基本)
    • test-kitchen(+serverspec)でテスト
    • できればchefSpecも学ぶ
  2. Vagrantでchefを適応したVM作成
    • Berkshelfで複数のchefの取り回しを理解
  3. Docker
    • chef-zeroなど活用してchefを適用
  4. IaaSどれかでサービスを開始

まとめ

  • 偉そうに書きつつDockerほぼ触ってない
  • chefspecも一度も書いたことない
  • おすすめ勉強ルートでも書いたけど、chefがすべての基本
    • 洗練されてないしやりたいことに対して複雑すぎるし
      もっといいプロダクトが後々出てきそうだけど、
      実現しようとしてる概念は後々でも腐らないので諦めて勉強しよう

というわけで、勉強を兼ねてうちのプロダクト用
のchefをレビューしてください(主に僕の両隣の人)

2014年末時点でのDevOps周りOverview

By kbigwheel

2014年末時点でのDevOps周りOverview

  • 1,647