IT社員3人組によるリレーブログ

某IT企業に勤める同期3人が、日常で思ったことを記録していきます (twitter: @go_mount_blog)

見える化のすゝめ【ネットワーク編①】

どうも、Keiです。

最近、渋谷のヒカリエに行ったら、スケルトンのバッグインバッグがたくさん置いてありました。

透明でおしゃれだし、中に何があるか一目でわかるので便利だそうです。

 

f:id:go-mount:20180725132529j:plain

 

ごちゃごちゃしたバッグの中身を透明にして「見える化」したように、

今回はビジネスでの「見える化」について話をしていきたいと思います。

 

見える化って?

見える化」と単純に言っても、たくさんのケースがあると思います。

 

  • プロジェクトの進捗をタスクごとにリスト化する
  • プロジェクトに関わる全ての人々と関係性を図にする
  • 複雑なコスト構造を洗い出して、表にまとめる
  • 直観や経験で対処してきた事象を書き出し、ルールブックを作成する
  • 収入や利益をグラフにして表示する

 

見える化」をやる目的、メリットもケースによって違いはありますが

 

  • コスト削減:既存のプロセスを洗い出して無駄を探す
  • 頭の整理:物事を視覚的にとらえることで新しいアイディアが出る
  • 理解の速さ:複雑な情報でもより少ない時間で理解できる

 

このような効果が期待できるのではないでしょうか。

 

さて、今回は少し技術的な話となりますが、

ITインフラを作る上で全世界に100台、200台のルータ、サーバ、スイッチを配置する際に、ネットワークをどのように管理しようか?というトピックについて話していきたいと思います。

 

ここが複雑!ネットワーク図

一般にITインフラはサーバ、ルータ、スイッチで構成されますよね。

下の図は、非常に小さい会社がオンプレで設備を持っている場合です。

 

 

f:id:go-mount:20180725144419p:plain

 

このように小さな会社ならネットワークもかなり簡単だし、パワポレベルでも管理できると思うんですよね。

(むしろパワポ見える化できる)

 

さて、上の例は非常にシンプルでしたが、ビル内の人が増えたり、サーバ数が増えたり、機器の冗長化を考えるとどのようになるでしょうか? 

 

f:id:go-mount:20180725160411p:plain

 

 だんだん、ごちゃごちゃしてきましたね・・

どこのリンク(機器の間の線のこと)が故障したときに、どの経路をパケットは通るのかわかりにくくなってきました。

 さらに、これらの拠点が全世界中に何十拠点もあることを考えると、1つのパワポでこれを管理するのは限界がありそうです。

(本気で作ればできないこともないんでしょうが、パワポの性質上、パケットがどの経路を通るかの情報はわかりません。)

 

 NetworkXとCytoscapeを使った見える化

 今回、「見える化」したいのは次の2つです。

 

  1. ネットワークのサーバ・ルータ・スイッチの接続関係を可視化
  2. パケットがどの経路を通るのか可視化したい

 

今回の記事では、どのようなフレームワークでこれを実現するかについて書いて行きます。

まず、1の「サーバ・ルータ・スイッチの接続関係」を視覚的に表示するには、Cytoscapeと呼ばれるソフトウェアを使用したいと思います。

また、2の「パケットがどの経路を通るのかの可視化」はPythonのlibraryであるNetworkXを使用したいと思います。

 

Cytoscapeとは?

Cytoscapeは、元々分子間の接続を図示するなど、生物系の分野で多くの情報とそのつながりを描画するオープンソースのソフトウェアです。

それが、だんだんと裾野を広げていき、ITインフラでネットワークの構成を描画するのにも注目を集めるようになってきました。

 

 Cytoscape公式ページより引用

 

 Cytoscapeでは、ノードの情報(どのビルに所属?機種?)やノード間の情報(帯域?光ケーブル?)の情報を入力すると、自動でネットワーク図を作ってくれます。

また、同じビルごとのノードをクラスタリング(一か所にまとめること)してくれたり、ノードとノードのつながりを分析する上で非常に便利な機能が備わっています。

 

NetworkXとは?

このNetworkXはpythonの外部ライブラリなのでプリセットでは入っていなく、新たにインストールする必要があるのですが、ネットワークの中のパケットの流れを分析する非常に強力なツールです。

 

Cytoscapeと同様にノードの情報とノード間の情報を入力すると、ネットワークを自動で作り上げてくれます。

しかし、Cytoscapeのように描画してくれるわけではありません。

 

NetworkXが優れているのは、簡単なpythonの操作でネットワークのパケットの流れを分析したり、"ネットワークがもしこんな風に変更になったら"というシミュレーションが簡単にできちゃうことです。

 

また、CytoscapeのソフトウェアにはpythonからCRUDでアクセスできるので(次回詳しく説明)、NetworkXでシミュレーションした結果を実際にCytoscapeのアプリケーション上で目で確認するような柔軟な仕組みが作れるのです。

 

つまり、あるルータから別のルータまでの経路はどこを通っているかをNetworkXで計算して、その経路をCytoscapeで描画できるのです。

 

さて、今回はCytoscapeとNetworkXを組み合わせてITインフラの「見える化」をする全体像について紹介しました。

次回は実際に「見える化」の例を、pythonソースコードも交えながら紹介したいと思います。