JAWS-UG札幌支部勉強会「初心者向けAWS設計ノウハウ講座」

image
ボケ防止として、【2014年5月24日開催】
初心者向けAWS設計ノウハウ講座
に参加。

意外とガッツリの内容で、脳がほどよく活性化したような気がする(とても疲れたとも言う)。

まずは、AWSの堀内さんからCDP(Cloud Design Pattern)について説明。
「CDP」とは、「典型的な問題とそれに対する解決策・設計方法を、分かりやすく分類して、ノウハウとして利用できるように整理したもの」。
詳しくは、「CDP」のメインページ、またはFacebookページを参照。

次に、本日のお題について説明。

お題:とある日、あなたのボスは言いました

  • プレゼン資料アップロードできて、共有できて、全文検索できるシステム作って。
  • 有料会員が伸びるまでは最小の投資コストでよろしく。
  • 無料会員は1ファイル2MBまで、有料会員は容量無制限ね。
  • アップロード後の処理は常に必ず有料会員を優先してあげてね。
  • PC/Android/iOSアプリからアップできるようにして。もちろん見る側もマルチデバイスね。
  • 検索できるようになったら(ファイル登録が完了したら)何らかの方法で通知してね。
  • 資料はユーザ自身がタグ付けできると便利かもね。

「こんなんで作れるか!(憤怒」
「お前が作れや!(激怒」

と部下の怒りを買う可能性100万%のざっくり指示だが、これはこれで部下の「自分で考える力」を発揮させるやり方かもしれない。

その後、3チームに分かれて、それぞれ設計案を作成。
私の所属したBチームで作成した設計案が、冒頭の図である。

最後にレビューの時間。
各チームの代表者が設計について説明。

設計案で利用したデザインパターンは5つ。

1)スケール・アウト・パターン(Scale Out Pattern)
・・・アップロード処理を行うbatchサーバや、Webサーバの数を、CPU使用率に応じて増減させる。Cloud WatchおよびAuto Scalingを使用。

2)プライオリティ・キュー・パターン(Priority Queue Pattern)
・・・アップロード処理を行うキューの優先度(有料・無料会員)を設定する。SQSとbatchサーバを使用。

3)マルチ・サーバ・パターン(Multi-Server Pattern)
・・・Webサーバおよびbatchサーバの冗長化。

4)リード・レプリカ・パターン(Read Replica Pattern)
・・・DBサーバの冗長化(参照系のみ)。

5)ウェブ・ストレージ・パターン(Web Storage Pattern)
・・・アップロード資料の保存先としてS3を利用。

この他、全文検索やタグ付け機能については、Cloud Searchを利用。

有料会員・無料会員の機能制限や、マルチデバイス対応、アップロード完了通知に関しては、フレームワークやアプリケーション側で対応することにした。


これまで「デザインパターン」と言われてもピンと来なかったが、今回のワークショップで具体的な活用法が分かってきたような気がする。
とはいっても、実際に実サービスで使ってみないと「身に付いた」とは言えないので、機会があれば実践してみようかしら。

もう一点、

「デザインパターンは万能ではない」

という事も理解できた。

AWSも多種多様なサービスを提供してくれているが、それだけで全ての要件を満たす事はできない。
10年後はもしかしたら、ほとんど全ての事がAWSサービスで出来るようになっているかもしれないが、少なくとも今のところは違います。

AWSに任せられるところは任せ、
自分で作った方が早かったり安かったりする部分は自分で、
というスタンスが良さそうだ。

上記ワークショップとは別に、堀内さんが教えてくれた課題と解決策も記載しとこ。

(課題A)ソフトをバージョンアップしたい
Floating IPパターン:
EIPと紐づいているインスタンスを切り替えることで、ソフトウェアバージョンアップを行う
1.AMIを作成
2.テスト用のインスタンス作成
3.テスト環境でバージョンアップ
4.EIP付け替え

(課題B)サーバに障害発生、速やかに復旧したい
Server Swappingパターン
仮想ディスクを切り離して、新しいサーバに接続して起動

(課題C)Webサーバが落ちても稼働し続けるようにしたい
Multi-serverパターン
ロードバランサーで複数台のEC2に振り分け。MySQLは別で。

(課題D)DB部分のSPOFを解消したい
DB replicationパターン
Multi-AZを利用することで自動的にフェイルオーバーする

(課題E)サーバレベルだけでなくデータセンタレベルの障害に対応
Multi-Datacenterパターン
EC2インスタンス、LBを別のAZで立ち上げる


そして、まったくAWSと関係ないが、札幌市電の新型車両「ポラリス」に初めて乗れたので記念にアップ。
image
乗る前までは乗りたくて仕方がなかったが、2連続で乗れたので、「大したことないな」と熱も冷めましたわ。