class: title, smokescreen, shelf, no-footer # クラウドコンピューティング<br><small>第10回 クラウドサービスの概念と用語</small> <div class=footnote> <small><small> 3年、秋学期、選択; 旧「オペレーティングシステム」; ;脚注はELや定期試験の範囲ではありません </small></small> </div> --- class: compact # <small>ビジネスの要諦</small> <div class=footnote> <small> <small> (脚注1) まずは、ビジネスについて、そもそも論を語ります。 とりあえず近代資本主義の是非については論じない <br> (脚注2) Q: Amazonのサーバが1分おちたら、どれくらい売上を逃すのでしょうか? A: 単純化して考えますが、 Amazon Japanの場合、年間売上が約4兆円なので、1分あたり数百万円になります。 全世界では100兆円ちかいので1分あたり1億円くらい逃すという見積り </small> </small> </div> <small> 1. (手段を問わず)利益をあげることが目的 1. つまり、売れる機会があるなら、その機会を逃すな! - 機会を逃すこと -> ビジネス用語の<B>「機会損失」</B> 1. インターネットは24時間いつでも世界中の人が使える。それゆえ - サービスの中断(サーバやネットワーク障害)は許されない - 人気が出て、ユーザ数が増加した時に、(ほぼリアルタイムで)増加に対応できることは必須 </small> --- class: compact # <small>クラウドとは?(AWSの定義からスタート)</small> <div class=footnote> <small> <small> (脚注1) 引用元は https://aws.amazon.com/jp/cloud/ <br> (脚注2) クラウドサービスのためには、<B>サーバとネットワークの大量の在庫が必要です</B>。 (物理サーバでは大変なので)たいていは<B>仮想化されているサーバやネットワークとして提供</B>します。 また、大量のサーバの操作が必要なので、プログラムから簡単に利用できる(APIを提供する)ことも重要です。 これにより遠隔かつ自動で<B>サーバ数の増減</B>が可能になります。 これがIaC (Infrastructure as Code) </small> </small> </div> <small> > ...さまざまなITリソースをオンデマンドで利用することができるサービスの総称です。必要なときに必要な量のリソースへ簡単にアクセスすることができ、ご利用料金は実際につかった分のお支払いのみといった重量課金が一般的です。(AWSのウエブより引用) - <B>「必要なときに」「必要な量」</B>がもっとも重要なクラウドの特徴です - 例 - 3日間だけサーバ1000台ほしい,4日目からは10台かもしれない(例: ソーシャルゲーム) - 半日だけスーパーコンピュータが使いたい(128vCPU, メモリ2TBとか) - 21世紀のクラウドサービスでは上の条件が大事 <br> (この条件を満たさない)似たようなサービスなら、昔からあります </small> --- class: compact # <small>必要な時に、必要な量を(1): www.pyはステートレス</small> <div class=footnote> <small> <small> (脚注1) EC2のコピー方法は演習しません。どうせ2個なので:-) ふつうは、 EC2をテンプレート化してコピーしていくか、 インフラを操作するプログラムで起動していきます(IaC)。 AWS Cloud FormationとかTerraformとか使います </small> </small> </div> <small> - ショッピングカートを作ることを考えます。 出発点は、いままでどおりwww.py - www.pyは、<N>ユーザが入力した情報を受け取り、それを表示</B>できます - ショッピングなので、 ユーザの<B>カートにある「商品」と「(買いたい)数量」という情報をサーバに送る</B>必要があります。 これは今のwww.pyで出来ます。 FORM文とCGIの話です、OK? - サイトを利用するユーザが増えてきたら(たとえば数万人いるとしたら)EC2一台では裁けないでしょう。 www.pyを動かすEC2を複数うごかします。 EC2(一号機)のEC2コピー群を起動すれば十分です。 www.pyは表示しかしてないので、このサーバ群は、うまく動きます - しかしながら、<B>ユーザが入力した情報はwww.pyやEC2が再起動したら失われます【重要】</B>。 このようなwww.pyの性質を<B>ステートレス</B>と呼びます - ステートレス = 入力した情報を元に、何らかのルールにそって、出力するだけ。状態情報を持たない </small> --- class: compact # <small>必要な時に、必要な量を(2): ストレージ、ロードバランサー</small> <div class=footnote> <small> <small> (脚注1) 改善するには?という話をしています (脚注2) はじめから冗長構成のサービスもあれば、冗長構成がオプションのサービスもあります (脚注3) RDSならAuroraを買うべきで、Aurora買う金がないならAWSなんか使うな!です (脚注4) <B>AWSまかせに出来て簡単 = エンジニアのスキルは上がらない</B>ことを気にとめておくべきですね。 あなたは10年後20年後どうやって食べていくつもりかな? <br> (脚注5) Q: ユーザは、どのEC2にアクセスするの? A: 設計しだいでしょう。 まぁ何も考えてないと1号機にだけアクセス集中でしょうか。 ちなみに、この問題に対してDNSという単語が最初に浮かんだ人は春学期の内容を理解できています </small> </small> </div> <small> - 障害時を考え、入力された情報を、どこかに保存する必要があります (ストレージ) - キャッシュサービスやRDBMSサービス(AWS RDS)を利用します。 これらはAWSのサービスなので、 冗長化の構築作業もメインテナンスなどの面倒なこと一切を<B>AWSまかせ</B>に出来ることが重要です - 例:購入情報(ショッピングサイトが失ってはいけない重要な情報) - 多数のEC2群が起動している時、どのEC2にアクセスを誘導するべきでしょうか? <br> そして10台EC2があるなら10台が同程度の負荷であることが望ましいですよね? - <B>ロードバランサー</B>(AWS ELB)というサービスで、 <B>負荷をバランスしながらアクセスを振り分け</B>られます。 <B>自動的にEC2を増減</B>したり、 <B>障害を起こしたEC2を運用から外す</B>といったことも可能です </small> --- class: compact,img-right # <small>理想的な構成図(再掲)</small> <div class=footnote> <small> <small> (脚注) ひととおり書いてみると、 (1)ユーザからのアクセスをELBで振り分けて、 (2)異なるAZにあるEC2のどれかのwww.pyにアクセスします (3)www.pyはキャッシュサービスにカートの情報等を(一時)保存 (4)購入情報などの重要な情報はRDSサービスに情報を保存 </small> </small> </div>  - 第01回より図を再掲します - 今月は、これの部分的な構築と解説をしていきます --- class: compact # <small>用語: クラウドの種類: EC2はIaaS、Office365はSaaS</small> <div class=footnote> <small> <small> (脚注1) AWSには、Linux以外のUnixもあるし、商用OSも利用できますが、詳細は省略 <br> (脚注2) いろいろな Linux ディストリビューション(Unix クローンOS)があります。 「Unix クローン」とは「オリジナルUNIXの動作を真似するOSをゼロから作ったもの」です。 数万個のソフトウエアを寄せ集めたものを<B>ディストリビューション</B>と呼びます。 長いので、<B>ディストロ(distro)</B>と略して呼ぶ人も多いです。 標準インストールのOSは、distro中の最重要な千数百のソフトウエアから構成されています (脚注3) Debian系とは、<B>Debian(本家)、Ubuntu</B>、ラズパイのOSなどです。 フリーソフトウエアの理念に近い側と言っても良い。 Redhat系とは、Redhat(本家)、Fedora、CentOS、Miracle、Alma、Rockyなど... </small> </small> </div> <small> | 用語 | 意味 | 事例 | |------|----------------------------------------|------------------------------------------------| | SaaS | S=サービス、ユーザが直接つかうサービス | ウエブメール(Office365、photon.chitose.ac.jp) | | PaaS | P=プラットホーム | AWS RDS | | IaaS | I=(IT)インフラストラクチャ | AWS EC2 | - XaaSはX as a Serivceの頭文字。Xの部分は様々で、なんでもXaaSと表現するのが流行して久しい(恥) - IaaSで使うLinuxもので二大有名どころが<B>Debian</B> GNU/Linux系と<B>Redhat系</B>です - みなさんが普段つかっているメール(photon.chitose.ac.jp)がSaaSです - 本科目では、 いままで、 IaaS(EC2)とIaaS上のアプリケーション(www.py、いわゆるWeb APIサーバ)だけを扱ってきました。 このあとはPaaSとの連携と冗長化構成をやっていきます。 SaaSの構築は扱いません </small>