SIerの中で、ネットワーク機器の運用受託業務をやっておりまして、毎日毎日、色々なお客様のスイッチやルータ、ファイアウォールの設定変更をしています。
設定変更のプロセスはルール化されており、現在の以下の流れで設定変更が行われます。
それなりの人と時間をかけて対応している中で、上からは「コストを圧縮しろ!ただし、品質は下げるな!」という無茶を言われています。現時点では「二重チェックをやめて作業員を減らしましょうー。コストは下がりますよえへへ」という対応しか思いつかず、こんなことを言えば上長に殺されるわけです。
このような状況で、サーバやアプリケーションの世界で行われている「継続的デリバリ」の話を聞くと、素直にうらやましいわけです。テストが自動!?デプロイも自動!?
作業手順のテストですか?頻度の多いファイアウォールの設定作業のたびに、ユーザと全く同じネットワーク環境を自前で用意するのは現実的ではないので、現在の設定をベースに頭の中で手順をトレースして、ユーザの要望を満たす設定になるかをテストしてますよ?
作業結果のテストですか?作業後にトラフィックが流れてみないと分かりませんねー。もしかしたら考慮漏れにより作業とは関係のない通信が破棄されるかもしれませんー。または、作業時にミスってしまい、関係のない通信が破棄されるかもしれませんー。でも変更してみないと分かりません。
デプロイですか?GUIで操作する機器なので、毎回指さし声出し確認しながらマウスをポチポチ頑張っています!
このような設定変更作業を続けた結果、考慮漏れによる通信障害や作業ミスによる通信障害が発生し、ごめんなさいする羽目になります。深夜まで報告書を書いたのが懐かしい。
コストを下げて品質を維持するために、頻度の多いファイアウォールの設定変更作業で、継続的デリバリな仕組みができるといいなと思うわけです。ちゃんとテストしよう。手作業は止めよう。
理想は以下の流れです。夢のようです。
運用担当者がやることは手順となるコードの作成とレビューだけです。なんて素晴らしい!お客様!業後作業を希望ですか?いいですよ!CIツールがやりますんで!
実現に向けた課題は以下の通りです。Programmableな仮想ファイアウォールさえあれば、あとは仮想環境とオーケストレーションツール、CIツールを組み合わて作りこみでできそうな気がする。気がする。
CIツールに自動テスト、自動デプロイさせるためには、ファイアウォールがprogrammableである必要があります。GUIと同様の機能をAPIで提供するファイアウォールはあるのでしょうか。Expectでやる?
顧客ごとにネットワーク環境が違うので、当然必要となるテスト環境も顧客ごとに異なります。そのため、CIツールが、全く違うテスト環境を気軽に作っては壊し作っては壊してできる仕組みが必要です。
これは初回に手作業で仮想マシンと仮想ネットワークを作り、顧客ごとにテンプレート化しておけばいけそう。2回目からは、オーケストレーションツールにテスト環境を用意してもらいましょう。
複数の顧客を運用しているので、流れるトラフィックは送信元宛先プロトコルの組み合わせで千差万別になります。そのため、事前にテスト用のトラフィックを準備するのではなく、テストの度にファイアウォールのポリシーから動的にトラフィックを生成する必要があります。
テストパターンは、ファイアウォールのポリシーをパースして作る。そのテストパターンを舐めるために疎通確認サーバを沢山立てるのは非現実的なので、疎通確認サーバのIPアドレスとデフォルトゲートウェイ、NICの接続先を、テストするトラフィックにあわせてオートメーションツールで切り替えれば行けそうな気がする。
こういうことを考えて実現する仕事がしたい。。。
4 Apr 2014