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

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

Run Book Automation(RBA)

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

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

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

別記事として独立。

Code as Infrastructure

Code as Infrastructure、訳すと、インフラストラクチャーとしてのコード。

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

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

Infrastructure as Code と呼ばれている場合もある。

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

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

  • 手順書をコードとして扱う。
  • コードレビューする。
  • コードをバージョン管理する。

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

Puppet/Chef

このCode as Infrastructureという概念を実現するツールが、PuppetやChef。

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

Test-Driven Infrastructure

ソフトウェア開発のようにインフラを構築するという潮流の中、 Test Driven Developmentのようにインフラを構築しようというのがこの概念。

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

ServerSpec

サーバに対する設定をRSpecのようにテストしながら実施するためのツール。

まさに、TDDをインフラに当てはめたツール。

RRRSpec

数日前に現れたRRRSpecもなかなかよさそうな予感を感じるのでとりあえずブックマーク。

Blue-Green Deployment

稼働しているシステム(Blue)と待機しているシステム(Green)の2つを用意する。

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

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

-「Blue-Green Deployment」とは何か、マーチン・ファウラー氏の解説 - Publickey

Immutable Infrastructure

2014年現在、もっとも熱いキーワード。このキーワードを今年一年はWatchしようと思ってる。

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

Immutableとは、不変性。

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

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

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

Vagrant

手軽に仮想化環境を手に入れるツールが、vagrant。 vargrantとは、仮想環境をコマンドラインから操作することができるオープンソースRubyスクリプト。

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

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

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

ブックマークも大量リンク。

その他の用語

idempotence(べき等性)と immutability(不変性)

べき等性とは、同じサーバに何度も chef/puppet 実行を繰り返しても、 同じ結果が得られることが保証されるという性質。Puppet や Chefの

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

ConfigurationとOrchestration

Configurationは、 いわゆる構成管理ツール。 サーバにたいしてツールを入れたり設定したりすること。

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

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

Amazon と Google/ AWS と MVM

2013年にAmazonが AWSという仮想化サービスを開始した。 それに対抗するようにGoogleが Managed Virtual Machinesというサービスをスタートさせた。

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

まとめ

今までの用語をまとめた自分の中でのイメージは以下のような感じ。

インフラ構築のためのテストコードを書いて、 vagrantのような仮想環境を用いてそのテストを検証する。
        
TDDの小さなサイクルを繰り返しつつ、着実に手順を構築していく。
      
仮想環境によってなんどもなんども手順がテストされて安全性が高まる。
      
そして、本番のインフラ構築では十分仮想環境で検証したテストコードによって 自動でインフラが構築される。

構築されたインフラは構築時から変更されていないことが保証されている。
      
なにか不具合があれば、その環境を破棄してまた一から作り直す。