humangas's blog

自分用のメモなので雑です。

2014-02-13_Developers Summit 2014に行ってきた(「サーバープロビジョニングのこれまでとこれから」のみ)#devsumiB

f:id:Humangas:20140213094014j:plain

聞きながらダァ~と書いたメモ。自分の感想なんかも入り混じり系。
参加申し込みが遅く、このセッションしか取れなかったのでコレだけ。 が、インフラエンジニアの端くれとしては、これが一番聞きたかったので聞けてよかったス。
もちろん、聞いて良かった。会場は満員パンパン。

どーでもいいが、帰りのJR目黒駅までの何とか坂がメタボにはキツくて、ハァハァなった。。

コチラに資料が纏められている。


サーバープロビジョニングのこれまでとこれから

  • 2014/02/13 10:00-10:45
  • 宮下剛輔 氏
  • あの、サーバーインフラ用テストフレームワーク「serverspec」の開発者の人


セッション概要引用

2013年はImmutable Infrastructureという言葉の登場により、サーバインフラ系技術の流れが大きく動いていることが、多くの人に認知された年でした。
このセッションでは、サーバプロビジョニングを軸として、インフラ系技術のこれまでについて振り返るとともに、今後どうなっていくのか、といった展望を、Infrastructure as Code、テスト駆動インフラ、Immutable Infrastructure、Dockerといったキーワードを元にお話したいと思います。

Keyword

  • Immutable Infrastructure:「イミュタブル・インフラと呼ぶ」
    • 壊れたら捨てて、またサーバ新しく作ればいいんじゃね。冪等性に拘りすぎちゃうよりも。だってIaaSなら出来るっしょ。という考え方(手法)
  • Infrastructure as Code
    • インフラもコードで書く: AWS なんて正にコレ。
  • テスト駆動インフラ
    • インフラコードで書けるんだから、インフラもアプリみたいにテスト自動化っしょ。
  • Docker
    • 名前は知ったけどイマイチよく分からなかったので調べると。。コンテナ(これもLinux)上で、複数の隔離された(=独立した)Linuxを動かすつーもので、OSレベルの仮想化ソフトウェア=これをLXC(Linux Containers)と呼ぶ。
    • ざっくり言うと、Linux上(これをコンテナという)でLinux動かすんだけども、その管理部分を便利に操作できるツールがDocker。 何となく分かった。
  • serverspec
    • 今回のスピーカー宮下さんが作ったサーバインフラ用テストフレームワーク:インフラテストも自動だ!

自分戒め

  • 最近のインフラキーワード&ツール&流れはだいたい分かった。
  • が、これは触らないと分からないので、触るんだ。オレ。で、アウトプットせよ。
  • このセッションはその辺、ひと通り抑えてあるのでこれに従ってやろう。

はじめに

  • インフラは指す範囲が広い
  • → このセッションでのインフラ=アプリケーションを載せるためのインフラとして聞いて下さい。

サーバープロビジョニングとは?

f:id:Humangas:20140213100936j:plain

  • Velocity 2010:リー・トンプソン氏の図
  • サーバープロビジョニングは、3つのレイヤで整理すると分かりやすい
  • レイヤ:Bootstrapping→ Configuration→ Orchestration
  • ツール:AWS EC2/OpenStack→ Puppet/Chef→ Capistrano/Fabric
  • → それぞれのレイヤが何なのかは、ツールに対比させて見たほうがイメージ湧きやすい

Configuration


Infrastructure as Code

  • インフラをコードで書くということ
  • 2008年ぐらいから言葉が出始めた
  • → AWS SDKなんかがイメージ湧きやすいかな。まんまなので。
  • サーバ構築・運用におけるワークフローに変革を与えるモノと思ってる

構成管理ツールの要件はCFEngine時から言われてた

f:id:Humangas:20140213101638j:plain

  • 後発のPuppetもChefもこの考えに従ってる。

テスト駆動インフラ

  • テスト駆動インフラが駆動するのは、インフラそのものではなく、インフラを記述したコードを書くこと。
  • リファクタリング対象もインフラそのものではなく、そのコード。
  • serverspecはインフラの状態を見るんではなく、インフラの状態を記述した「コード」をテストするためのツール。
  • → 確かに。。この考えは重要だな。勘違いしてはいけない。ごっちゃにすると、問題の切り分けをミスる。

「Infrastructure as Code」から「Test-Driven Infrastructure」へ

  • インフラもコードで書けるんだから、アプリみたいにテストも自動で出来るんじゃね? みたいに始まった
  • Chef界隈で賑わってる:Chefだと→ Test Kitchen
  • → コードでインフラを記述を更に推し進めたのが、"Chef"だから
  • → レシピがRubyそのものなので、さらに開発者向き、親しみやすいから

インフラCI/GitHub Flow

  • インフラのコード化とテスト自動化ときたら、そりゃ次はCIでしょ。
  • ということで、Jenkins氏登場
  • GitHub Flowをインフラワークフローに取り入れて開発しちゃう。

Immutable Infrastructure(Disposable Component)

  • 長いので、「イミュタブル・インフラ」と呼ぶ
  • チャド・ファウラー氏が言った
  • Immutableよりも、Disposableのほうがむしろ重要
  • 全く新しいサーバ建てて、ロードバランサ等で切替、切替完了したら古いサーバ棄てる
  • 2012 AWS re:Invent Day 3 Keynote: Werner Vogels の絵が分かりやすいかも
  • これは、「Blue-Green Deployment」という手法で以前からあったらしいが、Immutable Infraのほうがキャッチーなので、一般化してきた

メリット

  • 変更に伴うトラブルが起こりにくい: 変更加えずに新しく建てるから関係ない
  • Chef、Puppetのようなツールがよりシンプルになる: 冪等性に拘りすぎなくて良くなるから
  • 必読:設計への良い影響:「The Twelve-Factor App IX. Disposability」by Heroku

Container Base Deployment

  • Immutable Infrastructure の応用的なやつ
  • コンテナ?: 単機能・軽量なVM(便宜上の理解)
  • コンテナを丸ごと差し替える(ロードバランサとかで)

Docker:ツール

  • Dockerの持つポータビリティにより実現可能性が高まった

メリット

  • ローカルでテスト→ 本番にデプロイ
  • テスト駆動→ CI→ デプロイ という流れ出来るんでは。
  • 1コンテナ1機能にしてシンプルに出来る
  • サーバ部品のコンポーネント化も出来るようになるんでは。
  • コンポーネント進む→ シンプルになる→ 品質よくなる
  • 単機能化することにより、テスタビリティも向上
  • → 確かに。 これらを使いこなせばこうなるな。
  • Mesos/YARN等との組合せで自動的なリソース最適化

Orchestration

  • Configuration = 単一のサーバで完結:e.g., ApacheとかMWのインストール
  • Orchestration = 複数のサーバが関連:e.g., ロードバランサ、アプリデプロイ
  • と、捉えると分かりやすいかも

旧来のOrchestration

  • Immutable Infrastructure 前の世界
  • サーバの増減が頻繁ではないので、Configuration領域でもやれてしまう
  • Command & Control

新しいOrchestration

  • Immutable Infrastructure 前提の世界
  • サーバ増減頻繁なので、Configuration領域での対応はきつい
  • Autonomy/自律強調

Serf:ツール

  • 「サーフ」と呼ぶ。
  • Vagrant、Packerのミッチェルさんが作った。
  • ノード追加されたら自動でNagios監視とか出来る
  • ノードのクラスタリング
  • → これ知らねぇ。調べないと。。

まとめ

こんだけ組合せれば、インフラも超楽になる。

  • テスト駆動でインフラ構築
  • BootstrappingにDocker
  • Configuration にPuppet、Chef
  • テストにserverspec
  • インフラもCIで
  • リソース配置はMesos/YARNで自動
  • SerfでOrchestration

とはいえ、まだまだ実用段階になるまでは、課題もある。

広告を非表示にする