name: orientation class: title, smokescreen, shelf, no-footer # クラウドコンピューティング<br><small>第01回 はじめに,オリエンテーション,演習</small> <div class=footnote> <small> 3年、秋学期、選択; 旧「オペレーティングシステム」 </small> </div> --- class: compact # オリエンテーションのお品書き - 目的,目標 - 目標: 最低ライン - 目標: 最終課題 (こんな最終課題ができるといいねと妄想を語ってみたりする) - シリーズ構成 - 各回の取り組み方 --- class: compact # 目的,目標 - 目的: 20年30年先もエンジニアとして生きていけるようにITインフラの初歩を理解する - 目標: <B>クラウドらしいシステム</B>を作る - 春学期と同じテーマでも、きちんと<B>クラウドらしいシステム</B>を作ります <br> 春学期のアレは「クラウド体験」だから;-) - <B>クラウド(AWS)らしいシステムとは?</B> 1. スケールアウト/スケールインできる 1. ステートレスなアプリケーションサーバの作成 1. むずかしい分散システムのところはAWSのサービスに頼る --- class: compact # 本科目の立ち位置 <div class=footnote> <small> <small> (脚注) まだ未確定ですが、 いわゆる「オペレーティングシステム」というOSの動作原理をあつかう科目は、 大学院の授業に移る予定です。 「大学院の授業は4年生でも履修できるはずなので、 興味のある人は履修してください」という構成が予定されています </small> </small> </div> - 科目名どおり「オペレーティングシステム」の動作原理の解説ではなく、 - 中身は<B>ガチでシステム構築</B>です <small> - 難易度は<B>中級編</B>かな?、 ちなみに春学期のアレは初級編 - うち以外こんなガチなの、やってないとおもうんだ〜(?) ... </small> - 講義部分では「演習に必要な解説+アルファ」(演習から逆算)を - 演習の解説部分では、<B>厳選されたUnixコマンドの解説</B>をします <small> - 基本的な使い方、よく<B>実務で使う必須オプションのみを取り上げます</B> </small> - 本科目は<B>資格試験対策ではありません</B> --- class: compact,col-2 # 最終課題の最低ラインと理想形 <div class=footnote> <small> <small> (脚注) 最低ラインの課題(左側)は 「ショッピングカートの中身が、システムが一部壊れても消えない」ことです。 おいおい説明します </small> </small> </div> ![](../exercise/images/sysbuild-plan-minimum.png) ![](../exercise/images/sysbuild-plan-final.png) --- class: compact # シリーズ構成 (注: 2023年度は変則) <div class=footnote> <small> <small> オペレーティングシステムも少し取りあつかいつつ、おもにクラウドコンピューティングのスキルアップが主目的 </small> </small> </div> - 前半(第01〜08回) ... **リアルタイム演習 + VoD の二本立て** - 中間試験(定期試験枠にて) ... 知識編の試験(EL)です - 後半(第9〜13回) ...**リアルタイム演習 + VoD の二本立て** ... 案: 2/21,2/22 (?) - 予備日+最終課題の口頭試問(第14-15回) ... 案: 2/26 (?) - 授業の一覧(詳細)は https://lectures.fml.org/skill-cloud/ を参照してください --- class: compact # 凡例 <small> - 前提とする演習環境 - AWS Academy - AWS 提供の Debian GNU/Linux イメージ上で動作確認し、それを説明の基準とする - 動作確認環境: Debian GNU/Linux 12.4 (アーキテクチャはamd64) - Unixマニュアルの読み方と使い方について少々 - もともとが英語なので<B>単語のあいだにはスペースが必須</B>です。 スペースでもタブでもOK - <B>大文字小文字は区別</B>しています - コマンド引数は可変長。<B>オプションは`-`の右に英数字</B>。オプションの右に引数 <br> 例: ps -aux とか ls -l htdocs - <B>マニュアルでは、コマンド例の右端にENTERは書いてありません</B> <br> つねにコマンド入力の際には最後にENTERキーを押してください ``` $ ps -aux [ENTER} ``` <small> - 技術雑誌では、上の`[ENTER]`のあたりにENTERや矢印が書いてあるが、ふつうのマニュアルでは省略 </small> </small> --- name: overview class: title, smokescreen, shelf, no-footer # クラウドコンピューティング<br><small>はじめに</small> <div class=footnote> <small> <small> </small> </small> </div> --- class: compact # おしながき <div class=footnote> <small> <small> </small> </small> </div> - 今日は基本用語などの紹介です - コンピュータ(というハードウエア)の復習 - たいてい「コンピュータアーキテクチャ」という科目があつかう内容の復習 - OSの役割とは? - 最近では物理サーバ以上に仮想サーバの上でOSを動かしています - クラウドサービスとは何か? - クラウドの分類: IaaS PaaS SaaS - Linuxディストリビューションの代表例は覚えよう --- class: compact,img-right # コンピュータの生ハードウエアの操作は辛すぎる <div class=footnote> <small> <small> (脚注) この例ではmain関数でprintf()をするプログラムを生書き(2進数表記)しています。 HDDへの読み書きもネットワークの送受信も、 こういう2進数の群れを打ち込んで指示を出すことになります。 1950年代くらいだと、これをやっていたのですが、さすがに、達人のみなさんといえども、これはツラい。 それで、プログラミング言語とかOSが開発されてきたわけです </small> </small> </div> ![height400px](https://4.bp.blogspot.com/-GAe9PiUVTGo/V0QnaYr8K1I/AAAAAAAA64g/ax-eVALALjYcAcPtF-fcqYTBYpSKWQlvACLcB/s800/computer_punchcard_scientist.png) ``` 01010101 01001000 10001001 11100101 10111111 10001110 00001001 01000000 00000000 11101000 11111000 11111011 11111111 11111111 10111000 00000000 00000000 00000000 00000000 01011101 11000011 ``` - コンピュータとは2進数の命令を処理する機械のことです --- class: compact,img-right # OSの役割<small>- ハードウエアを使いやすくするシステムソフトウエア -</small> <div class=footnote> <small> <small> (脚注) 2進数の命令を「解釈できる何か」があればプログラムは動きます。 「解釈できる何か」とは、 物理ならCPUだったりHDDやネットワーク機器、 仮想であれば「CPUやHDDの動作をマネする」プログラム(仮想化ソフトウエア)のことです </small> </small> </div> ![](../images/os-abstraction.png) - ハードウエアを抽象化して扱いやすくする<B>システムソフトウエア</B>がOS <small> - 0101...ではなく分かりやすい何か - ファイルとかフォルダとかネットワークとかアプリのアイコンとか... </small> - 物理でも仮想でもOSは動きます <small> - クラウドサービスでは仮想サーバとして動かすことが普通(例: AWS EC2) - 仮想の場合、 右図のハードウエアが仮想基盤の上で動くソフトウエア <br> 注: 0101...を解釈/処理できれば物理でも仮想でもよい。仮想化の本質はそれだけ </small> --- class: compact,img-right # 用語を少々 <div class=footnote> <small> <small> (脚注) 本科目はユーザランドの修行ということになります </small> </small> </div> ![](../images/os-abstraction.png) <small> - <B>カーネル</B> ... OSの中核部分のプログラム - 例: linux - <B>ユーザランド</B> ... ユーザに見えているOS部分の総称。コマンド群のことと考えてよい - コマンド ... Unixで提供されているプログラム - 例: ps, ls - <B>シェル</B> ... (a)コマンドを打ち込んで結果を表示しているプログラム (b)<B>人間と対話処理をする</B> - 例: bash - 例: `$ ps aux`の`$`はシェルが「命令まち」を意思表示する特殊文字(<B>プロンプト</B>) ``` $ ps aux ``` </small> --- class: compact # クラウドとは?(AWSの定義からスタート) <div class=footnote> <small> <small> https://aws.amazon.com/jp/cloud/ </small> </small> </div> > ...さまざまなITリソースをオンデマンドで利用することができるサービスの総称です。必要なときに必要な量のリソースへ簡単にアクセスすることができ、ご利用料金は実際につかった分のお支払いのみといった重量課金が一般的です。(AWSのウエブより引用) - <B>「必要なときに」「必要な量」</B>がもっとも重要な条件です - 例 - 3日間だけサーバ1000台ほしい,4日目からは10台かも(例: ソーシャルゲーム) - 半日だけスーパーコンピュータとして使いたい(128vCPU, メモリ2TBとか) - 21世紀のクラウドサービスでは上の条件が大事 <br> (この条件を満たさない)似たようなサービスは昔からあります - このサービスのためには、<B>サーバとネットワークの大量の在庫が必要です</B> - (大事なプラスアルファ= )プログラムから簡単に利用できる作りこみ - これにより遠隔かつ自動で<B>自動的にサーバ数の増減</B>が可能になります --- class: compact # クラウドを分類する用語(定番なので一応おぼえるべき) <div class=footnote> <small> <small> </small> </small> </div> - SaaS ... みなさんが使っているウエブメール( Office365 ) - S=サービス、ユーザが直接つかうサービス - PaaS ... データベース管理システム(AWS RDS)とか? - P=プラットホームなので、 おおまかにはフロントエンド側でユーザが使うサービスがSaaS、 バックエンド側でユーザが直接は操作しないシステムがPaaSと思え? - IaaS ... 仮想サーバ(AWS EC2)のこと - I=(IT)インフラストラクチャ --- class: compact,img-right # クラウド(IaaS)で利用されるOSについて <div class=footnote> <small> <small> [参考] Linux以外もあるし、 商用OSも利用できますが、省略します; 商用は、オンプレミスからの移行など特殊用途と考えてOK </small> </small> </div> - いろいろな Linux ディストリビューション(Unix クローンOS) - Unix クローン = オリジナルUNIXの動作を真似するOSをゼロから作ったもの - 数万個のソフトウエアを寄せ集めたものを<B>ディストリビューション</B>と呼ぶ - 長いので、<B>ディストロ(distro)</B>と略して呼ぶ人も多い - 標準インストールのOSは、distro中の最重要な千数百のソフトウエアからなる - 二大有名どころが<B>Debian</B> GNU/Linux系と<B>Redhat系</B> - Debian系 = <B>Debian(本家)、Ubuntu</B>、ラズパイのOSなど - Redhat系 = Redhat(本家)、Fedora、CentOS、Miracle、Alma、Rocky ... - <small>最近Redhatはモメてるし、もうUbuntuかDebianで良いのでは?</small>