Point
・サーバやアプリなどの自動化と比較して、ネットワーク自動化はなかなか進まない実情
・理由はツールの成熟やエンジニア不足ではなく、ネットワークを止めることへの恐怖感の強さ
・ネットワーク自動化は現場からのボトムアップではなく、経営層のトップダウンで進めることが重要
なぜネットワーク自動化は普及しないのか
ネットワークに限らず、エンジニアの不足が昨今問題視されている状況であり、
自動化による作業効率向上は非常に意義があります
サーバ(およびアプリ)側に関しては
構築自動化ツールとしてChefやPuppetなど多数存在し、
本番環境でもかなり使われています
一方、ネットワーク自動化はかなり有用性が叫ばれている割に普及が進んでいません
本記事では、普及が進まない理由について考察しています
一口にネットワーク自動化といっても対象は様々です
まず前提として、自動化の対象は大きく2つあります
1) 運用時の追加設定に関する自動化 ⇒ 本記事の対象はこちら
ユーザーの要望に応じてVLAN、ルーティング、IPアドレス、ACLなどの設定を行い、
ユーザーが利用可能な状態にするための自動化
2) 新規構築作業の自動化
例えばスイッチが1000台あり、新規構築時に類似の設定を行うための自動化
2については比較的取り組みやすく、実現している現場も多いのではないでしょうか
1と2の大きな違いは、現行ネットワークが本番環境として使われているかどうかであり、
自動化を行った際のユーザへの影響が違います
本記事ではより影響の大きい、本番稼働中のネットワーク自動化が進まないことを対象としています
もちろんサービスプロバイダやクラウド事業者などでは非常に高いレベルで使われていますが
中小企業はもちろん、大企業であっても部分的に実現している程度が多いです
ネットワーク自動化の普及が進まない理由は色々あり、
NTT東日本の記事(ネットワーク自動化のメリットと進まない現状)
でも取り上げられています
記事によると、ネットワーク自動化のメリットとデメリットとして
が挙げられています
メリットもデメリットも両方正しく、特に違和感はありません
私の実感としてもエンジニア不足は確実に発生していますし
使用ツールも色々なレイヤで存在します(Ansible、Nornir、Paramikoなど)
しかし現場で自動化を実現してきた経験から、
ネットワーク自動化が進まない本当の理由は以下2つが大きいと感じています
つまり、現場のネットワークエンジニアの心理的なハードルが高いことが大きな原因ということです
そのため、エンジニア不足が原因だと思って単純に増員しても、
原因が別にあるため、ネットワーク自動化はあまり進まないケースが多いです
サーバやアプリであれば、コピーも比較的容易であり、
自動化作業に失敗した場合は少し待ってやり直す形で進めることが可能です
また、失敗時の影響範囲もサーバ内やアプリユーザー内にとどまるため、許容できることが多いです
(もちろん極力トラブルは回避したいですが)
一方ネットワークは、止めてしまった場合「ユーザーにちょっと待ってもらう」ことになり、このインパクトが非常に大きい。
PoCなどや検証を実施し、「ほぼ正常に動くはず」な自動化ツールであっても、本番環境での稼働が実現しづらいのは、影響が大きいからだと感じます
ほぼではなく、100%正常に動いて欲しいところですが・・・
そんな自動化ツールは今後も存在しないでしょう
ネットワーク自動化を進めるために重要なこと
ネットワーク運用を担当しているエンジニアが
ネットワークの安定を求めるのは自然なことです
ネットワーク自動化の実現により、
将来的に安定性が向上するかもしれないとなんとなく理解していても
自動化がリスクだと感じるのはしょうがないでしょう
ネットワーク構築を抜本的に改善するような自動化は、
現場のエンジニアの気持ちをベースに進めていくのはかなり難しいと感じています
現場ベースだと、ACLの自動設定など、リスクが低めな自動化に留まってしまうことが多いです
そこで提案したいのは、
現場のエンジニアが感じている、現行環境に影響を与える恐怖心を
自身が請け負うという心意気を持っていただければ、
自動化の恩恵に預かる可能性は大幅に高まります
読んでいる方が現場のエンジニア側の場合
上位層をうまく巻き込むことを狙い
自動化の範囲を大きくとりつつ、効果を理解してもらうためのプレゼン活動を積極的に行いましょう
回線コストなど、明確な金額がでているものはいいのですが
運用コストは人件費がからむため、正確な算出はかなり難しいです
しかし上位層に適切にお伝えし、判断をもらうためには金額の算出はかかせません
まとめ
サーバやアプリと比較して、ネットワークの自動化がなかなか進まないのは
トラブル時の影響の大きさに起因する
そのため影響を許容するための組織的な下地作りが重要、というお話でした
提携作業のスクリプト化などに留まらず、
大胆な自動化を実現して現場のエンジニアの(大体おもしろくない)作業を減らしましょう!
他にもネットワーク技術に関連する記事を書いていますので、是非ご覧ください