こんにちは。ネットワークテクノロジー課の根本です。
本日は、私も最近業務で関わることが多い、Cisco NSO という製品をトピックとして、NSO を触っていく中で課題に感じているエンジニア育成やそのための教材についてもご紹介できればと思います。
みなさんは Cisco NSO という製品についてご存じでしょうか。
Cisco NSO(Cisco Crosswork Network Services Orchestrator)は、その名の通りネットワーク装置とその設定を管理し、サービスを運用するための設定の投入などをサポートするソフトウェア製品です。
その説明だけでは少々抽象的過ぎるかと思いますので、より具体的には、
典型的なユースケースとしては、ネットワークを利用するユーザーへの回線提供業務のバックエンドシステムとしての利用があります。
回線種別や品質オプションなどの決まったユーザ向けサービスを NSO の Service として定義し、フロントエンドとなる申込用の GUI システムからのリクエストに応じて NSO がネットワークデバイスに対する設定を担当する形です。
一度定義してしまえばこのような定型の運用業務に対しては運用コストの大幅な削減を見込めますし、その定義についてもかなり柔軟かつ開発工数の削減に寄与する機能を備えています。
諸々の事情から、ある程度大規模の運用の自動化であるにもかかわらず、自前のスクリプトで実装してしまうようなケースもあるとは思いますが、私の経験上、実際に NSO が実施できることと同様の仕組みを自前で用意しようとすれば、NSO を使用する場合と比較して初期構築や継続的な開発という観点において多大な労力がかかるケースが多数です。
我々が開発に関わらせていただいている案件での NSO の使われ方は、やはりそれぞれ Web GUI を有している上位システムの配下で実デバイスとの中間層として NSO が位置しており、ユーザーの GUI 操作の背後で NSO の API へのリクエストが走るような作りになっているものがほとんどです。
その中で、我々は NSO のサービス定義についての設計・実装・試験の実施から、一部の案件では上位システムの設計・開発についても担当させていただいています。
NSO は、大規模なネットワークを下地としたサービス運用において絶大な威力を発揮しますが、NSO を利用した開発、またそれを使用する上位システムも含めた開発を担当できるエンジニアが少ないと感じています。
それによって、NSO の有用性がなかなか浸透しないことが歯痒くもあります。
この課題については私と同じチームの渡部が NSO ユーザー会という Cisco 様との共同開催のユーザーコミュニティ会第一回でも言及しています。
そちらでは、NSO の各コンポーネントや概念の理解には覚えるべき事項が多く、それが初学者を悩ませるものだと考察しています。
NSO の理解の前提として、コンフィグのテンプレート化(XML、XPath)や、必要事項のモデル化(YANG)、また、細かなロジックの実装には Python の理解が必要で、個人的にはそれぞれの技術にある程度理解があればそこまでハードルが高くはないとは感じています。
しかし、実務レベルで関わっていると、NSO 固有のデータベース事情の理解が必要になるなど、正しく理解するには前提知識をしっかり理解しておく必要があります。
そしてそれらの知識をキャッチアップするための体系立てた学習資料や、ハンズオンを軸とした教材がこれまで少なかったことが、エンジニア育成を妨げていた一因なのではないかと考えています。
また、今回の本題とはそれますが、NSO が導入されるような大規模なネットワークを有したシステムに関われる機会が少ないことも関係がありそうです。
こちらについては、私見ですが、類似の例として SDN 製品に卓越した技術者が育成困難であることと同様の問題でもあるように思えます。
そんな中、体系立てて学習できるトレーニング資料として次に説明する NSO 201 トレーニングというものが Cisco 様から提供されていることを発見しました。
トレーニングの概要は下記の通りです:
This course provides an overview of NSO as a network automation solution as well as introducing you to NETCONF, YANG, and XPath.
You will learn about managing devices and creating device templates, service management and service package creation, network element drivers, interfacing with other systems using APIs, configuring and troubleshooting system settings, managing alarms and reporting, configuring NSO for scalability and performance, and capabilities that can be added to Cisco NSO.
紹介ページより引用
こちらを見る限り、NSO の理解の前提となる要素技術(NETCONF、YANG、XML)についても学習でき、また、実際の NSO を利用してのネットワークデバイスの管理について、体系立てて説明してくれるようです。
こちらがまさに感じていた体系的なトレーニングのバイブルとなり得るのではないかと期待し、受講してみました。
以下に講座を受講した結果の概要と感想を述べさせていただきます。
全体は4章構成になっており、各章はこのような感じです:
こちらについては、ひたすら NSO のコンポーネント等の説明についての座学的なインプットの章になっています。
それなりに量もあるため、ネットワークオーケストレーション等について多少のとっかかりがない限り、読み続けるのが大変だと思われます。
この章の内容を完璧に理解できれば、以降の NSO についての説明の前提知識がクリアできる形です。
必要に応じて外部資料などで補完しながら進めていくと思うので、完了までにそれなりに時間を要することも想定されます。
ここでは、NSO からデバイスのコンフィグを管理するための手法や、そのための CLI の利用方法などを学ぶことができます。
ここで NSO CLI を使用したオペレーションを習得しておくことで、以降のハンズオン等がスムーズに行えますし、実務でも役に立ちます。
実際にテンプレートとサービスのモデルを作成し、より実務に近い内容を学習することができます。
ここまでの章で習得した内容を実践に移す位置づけの章です。
NSO を使っていく上での発展的な機能などについてもこの章で補完してくれます。
あらゆるソフトウェアの学習において重要な、トラブルシュートについての記載もこの章内にあるので、そちらについては必読です。
全体を通しての感想ですが、前提知識の説明がかなりしっかりしており、ネットワークデバイスを使用したサービスのオーケストレーション自体にある程度馴染みがあれば、こちらを読んで実践してみることで、NSO を業務で扱っていく上での要素は習得できるように思えました。
また、随所にハンズオンがあるのですが、Web ブラウザを経由して操作可能な Lab が Cisco 社のクラウド上に自動セットアップされるため、ストレスなく演習を実施することができます。
一方で、全くの初学者に渡す教材としてはいささか高度であるため、より簡易に実践できるハンズオンなどは依然として求められそうではあります。
また、残念ながら 2024/8 現在、日本語版はありません。
今回は NSO の概要から始め、エンジニアの育成の課題と、それを解決しうる NSO 201 トレーニングの受講レポートという形で紹介させていただきました。
引き続き私もユーザーコミュニティなどにも参加させていただこうと思いますので、NSO について語り合えるエンジニアの方が増えることを願っています。