序
とりあえずの殴り書きですが、自分なりに、アーキテクチャ設計の流れを意識した「AWS クラウド デザイン パターン カテゴリ」を考えはじめました。
JAWS-UG アーキテクチャ専門支部で議論してみたいと考えています。
キーになるのは、運用6品質(仮称: サービス3品質 + デリバリ3品質)とセキュリティの3要素(CIA)で、これらをステップ順に検討し、適切なクラウドデザインパターンを組み合えあわせていくこと、だと捉えています。
運用6品質(仮称)
ISO9126(ソフトウェア品質の評価に関する国際基準 https://ja.wikipedia.org/wiki/ISO_9126 )で提示されている「ソフトウェアの6品質」を、運用視点から捉えなおした品質基準です。
業務向けソフトウェアはそもそも「業務そのもの」をコンピュータ基盤上に抽象化したものである(はず)ことから、これら6品質を「業務そのものに求められる品質」として運用現場視点から再構成したものです。
外部品質(nearly サービス品質)
- 機能性
- 信頼性
- 使用性
内部品質(nearly デリバリ品質)
- 効率性
- 保守性
- 移植性
セキュリティの3要素
- 機密性
- 完全性
- 可用性
フェーズ0: プロトタイプフェイズ
信頼性以外のサービス品質を確保するフェイズ。
注釈: ここでリリースしたら運用品質ボロボロという意図も込めて「フェーズ0」 。
Step1: 機能性&使用性デザインパターン (サービス3品質 前半)
- 機能要件を満たすのか?
- ユーザが使いやすい理想的な構成か?
全体機能デザインパターン
部分機能デザインパターン
-
デリバリ構成
- Public側の接点 (S3 / CloudFront / Route53 / VPC+IGW / API Gateway)
- Private側の接点 (VPC peering / VGW / DirectConnect / StorageGateway)
-
処理構成
- 処理リソースデザインパターン (Private側: インスタンス、 バッチ)
- ElasticBeanstalk
- Lambda
- ECS
- EC2
- EMR
- SQS
- SNS
- SWF
- DataPipeline
- データストアリソースデザインパターン (Private側: DB、NoSQL、デ ータオブジェクト)
- S3
- RDS
- DynamoDB
- ElastiCache
- CloudSearch
- Redshift
- Kinesis
- 処理リソースデザインパターン (Private側: インスタンス、 バッチ)
-
データストア構成
- S3 + Glacier
- EBS
- その他
フェーズ1: 実装フェイズ (セキュリティ)
セキュリティ品質を確保するフェイズ。
Step1-1: 機密性デザインパターン (セキュリティ3要素 その1)
適切なアクセス権限を実現できるか? (いつ、誰が、何にアクセスできるか)
-
IAM / STS / Cognito
- 常時付与/一時付与/範囲無制限/範囲限定/フェデレーション/ADなど認証 デザインパターン
Bucket/Topic/Queue Policy (用途別デザインパターン)
Security Group (サービス別デザインパターン)
Step1-2: 完全性デザインパターン (セキュリティ3要素 その2)
証跡の確保
ログ取得/保存デザインパターン (CloudTrail / CloudWatchLogs)
変更管理デザインパターン (Config)
Step1-3: 可用性デザインパターン (セキュリティ3要素 その3)
どのように可用性を担保し、どのように復旧させるか?
冗長化デザインパターン (EBS / ELB / AutoScaling)
想定SLA100%デザインパターン (S3 / Route53)
フェーズ2: プレリリースフェイズ (デリバリ品質確保)
運用品質を確保するフェイズ。
Step2-1(参考): 信頼性デザインパターン (サービス3品質 後半)
可用性を実現するために必要な個別要素をアプリケーションで補完する。
- ある状況がある時間続いたときにソフトウェアがどの程度機能するか
Step2-2(参考): 保守性/移植性デザインパターン (デリバリ3品質 前半)
デプロイ、リリースマネジメントのためのデザインパターン
ElasticBeanstalk
CloudFormation
OpsWorks
Step2-3(参考): 効率性デザインパターン (デリバリ3品質 後半)
パフォーマン監視、効率性評価のためのデザインパターン
- CloudWatch
フェーズ3: リリースフェイズ (実運用へ)
運用品質もデザインパターンによってある程度担保できるので、楽な運用が実現できる(はず)
今後
順次ブラッシュアップして、実用に耐えるものにしていきたいですね。