【Cisco DevNet】ネットワークエンジニアはPythonを学べ。保守運用監視の自動化でネットワークエンジニア不要論。

今まで、ネットワークエンジニアの仕事にはプログラミングスキルは必要ないとされてきました。
ところが、最近では、プログラミングスキル、特にPythonスキルのあるネットワークエンジニアが重宝されているようです。


キーワードはSDN(2013年ごろから注目)

SDNとは「Software Defined Networking」の略。
ネットワークの構成、機能、性能などをソフトウェアの操作だけで動的に設定・変更できる技術のことをいいます。


ネットワーク構築の自動化にはPython

近年、サーバー構築ができるインフラエンジニアの需要が増え、ネットワークエンジニアにもプログラミングでの開発スキルを求められつつあります。特に仮想化ネットワークでは、プログラミングで制御することにより、サーバーの増減に併せてネットワークを自動で再構築できるようになります。
その際にネットワーク構築の自動化に使用されるのがPythonというわけです。


ほとんどのネットワーク機器がPythonで簡単に動かせる

Sisco等、ネットワーク機器ベンダーの多くは、自社機器をPythonで簡単に操作するためのライブラリを提供しており、
機器への接続制御などの煩雑な処理をライブラリに任せることができます。
運用管理機能の拡張が最初から予定されている場合には、Pythonを覚えておいて損はありません。

Expect、Puppet、ansible、Chefといった構成管理ツールはあるものの、
複雑な条件分岐や、他のシステムが提供するAPIを使って密接にシステム連携するような使い方ができません。

機能性・拡張性を考えると、Pythonで直接プログラムを叩いた方がいいというわけです。

手動で行っているオペレーションのほとんどを置き換えられる。

Pythonをネットワーク運用に使うと下記のようなことができます。

・機器ステータスの取得(showコマンド相当の情報を取得)
・コンフィグ変更
・機器のシャットダウンおよび任意コマンドの実行
・OSのバージョンアップ
・SCPコマンドを使ったファイルのコピー


定期メンテナンス作業も障害対応作業も自動化で

また下記のようなこともできるため、深夜から早朝に及ぶ作業からオペレータを解放することができます。

・定期的な作業を自動化
・障害の絞り込みと自動復旧

世界最大のコンピュータネットワーク機器開発会社がPythonを奨励

Ciscoの機器はIOSという独自OSが組み込まれており、Pythonをサポートしております。
データフォーマットも、XML、JSON、YAMLといったWEBエンジニアにもお馴染みなものを採用しております。

いわば、Cisco社は「Pythonを学んでおいたら、うちらの製品を縦横無尽に動かせるから、出世するよ」と言っているもので、ディベロッパー向けのコミュニティを運営しております。

Cisco DevNetは50万人を超えるユーザが参加する大きなコミュニティで、プログラミングや Ansible などの自動化ツール、CI/CD、コンテナ、IoT などを学ぶことができます。

<参考>認定試験の概要
https://www.cisco.com/c/dam/global/ja_jp/training-events/training-certifications/exam-topics/200-901-DEVASC.pdf


まとめ

サーバーの構築においても、物理的なネットワーク機器のメンテナンスにおいても、プログラミングによる自動化で業務効率化が実現できます。その際に使われることが多いのがPythonです。

これにより、今まで嫌がられたネットワークエンジニアの単調な仕事が削減される一方で、スキルの低いネットワークエンジニアが不要になり、プログラミングスキルのあるネットワークエンジニアが重宝されるということになります。

とりわけ、ほとんどのネットワーク機器がPythonで動くわけで、
Pythonが最も簡単なプログラミング言語なので、やはりネットワークエンジニアはPythonを学ぶしかありません。