AWS Hackathon 模範アーキテクト

14
模範アーキテクト AWS HACKATION

description

2013/09/10に開催した、学生向けイベントAWS Hackathon( http://hackathons.doorkeeper.jp/events/4972 )でご紹介した、模範アーキテクト(解答)です。

Transcript of AWS Hackathon 模範アーキテクト

Page 1: AWS Hackathon 模範アーキテクト

模範アーキテクトAWS HACKATION

Page 2: AWS Hackathon 模範アーキテクト

アーキテクトの特徴

CLOUD DESIGN PATTERNを組み合わせた、基本に沿った構成にしています

システムの可用性を向上させるため、処理単位ごとに機能を独立し、疎結合なアーキテクトにしています

想定される負荷に沿ったシステム拡縮小の対策を講じています

なるべく既存のサービスやOSSを組み合わせて、スクラッチ開発をしない構成にしています

Page 3: AWS Hackathon 模範アーキテクト

システムアーキテクト図

Availability Zone -A

Availability Zone -BAuto scaling Group Auto scaling Group

Instance

Instance

Instances

Instances

In-Queue Out-Queue

Elastic LoadBalancing

Elastic LoadBalancing

S3 Bucket

S3 Bucket

S3 Bucket

S3 Bucket

CloudWatch

Template

AWS CloudFormation

Client

変換リクエスト受け付け

画像加工処理

INPUTの写真置き場

DEPLOY CODEの置き場

LOGの置き場

写真投稿サイト配信

Page 4: AWS Hackathon 模範アーキテクト

CDPの適用場所

Availability Zone -A

Availability Zone -BAuto scaling Group Auto scaling Group

Instance

Instance

Instances

Instances

In-Queue Out-Queue

Elastic LoadBalancing

Elastic LoadBalancing

S3 Bucket

S3 Bucket

S3 Bucket

S3 Bucket

CloudWatch

Template

AWS CloudFormation

Client

変換リクエスト受け付け

画像加工処理

INPUTの写真置き場

DEPLOY CODEの置き場

LOGの置き場

写真投稿サイト配信

SCALEOUT

SCALEOUT

WEB STORAGE

QUEUING CHAIN

BOOTSTRAP

LOG AGGREGAT

ION

STACK DEPLOYME

NT

Page 5: AWS Hackathon 模範アーキテクト

処理フロー

Availability Zone -A

Availability Zone -BAuto scaling Group Auto scaling Group

Instance

Instance

Instances

Instances

In-Queue Out-Queue

Elastic LoadBalancing

Elastic LoadBalancing

S3 Bucket

S3 Bucket

S3 Bucket

S3 Bucket

CloudWatch

Template

AWS CloudFormation

Client

変換リクエスト受け付け

画像加工処理

INPUTの写真置き場

DEPLOY CODEの置き場

LOGの置き場

写真投稿サイト配信

①REQUEST

③キューを取得

④写真をS3から取得⑤加工してS3へ保存

②キューに格納

⑥配信

Page 6: AWS Hackathon 模範アーキテクト

Infrastructure as code!!各インスタンスは、定められたStatusに従い、起動時に自動的にセットアップが完了した状態で立ち上がる

Availability Zone -A

Availability Zone -BAuto scaling Group Auto scaling Group

Instance

Instance

Instances

Instances

In-Queue Out-Queue

Elastic LoadBalancing

Elastic LoadBalancing

S3 Bucket

S3 Bucket

S3 Bucket

S3 Bucket

CloudWatch

Template

AWS CloudFormation

Client

変換リクエスト受け付け

画像加工処理

INPUTの写真置き場

DEPLOY CODEの置き場

LOGの置き場

写真投稿サイト配信

CLOUD INIT インスタンス起動時にGITのインストール

GITのREPOSITRYからセットアップに必要なものを取得CODE、SHELL、CONFIG...

Page 7: AWS Hackathon 模範アーキテクト

1. Backup◦ 障害時にシステムが復旧できるように、環境のBackupを取得してください。

Availability Zone -A

Availability Zone -BAuto scaling Group Auto scaling Group

Instance

Instance

Instances

Instances

In-Queue Out-Queue

Elastic LoadBalancing

Elastic LoadBalancing

S3 Bucket

S3 Bucket

S3 Bucket

S3 Bucket

CloudWatch

Template

AWS CloudFormation

Client

変換リクエスト受け付け

画像加工処理

INPUTの写真置き場

DEPLOY CODEの置き場

LOGの置き場

写真投稿サイト配信

AMI AMI✴インスタンスのイメージをAMIでBACKUP(インスタンスが起動時に、自動的に必要なミドルウェア・プログラムをセットアップして起動してくる)✴S3上の写真及びSQS上のキューについては、以下の理由によりBACKUPを取得しない

•S3は標準でデータの冗長化がされている(データ保証 99.999999999%)•1万個のファイルをUPして、1,000万年に1個消える程度の確率•それでもBACKUPが必要な要件があれば、他のストレージ(GLACIERなど)にBACKUPする

•SQSは標準でMESSAGEの冗長化がされている

Page 8: AWS Hackathon 模範アーキテクト

Availability Zone -A

Availability Zone -BAuto scaling Group Auto scaling Group

Instance

Instance

Instances

Instances

In-Queue Out-Queue

Elastic LoadBalancing

Elastic LoadBalancing

S3 Bucket

S3 Bucket

S3 Bucket

S3 Bucket

CloudWatch

Template

AWS CloudFormation

Client

変換リクエスト受け付け

画像加工処理

INPUTの写真置き場

DEPLOY CODEの置き場

LOGの置き場

写真投稿サイト配信

セキュリティについては、AWSのセキュリティグループにより行う。TIPS・セキュリティグループは、機能サーバ単位で作成すると良い(SG-WEB, SG-AP)

10. セキュリティ * L4レベル(TCP/IP, UDP/IP)の実装とし、必要最小限のPORTのみ通信を許可するようにしてください。 * WEBでI/Fする部分については、HTTPで構いません。(HTTPSの実装は不要です) * 写真投稿サイトに対する、ユーザ単位での認証やアクセス権限の実装は不要とします。ただし、アクセス元のIP制限をかけてください。 * 許可するアクセス元のIPアドレス(会場のWIFIのIP ADDRESS) * 49.133.175.0/24, 119.72.197.0/24

Page 9: AWS Hackathon 模範アーキテクト

7. 可用性 * 本サービスはダウンタイム0を目標とします。サービス停止が発生した場合は、30分位内を目処に復旧できるようにしてください。

Availability Zone -A

Availability Zone -BAuto scaling Group Auto scaling Group

Instance

Instance

Instances

Instances

In-Queue Out-Queue

Elastic LoadBalancing

Elastic LoadBalancing

S3 Bucket

S3 Bucket

S3 Bucket

S3 Bucket

CloudWatch

Template

AWS CloudFormation

Client

変換リクエスト受け付け

画像加工処理

INPUTの写真置き場

DEPLOY CODEの置き場

LOGの置き場

写真投稿サイト配信

✴システムの死活監視は、CLOUDWATCHと統合監視ソフトのZABBIXで監視する✴不具合が発生したインスタンスは、サービスから切り離し、新しいインスタンスを起動させてサービスを復旧させる(不具合の原因調査は、サービスを復旧させてからじっくりと)✴一時的にインスタンスのスペックを増強して、不具合を修正する時間を稼ぐ!

Page 10: AWS Hackathon 模範アーキテクト

8. 拡張性 * アクセスピーク・オフピークに合わせて、インフラを拡縮小できる構成としてください。 * アクセスピークのタイミングについては、写真のUPLOADについては予測可能(イベント開催時、)であるが、写真投稿サイトへのアクセスのピークは予測困難です。(有名ブロガーに取り上げられ、アクセスが集中する事がままあります)

Availability Zone -A

Availability Zone -BAuto scaling Group Auto scaling Group

Instance

Instance

Instances

Instances

In-Queue Out-Queue

Elastic LoadBalancing

Elastic LoadBalancing

S3 Bucket

S3 Bucket

S3 Bucket

S3 Bucket

CloudWatch

Template

AWS CloudFormation

Client

変換リクエスト受け付け

画像加工処理

INPUTの写真置き場

DEPLOY CODEの置き場

LOGの置き場

写真投稿サイト配信

変換リクエストの受け付けについては、インスタンスをELBにより負荷分散させる。スケールアウト・インの判定は、CLOUDWATCHのメトリックを用いて行う。

Page 11: AWS Hackathon 模範アーキテクト

8. 拡張性 * アクセスピーク・オフピークに合わせて、インフラを拡縮小できる構成としてください。 * アクセスピークのタイミングについては、写真のUPLOADについては予測可能(イベント開催時、)であるが、写真投稿サイトへのアクセスのピークは予測困難です。(有名ブロガーに取り上げられ、アクセスが集中する事がままあります)

Availability Zone -A

Availability Zone -BAuto scaling Group Auto scaling Group

Instance

Instance

Instances

Instances

In-Queue Out-Queue

Elastic LoadBalancing

Elastic LoadBalancing

S3 Bucket

S3 Bucket

S3 Bucket

S3 Bucket

CloudWatch

Template

AWS CloudFormation

Client

変換リクエスト受け付け

画像加工処理

INPUTの写真置き場

DEPLOY CODEの置き場

LOGの置き場

写真投稿サイト配信

画像加工処理については、SQSのQUEUEのINPUT MESSAGEの数(=未処理変換クエストの溜まり具合い)により、処理するサーバの台数を増減(スケールアウト・イン)させる。スケールアウト・インの判定は、CLOUD WATCHのメトリックを用いて行う。

Page 12: AWS Hackathon 模範アーキテクト

8. 拡張性 * アクセスピーク・オフピークに合わせて、インフラを拡縮小できる構成としてください。 * アクセスピークのタイミングについては、写真のUPLOADについては予測可能(イベント開催時、)であるが、写真投稿サイトへのアクセスのピークは予測困難です。(有名ブロガーに取り上げられ、アクセスが集中する事がままあります)

Availability Zone -A

Availability Zone -BAuto scaling Group Auto scaling Group

Instance

Instance

Instances

Instances

In-Queue Out-Queue

Elastic LoadBalancing

Elastic LoadBalancing

S3 Bucket

S3 Bucket

S3 Bucket

S3 Bucket

CloudWatch

Template

AWS CloudFormation

Client

変換リクエスト受け付け

画像加工処理

INPUTの写真置き場

DEPLOY CODEの置き場

LOGの置き場

写真投稿サイト配信

写真投稿サイトについては、アクセスのピークが予測困難とのことから、スケールを意識する必要のないS3のWEB配信機能を利用してコンテンツを配信◯補足動的処理が必要な場合は、当該処理のみ冗長化したEC2で処理を行い、静的ファイルをS3から配信するS3は、アクセスログの出力も可能、指定したS3のバケットに出力してくれる

Page 13: AWS Hackathon 模範アーキテクト

4.ログの保管サーバーノードのWebアクセスログは、後日解析できるように以下に一元的に保管してください。サーバーノードの画像加工処理ログは、以下の条件で出力し保管してください。

Availability Zone -A

Availability Zone -BAuto scaling Group Auto scaling Group

Instance

Instance

Instances

Instances

In-Queue Out-Queue

Elastic LoadBalancing

Elastic LoadBalancing

S3 Bucket

S3 Bucket

S3 Bucket

S3 Bucket

CloudWatch

Template

AWS CloudFormation

Client

変換リクエスト受け付け

画像加工処理

INPUTの写真置き場

DEPLOY CODEの置き場

LOGの置き場

写真投稿サイト配信

各インスタンスに を入れて、直接S3にLOGをUPLOADさせる

Page 14: AWS Hackathon 模範アーキテクト

WHAT IS THE FLUENTD?✴オープンソースのログ収集ツール✴大規模システムでも採用され、高可用性さを有する