Kentaro Kuribayashi's blog

Software Engineering, Management, Books, and Daily Journal.

最近のImmutable Infrastructureに関する議論(Orchestration編)

この分野について議論する際には、インフラ系技術の流れ - Gosuke Miyashitaで紹介されている

  1. Bootstrapping
  2. Configuration
  3. Orchestration

という整理を前提に議論すると、どのレイヤについて話しているのかごちゃごちゃにならなくてよいと思う。ただ、

  1. 上記は階層を成す概念なのだけど、それぞれが必ずしも排他的ではなく、重なる部分が多々ある(たとえば、(1)に該当するDockerやPackerにも(2)の要素が含まれている等)
  2. Orchestrationというネーミングがいまやミスリーディング(な面がある)

ということもあって、一部に混乱をきたしている。ここでは、特に(2)について、時系列を追って論ずる。

時系列の整理

  1. インフラ系技術の流れ - Gosuke Miyashitaによる整理
  2. Rebuild: 25: Immutable Infrastructure (Naoya Ito, Gosuke Miyashita)で、Orchestrationについて議論される
  3. 2014年のウェブシステムアーキテクチャ - stanaka's blogで、Orchestrationのレイヤが"Cluster Mangement"の側面から紹介される
  4. Immutable Infrastructureに対する自分なりの考えメモ - $shibayu36->blog;が「Orchestrationって何?なんなの???」と混乱する

という流れがあった。

混乱の原因

そもそも時系列(2)の時点では、Orchestrationという言葉の含意が揺れていたわけだ。

  1. mizzyさんのエントリでは、ほぼ中央集権的(まさにOrchestrationという名前が示す通り)に理解されている(serfの話などもされているけど、未整理な状態)
  2. にもかかわらず、Orchestrationという言葉はそのままに、同じレイヤ上に位置する、異なるアーキテクチャの話が整理されないままにされている
  3. stanakaさんのエントリでは、2における後者のアーキテクチャの話がされている

(2)の時点でいったん整理されていればよかったのだが、まあいろいろありますよねという感じで話が進んでしまったため、shibayu36的混乱が生まれた。

Orchestrationの整理

そこで私は社内IRCで下記の議論を行い、Orchestrationという言葉の整理と、その問題点の指摘を行った。

まとめると、

  1. Orchesrationにはふたつの側面がある。それは、サーバ群のクラスタリングを行うに際して、(1)中央集権的な管理 (2)自立分散のいずれの手法を取るかである。
  2. そもそもmizzyさんが整理した際には出典資料に"Command and Control"とある通り、中央集権的管理が前提されていた
  3. 同じレイヤに属するとはいえ、Serfなどのツールを前提とすると、Orchestrationの内実が(1)のふたつの側面で分割される
  4. してみると、いまやOrchestrationという用語自体がミスリーディングな面があるので、適切なものを採用するほうがよい

ということになる。上記の議論を経て、インフラのOrchestration? - $shibayu36->blog;があらたにまとめられた。

Orchestrationに替わる適切な用語の提案

上記で述べたとおり、問題はmizzyさんのエントリが紹介するOrchestrationという言葉で呼ばれているレイヤにおいて、サーバ群のクラスタリングをどのような手法でもって達成するかにある。そのいずれをも包含する言葉を新たに創出しなければならない。

しかし問題はクラスタリングの手法如何にすぎないのであってみれば、stanakaさんのエントリが用いている"Cluster Management"でもよいだろうし、単に「Clusteringレイヤ」とでも呼べばよいようにも思える。このあたり、誰かいい感じに整理して英語でエントリを書くと、世界的IIウェーブに乗れるかもしれないですね。

最後に

"Immutable Infrastructure"とかどうでもいいんで、時代はspecinfraですよ!目を覚ましてください!これはマジでヤバい!!1 こんなまとめエントリばっか読んでないで、実装の話をしたり、コードを書いたりしよう!!1