norinyang メガ進化!

気ままに色々

いみゅーたぶるいんふらすとらくちゃーってなに?

なんか最近よく聞くので自分なりにまとめてみた

そもそも Immutable Infrastructure とは何ぞや?

環境を使い捨てることによって、インフラ(サーバ)の状態を管理することをやめる
という発想のこと

だと理解している
(もうここから間違っている可能性すらある)

環境を使い捨てるには

環境を使い捨てるといっても、毎回1からセットサーバをセットアップしていたらとんでもなく大変
なので、これを物理サーバでやるのはすごく大変
仮想サーバでやることが前提

永続性が必要なものや、ステートフルなものを捨てられないから対処が必要
とりあえず、DBのように絶対に捨てられない&移行が難しいものに関しては考えないことにしている(ようである)
アプリケーションサーバでもログデータなどステートフルなデータを持っていることもあるが、それは何らかの方法で退避しておく必要がある
現状で言えばFluentdなどだろうか?

ふむ

使い捨てると聞いて最初に思ったのは「DBどうするの?」だったが、そこは考えないことにしているっぽいのでその点は納得
次に思ったのは、「このひな形になるサーバの状態を管理しないといけなかったら結局意味なくね?」である
もちろん大量のサーバ群の状態管理するよりは単一(ひな形)のサーバを状態管理する方が圧倒的に楽そうだが

ひな形サーバの状態管理(Infrastructure as Code)

ChefやPuppetが出てきてインフラがコード化されるようになった
自動化に目が行きがちだが、本質的な役割はそこにはなくむしろ状態管理にあると言える(らしい)
つまり、ChefやPuppetを使えばインフラの状態管理が可能になる
さらにこれらはコード化されているので、バージョン管理システムを使うことができる!!

ふむ

Immutable Infrastructure においいて Chef / Puppet はひな形サーバの状態を管理するツールになる?(ほかのツールが出てくるかもしれないが)
ということだと、理解した

まとめ

Immutable Infrastructure とは何か?というところからさかのぼって行ってみた
仮想化技術が成熟してきて、Chef/Puppetなどのインフラをコード化する技術があって、その上でImmutable Infrastructureが出てくるって流れは自然なように思うし
いままでも、何となく環境を使い捨てる運用をしていた人も多分いる
それを概念化して名前をつけたものなんだろうという風にとりあえずは理解した

色々資料見たり、勉強会いったりしてるとコンテナがどうのとかDockerがーとか、Vagrant云々とかでてくる
この辺り追いかけないとなんでこんなに大流行りしてるか分からないけど、大枠はこんな感じだおもう