ネットワーク処理道場では,主にネットワークに関する幅広いトピックを,内容ごとにチームに分かれて取り組んでいます.本道場では様々な取り組みを行っていますが,その中で一部の取り組みを紹介します.
1. 仮想化技術の取り組み(西村克己,平野 達也)
私たちのチームは前半と後半に分けて2つのことを行いました.1つ目は,仮想ルータの構築を行いました.そしてもう一つは,コンテナ技術に関する管理と,より多様な処理を実現する環境構築です.
まずは仮想ルータについてですが,ルータは異なるネットワーク間の中継器のことです.これをパソコンの中で同じ機能を実装することを仮想ルータと呼び,通常のルータよりも通信速度を速くすることができます.また,コマンド上で設定することができるので,コマンドに慣れている人にとってはこちらの方が簡単にルーティングをすることができるそうです.実際にVMware vSphereの仮想環境を用いて構築しました.内部までのルーティングまではできましたが,外部へのルーティングに問題があり苦労しましたが,インターネットにおけるルーティングの流れを理解することができました.
2つ目は,Kubernetes(以後,k8s)を用いたArgoの実装を行いました.k8sは,Dockerのコンテナ上のアプリケーションを管理し,デプロイやスケーリングを自動化することができます.しかし,スケジューリングの処理を記述するために複雑なコードが必要です.そこでArgoを使うことで,k8sの複雑なバッチ処理を改善することができます.具体的な用途として大規模な処理である機械学習等に用いられています.私たちは,VMware vSphere,AWS(Amazon Web Service)の2つの環境でArgoを実装しました.VMware vSphereは,ポッド間の相互通信がうまくいかず,実装することができませんでした.AWSは,スムーズに構築することができ,プラウザのUI上で表示することが出来ました.これを通して,処理の分散,スケジューリングを学ぶことが出来ました.
Kubernetesの構成
|
Argoによるワークフロー処理例
|
2. コンテナ環境でのスケジューリングに関する取り組み(児玉光美,山本 竣也)
私達Kubernetesのスケジューリング班では,KubernetesとPython言語を用いて,自動スケジューリングによる負荷分散に挑戦しています.具体的には,Python言語を用いてノード一覧や各ノード名に対応するリソース情報,CPUの負荷情報を取得します.取得した情報を用い適宜最適な割り振りを行うようYAMLファイルを書き換え,それを元にスケジューリングを行います.これにより,空きの割合に基づく標準的なスケジューリングよりも,さらに柔軟で動的なスケジューリングの実装を目標として活動しています.
3. ECサイト構築/IPネットワーク(金光 駿弥,坂本 彩羽,筒井 友葵,松尾 実結)
こんにちは,ネットワーク道場の2年生の金光駿弥です.私はサークルとして,化粧品研究サークル(以下,LCC)に所属しておりますが,LCCが運営する化粧品販売ウェブサイト(以下,ECサイト)をリニューアルしたいという要望がありました.今までのECサイトはGoogle社が提供している「Forms」を使用して,オンライン販売を行っていました.新しいECサイトを開発するにあたり,費用がかからない,つまり,無料ですべてのリソースを準備しなければならない状況でした.本来,サイト構築・運営にはサーバが必要であり,オンプレミスかクラウドに設置する必要があります.しかし,オンプレミスやクラウド(Azure・GCP・AWS)は莫大なコストが掛かりやすいので,利用が出来ませんでした.そこで,無料のレンタルサーバである「Xfree」とウェブサイトを容易に作成できる「WordPress」を用いました.
LCC通販サイトの一部
また,セキュリティを向上させるためにURLの先頭を「http~」から「https~」に変更しました.これを行うことによって,セキュリティの向上はもちろん,SEO(Search Engine Optimization,検索エンジン最適化)対策を施せます.
実際に「使えるもの」を開発するためには自分のみならず,LCCのメンバーと話し合う必要がありました.しかし,LCCのメンバーのほとんどは応用生物学部の学生のため,専門知識に関する共通認識を持たせることが大変でした.完成までに何回も試行錯誤してようやく納得してもらう結果になりました.その結果,リニューアル前のものと比較し,ユーザが視覚的に見やすい且つ操作しやすいECサイトになりました.
また,その他のWebシステムの開発も行いました.この場合,Webページを動的に表示を行うために,PHPを用いて作成しました.PHPはECサイトでも広く利用されており,会員情報の登録や削除・更新,商品を購入するシステムなどの機能を実装することができます.PHPの特徴として挙げられるのが,HTMLで記述しているファイルの中に埋め込んで使えることです.これにより,HTMLとPHPのファイルを1つにまとめられ便利です.埋め込む際は,下図のようにマークアップすることで可能になります.
また,PHPと共にWebページ作成の際によく使われるJavaScriptという言語があります.PHPがサーバーサイドの言語であるのに対し,JavaScriptはクライアントサイドの言語と言われています.PHPの処理はWebサーバ側で行われるのに対して,JavaScriptの処理はWebページを参照するユーザー側のブラウザで行われます.そのため,PHPはサーバ側にあるSQLなどのデータベースと連携することができます.
さらに,JSP/ServletによってWebシステムの構築も行っています.JSP/Servletとは,簡単に言えばJavaでWebページを作成できるものです.通常は,HTMLと言われる言語でWebページを作成しますが,ECサイト(楽天市場やAmazon)などの個人に合ったWebページは動的に生成されているため,HTMLのみでは書ききれません.
上の図は,JSP(Java Server Pages)ファイルです.ベースがHTMLで書かれていますが,14行目あたりから見てみると,Javaを用いて書かれています.このファイルはサーバ内でServlet(JavaベースにHTMLを追加したもの)に変換されます.最終的にクライアント側にはHTMLのファイルが送信され,Webページが表示されます.
その他,ネットワークの仕組みについてチーム内で教え合ったりしました.例えば,IPネットワークでのルーティングの仕組みや,CISCO Packet Tracerというネットワークシミュレータを使って,仮想的なネットワークを構築して通信の疎通確認を行いました.これらを通じて,現在のネットワークの仕組みの裏側を知ることができました.
4. IoTに関する取り組み(奥田 滉大,米満 麗旺乃,内野 彰紀)
様々な場所の状態を1つの地点からどのような状態であるか確認することができたら様々なことに利用することができそうですよね.それを実現するためにIoTの技術を利用することができ,それの簡易的なものをこの道場で触れました.複数の地点に小さなコンピュータとセンサを設置して,それらをネットワークで接続して情報を1つの地点に集めるということができます.データを収集する際,情報収集を行うコンピュータではパワーが足りないのに加え,状態を分かりやすく認識するために,情報を送る側と受け取る側の間に,情報を整理するコンピュータを追加して異常な数値のみを選別して送信するようにします.
IoTにおけるセンシング情報の取得
実際にこの道場で行っていることは,簡易的にこれを再現するために複数ではなく1対1での通信をラズベリーパイとノートパソコンで行い,その間にジェットソンを利用して情報を整理するということを行っています.そこで送る情報は,ラズベリーパイにカメラを接続してその情報をノートパソコンに送るということをしています.その際にその写真にOpenCVという画像処理のできるものを利用して,人が写っているかを確認して顔の部分を四角く囲うという加工を行っています.
今回構築したpub/sub通信の仕組み
最後に
他にも様々なメンバーが活動を行っています.例えば通信の高速化に関する技術調査や動作確認,ネットワークに関する資格対策等も検討しています.興味があれば,ぜひ参加してみてください.