エンジニア必見! 今やネットワークはここまでプログラマブルに
アプリとネットワークが近づきつつある現況と、将来を生き抜くためのヒントを解説する。前半は企業および通信事業者担当SEを経験し、近年ではSDNにも携わる、シスコシステムズ テクニカルソリューションズアーキテクトの生田和正氏が最新動向を解説し、後半はアプリケーション開発とネットワークの両方を経験したプログデンスの円佛公太郎氏がネットワークスキルを得るためのコツを伝授する。
これまでアプリケーション開発の世界とネットワークの世界は隔絶された世界だった。アプリケーション開発者から見たら、ネットワークは「送れば運んでくれるもの」であり、もし反応が遅くても自分たちが関知することなく「早く直して」と一任してしまう。またVLANなど新環境がほしいとなると、ネットワーク担当部署に依頼して作業待ちとなる。
一方、ネットワークエンジニアは「ネットワークは問題なく動いて当然で、トラブルがあれば批判される。一度動くと確認したら、極力設定は変更したくない」という感覚だ。どちらも互いに相手を「別世界」と見ていて、間には大きな垣根があった。
長い目で見ると、昔は「フルスタックエンジニア」という言葉はなかったものの、企業規模が小さければエンジニアはネットワークの設定や運用からアプリケーション開発まで担当することも珍しくなかった。次第に分業化が進んだものの、近年では揺り戻しのような変化が起きている。ネットワークにソフトウェア要素が増えてきて、再び融合に向かっているからだ。
動きの根底にあるのがSDN(Software Defined Network)。SDNが登場してから、しばらく過ぎたこともあり、近年では標準技術が成熟してきている。もともとネットワークには何百台ものルーターやスイッチが配置され、ネットワークの「面」を構成している。そこにSDNコントローラーが登場し、ネットワークの情報を抽象化して制御し、GUIやAPIアクセスで上位に情報を提供できるようになった。抽象化された「面」は、ファブリックともよばれるようになった。
例えばかつてはアプリケーションから「このクライアントが使う無線LANの情報がほしい」とリクエストがあればいろんな機器からの情報を直接取得し集約していたが、今では例えばSDNコントローラーの抽象化されたAPI実装を活用することで、必要な情報がまとめられてJSONで返される。
重要な役割を果たしているのがAPIの標準化だ。かつては力技のように、膨大なコードを書く必要があったが、近年では「標準的なAPIがこなれてきた」とシスコの生田氏は話す。最先端設備があるようなデータセンターではない企業や店舗でも、モデルドリブンなAPIが普及しているという。
こうしたAPIやコードがあると、ネットワーク装置をプログラムからアクセスしやすくなる。こうしたブログラマビリティの効果はネットワーク装置の設定管理や更新など、運用面だけではない。スイッチやルーターでちょっとしたアプリケーションを稼働させることができる。サーバーでルーターやスイッチを稼働させるのと逆の発想だ。
例えばネットワーク機器を集中管理するシステムがあるとしよう。工場や店舗ではサーバーを設置するのが難しいので、そこのスイッチやルーターにアプリを簡単なエージェントとして稼働させることができる。
実際に生田氏はSIMが刺さるルーター(Cisco 1100 シリーズ LTEモデル)に小さなアプリケーションを搭載した。SMSからルーターにコマンドを送ることができる。生田氏は「ネットワーク業界では流行っています。自分で好きにロジックを書けるので、とても実用的かつ楽しいですよ」と笑う。なお構成管理ツールとして有名なAnsibleやTerraformにも対応している。
例を挙げるときりがないほど、IaCは着々と進んでいるのがネットワークの最近の実状だ。APIが共通言語となり互いを隔てる垣根はなくなりつつあり、距離は近づいてきている。
なおガートナーのAndrew Lernerが2017年にブログに投稿した記事によると「ネットワークエンジニアがAnsibleやPython、もしくはAPIによるSIの経験があればCLIベースの給与と比較して、30%以上の昇給が期待できる」とある。
給与と関連して技術者試験についても触れておこう。Ciscoの技術者認定といえばネットワークエンジニア向けのCCNA(Cisco Certified Network Associate)が有名だ。2020年に大きな改訂があり、試験範囲にプログラマビリティが1割ほど含まれるようになった。加えて新たにアプリケーション開発者向けにDevNetという新しい資格体系が加わった。こちらはCCNAと試験範囲がほぼ逆転しており、試験範囲にネットワークの基礎が15%ほど含まれる。