class: title, smokescreen, shelf, no-footer # <small>テーマ<br>学生むけ開発用クラウドの設立と運用<br>2021,2023改</small> <div class=footnote> <small><small> 壊したり失敗の経験がスキルをあげるんですよ、うん </small></small> </div> --- name: niij-bws class: img-right,compact # ミニチュアクラウド(学生プロバイダ)の設立と運用 ![width640px](/images/nsrg/bws-niij-image.png) <small> - Bフレッツに接続されたサーバ群で**開発環境を提供,サービスを運用(無保証)** - ユーザは**在学生なら誰でもよい**こととしたい。 **学年、学科なども問わない** - 学生プロジェクトの開発環境 - 個人で動かしい人 - 演習の授業で使ってもらってもよし - **失敗!?上等** - **失敗の経験**がすごくスキルをあげますが**就職後そんな経験は出来ません**。 できるうちに、じゃんじゃん、やって(失敗して)おくのがいいよ! - だから学生たちが自分でだけで運用してほしいし、 監修はするけど普段は自分たちでよろしくやってほしい </small> --- class: col-2,compact # システムの構想 <div class=footnote> <small><small> (脚注) NIIJ = ななかまどインターネットイニシアティブ, BWS = 美々ウエブサービス(AWS Side-B説あり?) </small></small> </div> <small> - クラウド管理ミニシステムを構築&運用 - 全員がソースコードを読んで理解できるサイズにとどめたい! なぜなら、 **ソースコードが大きすぎると理解できない**からです - **かっこ悪くてOK** (かっこいい画面を作る? -> JS開発大会になってインフラじゃない;-) - **裏側まで含めて理解したい**人むき - クラウドサービスを使いたいだけの人はAWSなりをおすすめ - コンテナが主力でしょうね、これからは - オプションのqemu+kvmで他のOSもサポートするかも... -> [IaaS計画](#niij-bws-IaaS) <wbr> - 参考事例 - 昔からOS(Unix)の勉強をするならUnix第6版(ソースコード1万行)を読むのが最適と言われている。これのクラウド管理システム版を作りたい - 実際に使える実用的なシステムが欲しい - そのソースコードで勉強したい - 車輪を再発明するのはムダ(?) ... そんなことはない。 会社が使っている巨大なOSSの管理システムは大きすぎて読めない - 用語集 - **NIIJ**: プロバイダの名前です:-) - **BWS**: 仮想基盤を提供するサービスの総称(このニセ者感w:-) ... BWS PaaS, IaaSなど </small> --- class: col-2,compact # <small>メリット?営業トーク? **- 実学重視!/フタを開けてみたい君へ - **</small> <div class=footnote> <small><small> (脚注1) <B>OSSベースで開発・構築し、リリース</B>していきたい。 できれば <B> <A HREF="https://techbookfest.org/">技術同人誌</A> </B>にまとめるとか <B> <A HREF="https://talent.supporterz.jp/geekten/2022/">技育展</A> </B>とかに打って出ようよ <br> (脚注2) クラウドの請求の怖さ?といえば、 2022年にもOSの演習で、やっちまったひとがいますね(一晩で8万円だったかな?) </small></small> </div> <small> - クラウドの使い方ではなく、**裏側の理屈の理解が深まります** - **実運用の経験値**がつめます (実際のシステムというのは泥臭いものなのです) - なにか操作を誤って100万円請求がくるかも?かも?といったことに怯えずに使える環境が手に入ります(が、インフラ部の意義は**ユーザ側よりシステム提供側のスキルアップ**) <wbr> - どのようなキャリアにつながるか? - プロバイダやキャリア、プラットフォームビジネスの会社で、 OSSベースで自営するインフラストラクチャの開発、設計、構築、運用など - SREエンジニア - フロント寄りでもインフラも分かると良い - 参考: [コラム「エンジニアのキャリアパス(10分版)」](https://unix-entrance.fml.org/slides/columns/career/intro/) 参照 - アウトプットは大事だよね? (ここは就活時の話を四年生にしてもらうほうがいいね) </small> --- class: title, smokescreen, shelf, no-footer # <small>BWS の開発 (2021-)</small> <div class=footnote> <small><small> BWSはNIIJのクラウドサービスの総称です:-) </small></small> </div> --- name: niij-2021 class: compact,img-right # <small>BWS PaaS の開発(2021-)</small> <div class=footnote> <small><small> 履歴: 11月にスタート, 授業で使うためGWあけにアルファ版でいいからリリースが目標と言っておいた <br> (1)6月に授業で使った (2)秋は技育典2022にエントリ </small></small> </div> ![height400px](images/bws-paas_wholesight.png) <small> - Web(PaaS管理画面)にアプリをアップロードするだけで動作するサービスを提供する - [PaaS体験の手順書](/slides/ise/deploy/bws-paas/#steps) (ソフトウエア工学概論) <small> ``` [例] 学籍番号b29029290は次のURLへアクセス http://b29029290-test.paas.niij.fml.org/ ``` </small> - コンテナ (dockerで動かす) - どうせならGo言語で書いてほしい - インフラはGo言語が多いし、だいたいdockerもGo言語じゃないか:-) - 詳細は[github](https://github.com/infra-club-fmlorg/bws-paas)を見てください ... (このgithubは技育典2022にエントリする際にクリーニング済) </small> --- name: niij-2023 class: compact # <small>2023年度の案(Plan B) </small> <div class=footnote> <small><small> (脚注1)インターンシップまでに、ベータ版でいいから、なにか動いていたいよね <br> (脚注2)勉強してみたいと言っても何でも教えられるわけではないですけどね;-) C,シェル(含awk,sed),Perl,Go言語なら手伝えます(深) </small></small> </div> <small> - IaaSサービス(新)の設計と開発 ... (2人?) - 好きなOSを動かしたい!実行環境も好きにいじくりたい <br> 注: PaaSはLinux用アプリしか動かないし、実行環境の自由なカスタマイズも不可能 - 予想される作業内容 - 設計: サービス仕様の絞りこみが重要; **仮想環境(qemu)と,ネットワーク**の勉強 - 開発: 最低限の管理画面 (かっこ悪くてOK), CGIは月曜の授業でやるけど裏側部分は新作(数十行?) - PaaSサービスの機能拡充 ... (3人? ... なにしろ分野が広いもので) - アプリをアップロードすると動くサービスですが、 動かすにはアプリの言語ごとに下準備が必要です。 いま対応しているのは(標準ライブラリのみの)C言語とGo言語, あとJava(だっけ?) - 予想される作業内容 - 既存システムの勉強が、そこそこ長い ... Go言語で500行弱だっけ? また、合わせ技なので、いろいろな分野の勉強が必要: WWWサーバ,HTML,CGI, Unixのファイル操作,コンテナ,Docker - 開発自体は短めです。 去年つくってもらった見本があるので、 それと似たようなものを量産していくです。 各言語ごとに(ユーザがよく使いそうな)実行環境を準備します </small> --- class: compact # <small>2023年度の案(Plan A,廃棄)</small> <div class=footnote> <small><small> (脚注1)面談してから、もうすこし考えます (脚注2)勉強してみたいと言っても何でも教えられるわけではないんですけどね;-) C,シェル(含awk,sed),Perl,Go言語なら手伝えます(深) </small></small> </div> <small> - テーマ例 - IaaSサービスを**作る?(たぶんサービス仕様の設計が最重要+最低限の管理画面)** - **仮想よりネットワークの知識が必要だと思います(予想)** - 好きなOSを動かしたい!実行環境も好きにいじくりたい <br> 注: PaaSはLinux用アプリしか動かないし、実行環境の自由なカスタマイズも不可能 - 分散ファイルシステムの**構築** - 春に捨てるPCあつめて巨大ストレージ(とか)? たぶんGlusterFSかCephを使い構築。 ちなみにGoogleの裏にあるNASは違う方向の技術です (Googleとか分散システムなどの勉強もする?) - 理由:サービスには裏側に巨大なNASが必要; 例: IaaSの(OSイメージ)ファイルを置く - **[注意]** 管理画面に凝り出すと、 インフラではなくてJavaScript開発大会になってしまうので、 そちらには行かないようにします。 かっこいい管理画面の構築は秋のプロジェクト科目とかでどうぞ:-) - **面談で聞いておきたいこと** - サーバやネットワーク構築の経験の有無 - いま使える(得意?な)プログラミング言語、このさい勉強してみたい言語あります? - アウトプットしてますか?してみたいですか? 例: blog(はてぶ,qiita)とか </small>