26 Mar 2014, 16:42

インフラ業界の気になるキーワードについて調べてみた

インフラ業界の技術動向について調べてみたブックマークとキーワード集。

なんだか、調べれば調べるほどインフラまわりが熱いということがわかった。

Run Book Automation(RBA)

構築手順を示したドキュメントを英語ではRun Bookと読んでいる。

ドキュメントは、Excelベースのパラメータシートで管理されることが多い。

そして、そのパラメータシートにしたがった手順を自動したものを Run Book Automationという。

別記事として独立。

Code as Infrastructure

<div class="outline-text-2" id="text-2">
  <p>
    Code as Infrastructure、訳すと、インフラストラクチャーとしてのコード。
  </p>

  <p>
    インフラ構築、管理の手順をコードとして扱う概念。<br /> Excel管理の手順書からスクリプトを実行するのではなくて、初めからコードとして手順を記述する。
  </p>

  <blockquote>
    <p>
      インフラストラクチャのコンフィグレーションがスクリプトやファイルによって記述され、バージョン管理されており、その変更が自動的にデータセンターに反映されるやり方を指す。
    </p>
  </blockquote>

  <ul class="org-ul">
    <li>
      <a href="http://www.publickey1.jp/blog/11/rubyjavascriptthoughtworks.html">プログラマブルなインフラ、Ruby、JavaScriptなどが重要なテクノロジと評価される。ThoughtWorksのレポート - Publickey</a>
    </li>
  </ul>

  <p>
    Infrastructure as Code と呼ばれている場合もある。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://d.hatena.ne.jp/naoya/20131215/1387090668">Infrastructure as Code &#8211; naoyaのはてなダイアリー</a>
    </li>
  </ul>

  <blockquote>
    <p>
      単にサーバー構成変更を自動化しましょうという話ではなく、<br /> インフラをすべてソフトウェアとして、<br /> コードで扱うことでアプリケーション開発で行われてきたいろいろな<br /> &#8220;ワークフロー&#8221; をインフラ作業の世界にも導入しましょうねと、そういうことであります
    </p>
  </blockquote>

  <p>
    ニュアンスとして、RBAよりも、よりソフトウェア開発的な文化を感じる。
  </p>

  <ul class="org-ul">
    <li>
      手順書をコードとして扱う。
    </li>
    <li>
      コードレビューする。
    </li>
    <li>
      コードをバージョン管理する。
    </li>
  </ul>

  <p>
    そういえば、こんな本も最近本やで見かけた。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://www.amazon.co.jp/%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-~%E5%AE%89%E5%AE%9A%E7%A8%BC%E5%8B%95%E3%81%AB%E5%B0%8E%E3%81%8F127%E3%81%AE%E8%A8%AD%E8%A8%88%E6%96%B9%E5%BC%8F-WEB-PRESS-plus/dp/4774162868">Amazon.co.jp: インフラデザインパターン ~安定稼動に導く127の設計方式 (WEB+DB PRESS plus): 株式会社NTTデータ, 杉原 健郎, 吉田 一幸, 岩崎 賢治, 三浦 広志, 吉田 佐智男: 本</a>
    </li>
  </ul>
</div>

<div class="outline-3" id="outline-container-sec-2-1">
  <h3 id="sec-2-1">
    Puppet/Chef
  </h3>

  <div class="outline-text-3" id="text-2-1">
    <p>
      このCode as Infrastructureという概念を実現するツールが、PuppetやChef。
    </p>

    <p>
      Puppet/Chefは、先に書いたRBA本に紹介されている。Chef専用の解説本もKindleで購入できるので、さっそく買った。
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://www.amazon.co.jp/%E5%85%A5%E9%96%80Chef-Solo-Infrastructure-as-Code-ebook/dp/B00BSPH158">Amazon.co.jp: 入門Chef Solo &#8211; Infrastructure as Code eBook: 伊藤直也: Kindleストア</a>
      </li>
    </ul>
  </div>
</div>

Test-Driven Infrastructure

<div class="outline-text-2" id="text-3">
  <p>
    ソフトウェア開発のようにインフラを構築するという潮流の中、<br /> Test Driven Developmentのようにインフラを構築しようというのがこの概念。
  </p>

  <p>
    本も最近第2藩としてリニューアルされたようだ。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://shop.oreilly.com/product/0636920030973.do">Test-Driven Infrastructure with Chef, 2nd Edition &#8211; O&#8217;Reilly Media</a>
    </li>
  </ul>
</div>

<div class="outline-3" id="outline-container-sec-3-1">
  <h3 id="sec-3-1">
    ServerSpec
  </h3>

  <div class="outline-text-3" id="text-3-1">
    <p>
      サーバに対する設定をRSpecのようにテストしながら実施するためのツール。
    </p>

    <p>
      まさに、TDDをインフラに当てはめたツール。
    </p>
  </div>
</div>

<div class="outline-3" id="outline-container-sec-3-2">
  <h3 id="sec-3-2">
    RRRSpec
  </h3>

  <div class="outline-text-3" id="text-3-2">
    <p>
      数日前に現れたRRRSpecもなかなかよさそうな予感を感じるのでとりあえずブックマーク。
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://techlife.cookpad.com/2014/03/24/rrrspec/">分散テスト実行システムRRRSpecをリリースしました | クックパッド開発者ブログ</a>
      </li>
    </ul>
  </div>
</div>

Blue-Green Deployment

<div class="outline-text-2" id="text-4">
  <p>
    稼働しているシステム(Blue)と待機しているシステム(Green)の2つを用意する。
  </p>

  <p>
    両者はルータで接続されていて、いつでも切り替えられる。
  </p>

  <p>
    デプロイは、ルータを切り替えることでダウンタイムを最小にしつつ、<br /> システムを切り替えることで実現する。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://martinfowler.com/bliki/BlueGreenDeployment.html">BlueGreenDeployment</a>
    </li>
  </ul>

  <p>
    &#8211;<a href="http://www.publickey1.jp/blog/14/blue-green_deployment.html">「Blue-Green Deployment」とは何か、マーチン・ファウラー氏の解説 - Publickey</a>
  </p>
</div>

Immutable Infrastructure

<div class="outline-text-2" id="text-5">
  <p>
    2014年現在、もっとも熱いキーワード。このキーワードを今年一年はWatchしようと思ってる。
  </p>

  <p>
    最近、立て続けにカンファレンスが開かれたようだ。
  </p>

  <ul class="org-ul">
    <li>
      <a href="http://dev.classmethod.jp/cloud/immutable-infrastructure-conference-no-1/">Immutable Infrastructure Conference #1 に参加してきた #immutableinfra | Developers.IO</a>
    </li>
  </ul>

  <p>
    Immutableとは、不変性。
  </p>

  <p>
    インフラを一度構築したらその設定が変更されていないことを保証する考え方。
  </p>

  <p>
    サーバに変更が必要になったら、運用中のサーバには触らない。<br /> コードに変更を加えて、新規にサーバを構築しなおす。<br /> そして、いらなくなったらサーバを破棄する。
  </p>

  <p>
    Immuabilityは、仮想化技術が大前提。<br /> サーバをつくったり、捨てたりといったことは仮想化技術があるからこそできる。
  </p>
</div>

<div class="outline-3" id="outline-container-sec-5-1">
  <h3 id="sec-5-1">
    Vagrant
  </h3>

  <div class="outline-text-3" id="text-5-1">
    <p>
      手軽に仮想化環境を手に入れるツールが、vagrant。<br /> vargrantとは、仮想環境をコマンドラインから操作することができるオープンソースRubyスクリプト。
    </p>

    <p>
      仮想環境はいくらでもこわし放題、手軽になんどでも構築できる。
    </p>

    <p>
      去年はvagrantの登場と盛り上がりによって、インフラ界隈の話題により火がついたように見えた。
    </p>

    <p>
      Vagrantについては去年自分でもちょっと遊んでた。なつかしいね、今となっては挫折したけど。
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://futurismo.biz/archives/1651">vagrantがスゲエ!コマンドラインからVirtualBoxを自由自在に操る方法 | Futurismo</a>
      </li>
      <li>
        <a href="http://futurismo.biz/archives/1660">仮想環境を破壊しまくっても大丈夫だ、問題ない。vagrantプラグイン『sahara』 | Futurismo</a>
      </li>
      <li>
        <a href="http://futurismo.biz/archives/1667">ミライの組込み開発!vagrant × sahara × minitestで実現する仮想エンドツーエンドテスト | Futurismo</a>
      </li>
    </ul>
  </div>
</div>

<div class="outline-3" id="outline-container-sec-5-2">
  <h3 id="sec-5-2">
    links
  </h3>

  <div class="outline-text-3" id="text-5-2">
    <p>
      ブックマークも大量リンク。
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://www.slideshare.net/YukihikoSawanobori/jawsdays-infra">Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例</a>
      </li>
      <li>
        <a href="https://speakerdeck.com/naoya/immutable-infrastructuregakai-fa-purosesuniyu-eruying-xiang-jia-number-immutableinfra">Immutable Infrastructureが開発プロセスに与える影響(仮) #immutableinfra // Speaker Deck</a>
      </li>
      <li>
        <a href="http://www.nttdata.com/jp/ja/insights/trend_keyword/2013122601.html">Immutable Infrastructure~デプロイメントをめぐるシステムインフラの管理~ | NTTデータ</a>
      </li>
      <li>
        <a href="http://apatheia.info/blog/2013/08/10/immutable-infrastructure/">Immutable Infrastracture について &#8211; apatheia.info</a>
      </li>
      <li>
        <a href="http://blog.stanaka.org/entry/2013/12/01/092642">2014年のウェブシステムアーキテクチャ &#8211; stanaka&#8217;s blog</a>
      </li>
      <li>
        <a href="http://qiita.com/kasaharu/items/654d20dbea935438de78">Immutable_Infrastructure &#8211; Immutable Infrastructure 【インフラ環境もソースコード管理しよう】 &#8211; Qiita</a>
      </li>
    </ul>
  </div>
</div>

その他の用語

<div class="outline-text-2" id="text-6">
</div>

<div class="outline-3" id="outline-container-sec-6-1">
  <h3 id="sec-6-1">
    idempotence(べき等性)と immutability(不変性)
  </h3>

  <div class="outline-text-3" id="text-6-1">
    <p>
      べき等性とは、同じサーバに何度も chef/puppet 実行を繰り返しても、<br /> 同じ結果が得られることが保証されるという性質。Puppet や Chefの理念。
    </p>

    <p>
      不変性とは、システムが自動的に生成され、<br /> その時点からいちども変更されていないことが保証されている性質。<br /> 関数型プログラミングのパラダイムが影響を与えている。
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://blog.mirakui.com/entry/2013/11/26/231658">今さら聞けない Immutable Infrastructure &#8211; 昼メシ物語</a>
      </li>
    </ul>
  </div>
</div>

<div class="outline-3" id="outline-container-sec-6-2">
  <h3 id="sec-6-2">
    ConfigurationとOrchestration
  </h3>

  <div class="outline-text-3" id="text-6-2">
    <p>
      Configurationは、 いわゆる構成管理ツール。<br /> サーバにたいしてツールを入れたり設定したりすること。
    </p>

    <p>
      それにたいし、Orchestrationとは、<br /> 複数のモジュール(サーバ、ストレージ、スイッチ)が組み合わさったシステムに<br /> ついての設定をしたりすること。
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://wslash.com/archives/=5216">今年流行りそうな「インフラエンジニア」向けトレンドのまとめ その1 (Blue-Green DeploymentとImmutable Infrastructure編)</a>
      </li>
    </ul>

    <p>
      サーバの構築をprovisioningという大きな用語でとらえ、<br /> さらにそれを以下の3つに分類する言い方もある。
    </p>

    <ul class="org-ul">
      <li>
        Provisioning <ul class="org-ul">
          <li>
            Bootstrapping … OSインストール
          </li>
          <li>
            Configuration … サーバ単体構築
          </li>
          <li>
            Orchestration … システム構築
          </li>
        </ul>
      </li>

      <li>
        <a href="http://mizzy.org/blog/2013/10/29/1/">インフラ系技術の流れ &#8211; Gosuke Miyashita</a>
      </li>
      <li>
        <a href="http://mizzy.org/blog/2014/02/14/1/">Developers Summit 2014 で「サーバプロビジョニングのこれまでとこれから」という発表を行いました &#8211; Gosuke Miyashita</a>
      </li>
    </ul>
  </div>
</div>

<div class="outline-3" id="outline-container-sec-6-3">
  <h3 id="sec-6-3">
    Amazon と Google/ AWS と MVM
  </h3>

  <div class="outline-text-3" id="text-6-3">
    <p>
      2013年にAmazonが AWSという仮想化サービスを開始した。<br /> それに対抗するようにGoogleが Managed Virtual Machinesというサービスをスタートさせた。
    </p>

    <p>
      Amazon vs Googleという対立構造になるのだろうか??
    </p>

    <ul class="org-ul">
      <li>
        <a href="http://aws.amazon.com/jp/">クラウドコンピューティング なら アマゾン ウェブ サービス | 仮想サーバー、ストレージ、データベースのための Amazon のクラウドプラットフォーム(AWS 日本語)</a>
      </li>
      <li>
        <a href="http://www.publickey1.jp/blog/14/googleawsbigquery75.html">[速報]Google、AWS対抗をあらわにした値下げと新価格体系を発表。継続利用で自動値引き - Publickey</a>
      </li>
      <li>
        <a href="http://www.publickey1.jp/blog/14/googlemanaged_virtual_machinesgoogle_app_engine.html">[速報]Google、「Managed Virtual Machines」発表。Google App Engine内で仮想マシンを管理 - Publickey</a>
      </li>
    </ul>
  </div>
</div>

まとめ

<div class="outline-text-2" id="text-7">
  <p>
    今までの用語をまとめた自分の中でのイメージは以下のような感じ。
  </p>

  <p>
    ・・・
  </p>

  <p>
    インフラ構築のためのテストコードを書いて、<br /> vagrantのような仮想環境を用いてそのテストを検証する。
  </p>

  <p>
    TDDの小さなサイクルを繰り返しつつ、着実に手順を構築していく。
  </p>

  <p>
    仮想環境によってなんどもなんども手順がテストされて安全性が高まる。
  </p>

  <p>
    そして、本番のインフラ構築では十分仮想環境で検証したテストコードによって<br /> 自動でインフラが構築される。
  </p>

  <p>
    構築されたインフラは構築時から変更されていないことが保証されている。
  </p>

  <p>
    なにか不具合があれば、その環境を破棄してまた一から作り直す。
  </p>
</div>