class: compact,img-right # <small>最終課題の仕様 (必須、プランA)</small> <div class=footnote> <small><small> v1.1.0 </small></small> </div>   <small> - 課題は <B>「スケールアウト/スケールインが可能な最小限のシステムを構築できる」</B>こと - 具体的にはデモ(右図)で見せた動作を実現してください、これが最低ライン(必須)のプランAです - これは秋学期の内容を寄せ集めると実現可 - 数行のPythonプログラミングあり </small> --- class: compact,img-right # <small>最終課題の動作確認(これを見せてもらいます)</small> <div class=footnote> <small><small> (脚注1) 1. - 4. はスケール可能であること、 5. は障害時にもスケールを維持する対応の基礎ということです <br> 本当は 5. の対応で、新しいEC2を起動するとか出来ないといけませんが、そこまでは(プランAで)要求していません </small></small> </div>   <small> 1. 各自のブラウザからEC2(1号機)にアクセスし、適当な数量を送信してください 1. カートに商品と数量が表示されるはずです 1. こんどはEC2(2号機)にアクセスしてください 1. EC2(1号機)でもEC2(2号機)でも、 右図のように「同じカート情報が表示される」ことを示してください - (注) (上部のURLと)ホスト名だけは異なりますが、それ以外は同じ内容です 1. EC2(1号機)を止めてください。 この状態でもEC2(2号機)でカートが表示できることを示してください </small> --- class: compact # <small>最終課題の基本プラン(A)と拡張プラン(B〜Z)</small> <div class=footnote> <small><small> (脚注1) キャッシュサービスを、BWSからAWS Elasticache (選択肢が二つありますがredisの方)に切り替えてもokです。 最後の一月くらいなら、お金は大丈夫のはず、たしか月20ドルくらいです (脚注2) 最終課題のプラン(予定)を教えてください。 これは、TA/SAの割り当ての見当をつけるための希望調査です。 後日、 トライしてみたけど、やっぱり他のプランにしたい」などと変更することは可です </small></small> </div> <small> - A. 基本セット(必須、最低ライン、スライドp.1-2を参照、EC2 x2 + BWS cache) - キャッシュは、AWSの課金を回避するためBWS (redis) cacheをそのまま使ってokです - B. 基本セット + ELBによる冗長構成(振り分け対応のみ) - C. 基本セット + RDS (キャッシュもRDSも併用) - D. プランB + C (= 基本セット + ELB + RDS) - Z. その他、自由 - 使えそうな要素だけ紹介しておきます、どのアイテムを採用するか?は、おまかせします - ログイン機能をつけて、会員(ログインできるユーザ)のみカートをRDSに保存とか - AWSの追加要素(1): EFS, S3, (BWSではなく)AWS ElastiCacheを利用, ELB+Auto Scaling(Plan B拡張) - AWSの追加要素(2): コンテナ化するけどECSやEKSを使う - そもそも自力構築路線 - EC2群で、あれこれ自力で構築(プランB-Dどれでもいいし、新規でもよいです) - EC2の上にdockerもしくはk8sを入れて、コンテナ化 </small> --- class: title # 以下、諸注意と想定Q&A <div class=footnote> <small><small> v1.1.0 </small></small> </div> --- class: compact # <small>最終課題の拡張プラン(想定外なのでヤメテクダサイ)</small> <div class=footnote> <small><small> (脚注1) このへんはクラウドと関係ないから。あと課題を評価できる人がいないから;-) </small></small> </div> <small> <B>つぎのような自由課題は想定していません(評価しようがありません)ので、 やめてください</B> - 見栄え系 - HTML5もりもりでかっこいい画面にしました! - こりに凝ったCSSをみてください - 見栄え系(ライブラリ,フレームワーク系) - ほらReactで書いてあるの!みてみて! - AngularとかVueで ... お断りします - (ここだけ△)Reactでログイン機能を書きましたよ? - まぁ、これは聞いてあげよう。 でも、きちんとJSXとかStateの動作を説明できないなら0点 </small> --- class: compact # <small>(想定される)Q&A、備考、諸注意(1)</small> <small> - Q: 2号機の作り方は? - Q: なんとかして1号機のファイルを2号機にコピーする必要があるってことですよね:-)? - そうです。まず1号機を仕上げます。そして2号機にコンテンツ群をコピーする想定です - (a)基本は「scpコマンド」を使う案 (どこかに中継地が必要かも?scpの使い方は検索してください) - (b)S3経由のほうが楽かも - Q: Pythonプログラミングが分かりません - <B> 仕様書から作成するべきシステム全体の動作が想像できないなら、 それはプログラミングの問題ではなく、 モダンなITシステムを理解できていないのが問題です。 授業内容を復習するべきです </B> - 本科目は、プログラミングの授業ではありません。 あんなに複数の科目でPython使ってるのだから、 メディコンさんに相談しつつ、各自でPythonを修行しなおしてください - ネットワークとかキャッシュの呼び出しなど、 難しいところは全部あらかじめ埋めてある(ブラックボックス化してある)ので、 (少なくともプランAは)言語の基本機能だけで書けるはずです </small> --- class: compact # <small>(想定される)Q&A、備考、諸注意(2): 2号機とElastic IP</small> <div class=footnote> <small><small> (脚注) EC2で作業しやすいように固定IP(EIP)をつけています。 ELBはEIPを必要としていませんけど(課金が増えるだけ):D <br> まぁ、AWS Academyの割り当て分の百ドルでEIPくらいは支払えると思うので利便性を優先させてよいでしょう </small></small> </div> <small> - Q: 2号機にもColitasをインストールしますか? - 不要です。2号機のPublic IPにsshして作業する(2,3コマンドを打つだけの)想定をしています - Q: 2号機にもEIPをつけますか? - いいえ、EIPは不要です。Public IPを使えばよいでしょう - 2号機ではwww.pyの編集作業をしない想定なのでEIPは不要でしょう - 1号機のEIPは、そのほうが便利だから、EIPを付けているだけです - Q: 2号機にEIPをつけたいです。その場合、名前は何にすれば良いですか? - 2号機にElastic IPをつける場合、名前は「学籍番号 + 2」にしてください - 例: 学籍番号 b2902900 の場合、 (a) EC2 1号機は b2902900 (b) EC2 2号機は b2902902 - DNSの設定は、EIPの申請フォームで申請してください </small> --- class: compact # <small>(想定される)Q&A、備考、諸注意(3): ロードバランサー</small> <div class=footnote> <small><small> </small></small> </div> <small> - Q: ELBを使いたいのですが? - ELBのマニュアルを参照して、がんばってください -> [こちら](https://lectures.fml.org/slides/skill-cloud/exercise/aux/elb/) - DNSの設定は、ELBの申請フォームで申請してください - Q: ルート53は? - AWS Academyだと、うまく設定できない気がします。 ルート53ベースのロードバランスは止めた方がいいと思います </small> --- class: compact,img-right # <small>(想定される)Q&A、備考、諸注意(4): RDSの購入について</small> <div class=footnote> <small><small> (脚注) そもそも「RDSの冗長化構成」はAWSが作り込んでいるのであって、ユーザの手柄ではありません -> 見てもしょうがない <br> <B>逆にRDBMS自力構築派の人は動作を全部みせて説明してください!!(わくわく)</B> </small></small> </div>    <small> - Q: RDSのスペックは? - 一番安い構成一台でよいです。 冗長化構成は高価なので <B>「冗長なしを購入」でok。</B> <B>冗長で動いている想定で課題を見ます</B> - たぶん、こんな設定が最安です 1. 無料利用枠を選択 1. ソフトウエアは好きなものをどうぞ。 現実的には MySQL、MariaDB、PostgreSQLの3択だと思います (右図はMySQLの例) 1. サーバのタイプは db.t4g.micro あたり (「db.なんか.micro」が低スペックです) 1. ストレージ容量を最小の 20GB に削減 - <B>毎回、作業終了時にRDSを止めてください</B> <br> 明示的に止めないと動作中 -> 課金発生 </small> --- class: compact,img-right # <small>(想定される)Q&A、備考、諸注意(5): RDS等のマニュアル</small> <div class=footnote> <small><small> (脚注1) ACF = AWS Academy Cloud Foundations (脚注2) 本科目はプログラミングの授業ではないので ... (以下略) </small></small> </div>    <small> - Q: RDSなど授業でやっていないAWSサービスのドキュメントはありますか? - ACF(一番やさしい資格試験)を読んでください。 ACFに、AWSの代表的なサービスの解説と演習は、すべて用意されています。 先日、みなさんをACFに招待しました - Q: SQLが分かりません - RDSの質問は受け付けますが、 SQLの書き方は、自分で頑張るとかメディコンさんに聞いて頑張るとかしてください </small> --- class: compact,col-2 # <small>(想定される)Q&A、備考、諸注意(6): RDSを使うわけを考えた設計</small> <div class=footnote> <small><small> (脚注) RDSは作成するだけなので構築は楽勝です。 www.pyにSQL操作のコードを追加できるか?(PythonでSQL操作が書けるか?)が、 RDSを使うプランの運命の分かれ目でしょう。 ただし「きちんと設計してあれば褒めてあげる」。そういうものですね </small></small> </div> <small> - なぜキャッシュとRDSの二段かまえにするべきなのか?を考えてくれないと意味がないです - だから単に「RDSへの読み書き」のコードを追加しただけでは加点すくなめ ``` ユーザ | V www.py -- (一時的データ) ---> キャッシュ | (消えても良いデータの読み書き) | (永続化するべきデータの読み書き) | V RDS ``` </small> --- class: compact # <small>(想定される)Q&A、備考、諸注意(7)Auto Scaling</small> <div class=footnote> <small><small> (脚注) そもそも論ですが ... </small></small> </div> <small> - Auto Scaling のために 「機密情報いりのwww.pyをインターネットのどこかにおいて」 それをダウンロードする仕様は不可です - そんなものを作ったら、<B>単位は出しません</B> </small> --- class: compact,center # <small></small> <div class=footnote> <small><small> </small></small> </div> 