ネットワークの継続的インテグレーション
はじめに
ブログの初めに、「ネットワーク寄りのソフトウェア開発者のはず」とか書いたのに大してネットワークの話をしてなかったなーと思ったので、前回話した継続的インテグレーションに絡めたネットワークの話をしようと思う。
Bere-metal? White Box? Branded?
私はそこまでOpen Stackには詳しくないのだが、面白そうなセッションがあったのでOpenStack Summit 2016に参加した。お目当てのセッションが始まる前に企業ブースを回っていた時に見つけたのが、Dellの「Dell Red Hat OpenStackCloud Solution Reference Architecture Guide」という冊子。
正直構成そのものより、その構成の中で使われていたスイッチに目が行った。ちょっと気になったので、製品担当の人に話そうと思ったら...なんか厚切りジェイソンみたいな人が立ってる。日本語が通じることを祈りつつしゃべりかけてみる。
- 私:「これってWhite Box Switchですか?」
- ジェイソンさん:「Branded Switchだよ。White Box Switchもあるけど」
良かった。日本語通じた。そっか、Branded Switchか...という事でここで解説。
Forrester Researchのアナリスト曰くForresterでは企業向けのネットワークスイッチを4つに分類している。
Proprietary switch(独占的なスイッチ)
ベンダー独自のネットワークOS、ハードウェアによって構成されるスイッチを指す。このネットワークOSとハードウェアは独自規格なので分離出来ない。なので両方購入する必要がある。ネットワーク機器は、サーバとは異なり特定用途(パケットの転送、経路の切り替えなど)に特化していたため、独自規格が多かった*1。基本的に高性能だが、採用している技術によっては特定ベンダー機器で固めないと機能を発揮できない。つまりネットワークの構成が特定のベンダー依存となる。こうなると、ほかのベンダーへの切り替えが難しくなる。余談だがプロプラエタリと名前がつくものは大抵、ロクな意味ではない。
Bare-metal switches(地金のスイッチ)
主にOriginal Design Manufactur(発注元のブランド製品を設計~製造する製造者)のスイッチで、ネットワークOSがインストールされていないものを指す。もともとネットワークベンダー製品の設計、製造を行っていた会社が、その技術を使い、独自ブランド製品として発売している。ただ流通、拡販などはやや弱く代理店経由が多い。また、ODMが提供する技術サポートはハードウェアに関する基本的なものだけで、ネットワークOSなどに関してはサードパーティの製品などを顧客が別途調達する必要がある。いわゆる玄人向けの製品。
White-box switch(公開された仕様のスイッチ)
Bere-metal switchだが、ネットワークOSがインストールされているものを指す。近年、ネットワーク機器も独自のハードウェア(カスタムシリコン)から、汎用的なハードウェア(商用シリコン)へと移り替わっており、その代表がBere-metal/White-box switchである。汎用/規格化されているのでサーバと同じように様々なOSをインストールできる。インストールされているネットワークOSは、White-box switchのベンダー、もしくはサードパーティ製の物がインストールされる。
Branded bare-metal switches(ブランド ベアメタルスイッチ)
Bere-metal switchだが、ODMによる提供ではなくOriginal Equipment Manufactur(ODMに比べ設計する能力のない製造だけを行う会社)により製造されたブランド付きのスイッチを指す。通常のBere-metal switchと同じように顧客がネットワークOSをインストールする必要があるが、ブランド元のベンダー企業によるハードウェアからネットワークOSに対する技術サポートを得ることができる。また流通、拡販なども通常のBere-metal switchに比べると格段に差がある。ジェイソンさんが言ってたのは多分これ。
Cumulus Networkが提唱するNetDevOps
ここで挙げられたBig Switch/Midokura/Cumulus NetworksはネットワークOSを提供する会社だ。この中でソフトウェアのツールを使いDevOpsを行おうと提唱しているのがCumulus Networksだ。この会社が提供するのはCumulus Linuxと呼ばれるLinux OSをベースとしたネットワークOSである。
why not use open source off-the-shelf automation tools that are already being leverage
なんで、もう活用されている既存のオープンソースの自動化ツールを使わないんだ
ネットワークOSとして動作するLinux OSという位置づけのため、サーバで利用できるソフトウェアがインストール可能とのこと。上記の図はサーバ構築に特化したビルドツール(構成管理ツール)であるChef/Ansible/Puppetを利用したケースである。
従来、ネットワーク機器への設定投入は
- 顧客もしくは社内の他部署からの要望を資料にまとめる
- まとめた内容をもとに検証環境のネットワーク機器を使ってコマンドを投入
- それをもとにコマンド投入の手順書を作成、手順書のチェックも行う
- 手順書をもとに商用環境のネットワーク機器に対してコマンドを投入
- コマンドによってネットワーク機器の設定が変更される
といったように手作業が多かった。時間もかなりかかる。Cumulus Networksが提唱するNetDevOpsではどうなるかというと
- 顧客もしくは社内の他部署からの要望を資料にまとめる
- まとめた内容をもとに検証環境のネットワーク機器設定を行う作業を手順を定義
- 作業を定義したコードのレビュー、動作確認を行う
- 商用環境のネットワーク機器に対して作業を定義したコードを実行
- コードによってネットワーク機器の設定が変更される
となる。商用環境に対しての作業は、作業内容を定義したコードを実行するだけ。手作業に比べて時間がかからないし、コード化(プログラム化)されているので同じ作業なら使い回しも効く*2。またCumulus Networks Blogの他記事ではバージョン管理システム、継続的インテグレーションツール、テスティングフレームワークなどの使用も推奨している。
導入している企業
- 私:「どうですか、売れてますか?」
- ジェイソンさん:「Branded Switchはそこそこ売れてますよ。ただWhite Box Switchに関してはサポートがないので、データセンタ事業者とか自前で何とかできる所しか買わないですね」
- 私:「White Box Switchは海外のデータセンタ事業者が結構入れてますよね。最近は日本のデータセンタも導入し始めてきていますし」
- ジェイソンさん:「White Boxは安いですからね。ただ、少し高いけどBrandedはサポートがあるからいいですよ*3」
こういった機器を導入し、効率化を図れる企業は限られている。ベンダーサポートに過度な依存をせず、自分たちに必要なものを見極め、自前の技術者で解決できるところでないと、効率的な仕組みを作り、運用していくのは厳しい。逆に言えば優秀な技術者を取り込み、彼らの意見を取り入れ、それを実現させる体制があれば、少額の投資で効率的な仕組みを作ることができるはずだ*4。
まとめ
- 従来、ネットワーク機器は特定用途に特化していたため独自の規格が多かった
- 低コスト、技術の普遍化/進歩により汎用的な規格が登場するようになった
- LinuxベースのネットワークOSにより、サーバ技術がネットワークにも使用可能
- ソフトウェア関連ツールの利用や、継続的インテグレーションの適応も視野に
- しかし、こういった技術を採用できる企業は限られている
*1:特定用途でしか使わないので汎用的にする必要もないし、専用のネットワークOS/ハードウェアとして設計した方が性能も出せる。
*2:頻繁に同じような作業を行うのであれば構成管理ツールは有用、異なる作業を行う場合は効果が薄い。ただ作業手順(コード)が必ず残されるのは便利
*3:物によって値段が上下するので一概には言えないのだが、Proprietary switch > Branded bare-metal switch > Bare-metal/White-box switch
*4:ただ、ここで述べられているのはネットワークが頻繁に変更されるシステムである。適材適所、費用対効果などを考えて技術を採用しなければ、無駄な投資で終わる。規模によってはベンダー製品に頼ってしまったほうが良い場合も、もちろんある。