インフラ業界の技術動向について調べてみたブックマークとキーワード集。
なんだか、調べれば調べるほどインフラまわりが熱いということがわかった。
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については去年自分でもちょっと遊んでた。なつかしいね、今となっては挫折したけど。
- vagrantがスゲエ!コマンドラインからVirtualBoxを自由自在に操る方法 | Futurismo
- 仮想環境を破壊しまくっても大丈夫だ、問題ない。vagrantプラグイン『sahara』 | Futurismo
- ミライの組込み開発!vagrant × sahara × minitestで実現する仮想エンドツーエンドテスト | Futurismo
links
ブックマークも大量リンク。
- Infrastructure as Codeと 組織のドキュメンテーション + Immutable Infrastructure事例
- Immutable Infrastructureが開発プロセスに与える影響(仮) #immutableinfra // Speaker Deck
- Immutable Infrastructure~デプロイメントをめぐるシステムインフラの管理~ | NTTデータ
- Immutable Infrastracture について - apatheia.info
- 2014年のウェブシステムアーキテクチャ - stanaka’s blog
- Immutable_Infrastructure - Immutable Infrastructure 【インフラ環境もソースコード管理しよう】 - Qiita
その他の用語
idempotence(べき等性)と immutability(不変性)
べき等性とは、同じサーバに何度も chef/puppet 実行を繰り返しても、 同じ結果が得られることが保証されるという性質。Puppet や Chefの
不変性とは、システムが自動的に生成され、 その時点からいちども変更されていないことが保証されている性質。 関数型プログラミングのパラダイムが影響を与えている。
ConfigurationとOrchestration
Configurationは、 いわゆる構成管理ツール。 サーバにたいしてツールを入れたり設定したりすること。
それにたいし、Orchestrationとは、 複数のモジュール(サーバ、ストレージ、スイッチ)が組み合わさったシステムに ついての設定をしたりすること。
サーバの構築をprovisioningという大きな用語でとらえ、 さらにそれを以下の3つに分類する言い方もある。
- Provisioning
- Bootstrapping … OSインストール
- Configuration … サーバ単体構築
- Orchestration … システム構築
- インフラ系技術の流れ - Gosuke Miyashita
- Developers Summit 2014 で「サーバプロビジョニングのこれまでとこれから」という発表を行いました - Gosuke Miyashita
Amazon と Google/ AWS と MVM
2013年にAmazonが AWSという仮想化サービスを開始した。 それに対抗するようにGoogleが Managed Virtual Machinesというサービスをスタートさせた。
Amazon vs Googleという対立構造になるのだろうか??
- クラウドコンピューティング なら アマゾン ウェブ サービス | 仮想サーバー、ストレージ、データベースのための Amazon のクラウドプラットフォーム(AWS 日本語)
- [速報]Google、AWS対抗をあらわにした値下げと新価格体系を発表。継続利用で自動値引き - Publickey
- [速報]Google、「Managed Virtual Machines」発表。Google App Engine内で仮想マシンを管理 - Publickey
まとめ
今までの用語をまとめた自分の中でのイメージは以下のような感じ。
インフラ構築のためのテストコードを書いて、 vagrantのような仮想環境を用いてそのテストを検証する。
TDDの小さなサイクルを繰り返しつつ、着実に手順を構築していく。
仮想環境によってなんどもなんども手順がテストされて安全性が高まる。
そして、本番のインフラ構築では十分仮想環境で検証したテストコードによって 自動でインフラが構築される。
構築されたインフラは構築時から変更されていないことが保証されている。
なにか不具合があれば、その環境を破棄してまた一から作り直す。