AWS Black Belt Online Seminar 失敗例を成功に変える AWSアンチパターン 2016/6/14 アマゾンウェブサービスジャパン株式会社ソリューションアーキテクトシニアマネージャー荒木靖宏 1
自己紹介 名前 荒木靖宏 所属 アマゾンウェブサービスジャパン株式会社 技術本部レディネスソリューション部シニアマネージャプリンシパルソリューションアーキテクト 好きな AWS サービス Amazon Virtual Private Cloud AWS Direct Connect 2
アンチパターンの前に
AWS クラウドデザインパターンとは... AWS クラウドを使ったシステムアーキテクチャ設計を行う際に発生する 典型的な問題とそれに対する解決策 設計方法を 分かりやすく分類して ノウハウとして利用できるように整理したもの 4
うまく組み合わせると ピーク対応が楽 セキュアなシステム構築 安価に世界展開 障害にも強いシステム設計
アンチパターンの紹介
これまで 数多くの AWS 成功例がうまれていった その成功例は パターン として受け継がれ そして それらは時に 秘伝のたれ さわってはいけないもの とされてきた 7
アンチパターン 失敗に陥るパターンを類型化し 事例の早期発見と対応策に関しての提案を目的とする 動作やプロセス 構造について 当初は妥当であったのに 最終的に悪い結果が繰り返されるパターン リファクタリングするための方法が存在するパターン 8
適用例 :DB の使い分け 状況 パフォーマンスが高い DB と聞いて 並列度の高い SQL アクセス用途 (OLTP) に RedShift を採用 症状 パフォーマンスが悪い 解決法 DB の特性を理解する 9
データ ストアの特性に応じた使い分け 低レンテンシ インメモリ NoSQL 3 拠点間でのレプリケーション SSD に永続化 Amazon ElastiCache Amazon DynamoDB トランザクション処理 汎用用途 SQL 集計 分析処理 大容量データ DWH Amazon RDS Amazon Redshift
Redshift が向く用途 特化型のデータベースのため 適した用途に使うことでパフォーマンスを発揮 Redshift に向くワークロード 巨大なデータ セット ( 数百 GB~ ペタバイト ) 1 つ 1 つの SQL が複雑だが 同時実行 SQL は少ない データの更新は一括導入 ユースケース データウェアハウス (DWH) ユーザがクエリーを作成する ( 自由クエリー )(BI 等 )
Redshift の特徴を生かせないユースケース SQL の並列実行数が多い ( 同時接続数ではなく同時実行数 ) RDS(MySQL,PostgreSQL, Oracle, SQL Server) を検討 極めて短いレーテンシが必要なケース ElastiCache ( インメモリ DB) や RDS を検討 ランダム かつパラレルな更新アクセス RDS もしくは DynamoDB (NoSQL) を検討 巨大なデータを格納するが集計等はしない DynamoDB や大きいインスタンスの RDS を検討
適用例 : ストレージの使い分け 状況 ストレージ代込 で EC2 が使えると聞いて インスタンスストアにシステム構築 症状 データの消失 容量不足 解決法 ストレージの特性を理解する 13
インスタンスストアと EBS インスタンスタイプに応じて 追加コスト無しで揮発性のインスタンスストアが利用できる 実体は EC2 の物理ホストのローカルディスク Stop/Start により仮想マシンが別ホストに移動するとデータが消去される アプリケーションが利用する一時的なデータの置き場所や 分散ファイルシステムのストレージとして活用する EBS は永続化ストレージなので OS の領域や DB のデータなど永続化が必要なデータの置き場所としては EBS を利用する
EBS とインスタンスストアの利用ケース EC2 Windows C: D: E: システムデータ EBS データファイル EBS 一時データ Instance Store OS ブートディスク としての利用 データ格納ディスク としての利用 データ計算用など 一時的な利用
適用例 :EBS の使い分け 状況 旧世代の EBS にシステム構築 症状 速度 (IOPS, スループット ) に不満 解決策 EBS それぞれの特性を理解する 16
EBS のボリュームタイプ ユースケースに応じて性能やコストが異なる 5 種類のボリュームタイプから選択できる 汎用 SSD(General Purpose(SSD)) プロビジョンド IOPS(SSD) スループット最適化 HDD コールド HDD マグネティック (Magnetic) Snapshot を経由することでボリュームタイプや容量を変更可能 17
EBS のボリュームタイプの整理 (SSD タイプ ) ボリュームタイプ 汎用 SSD(gp2) - General Purpose SSD プロビジョンド IOPS(io1) - Provisioned IOPS(SSD) ユースケース システムブートボリューム 仮想デスクトップ 小 ~ 中規模のデータベース 開発環境や検証環境用 汎用 SSD では処理しきれない高い IO 性能を要求するアプリケーション 10,000IOPS や 160MB/s を超える性能を要するワークロード 大規模なデータベース ボリュームサイズ 1GB から 16TB まで 4GB から 16TB まで IOPS 1GB あたり 3IOPS のベースラインパフォーマンス ベースラインパフォーマンスが 3,000IOPS 以下の場合 3,000IOPS までバーストが可能 最低 100IOPS 最大 10,000IOPS スループット 最低 128MB/ 秒 (170GB 以下 ) から最大 160MB/ 秒 (214GB 以上 ) まで 必要なIOPS 値を指定可能 容量 (GB) あたり30IOPSを指定できる 最大 20,000IOPS 最大 320MB/ 秒 (1280IOPS 以上のとき ) 1IOPSあたり256KB/sを利用可能 18
EBS のボリュームタイプの整理 (HDD タイプ ) ボリュームタイプ スループット最適化 HDD(st1) - Throughput Optimized HDD コールド HDD(sc1) - ColdHDD ユースケース EMR ログデータ保管 データウェアハウス バックアップ 大規模なETL 処理 アーカイブ 大規模なログ分析 起動ボリュームには利用できない 起動ボリュームには利用できないボリュームサイズ 500GBから16TBまで 500GBから16TBまで IOPS 最大 500IOPS 最大 250IOPS スループット ベース値 :1TBあたり40MB/s バースト値 :1TBあたり250MB/s バーストクレジット上限 :1TB/1TB 最大 500MB/s ベース値 :1TBあたり12MB/s バースト値 :1TBあたり80MB/s バーストクレジット上限 :1TB/1TB 最大 250MB/s 19
20 おぼえていただきたい たった 3 つの メタ アンチパターン
インフラ塩漬けアンチパターン ノールック明細アンチパターン 机上の空論アンチパターン 21
インフラ塩漬けアンチパターン 22
AWS のイノベーションの歩み AWS has been continually expanding its services to support virtually any cloud workload, and it now has more than 60 services that range from compute, storage, networking, database, analytics, application services, deployment, management and mobile. AWS Elastic Load Balancing Amazon FPS Amazon CloudWatch AWS Auto Scaling AWS EMR Amazon VPC Amazon RDS 2009 AWS Import/Export Amazon SNS AWS Identity & Access Management Amazon Route 53 2010 Amazon SES AWS Elastic Beanstalk AWS CloudFormation Amazon ElastiCache AWS Direct Connect GovCloud 2011 82 AWS Storage Gateway Amazon Dynamo DB Amazon CloudSearch Amazon SWF Amazon Glacier Amazon Redshift AWS Data Pipeline 2012 159 Trusted Advisor Amazon Elastic Transcoder AWS OpsWorks Amazon CloudHSM Amazon AppStream Amazon CloudTrail Amazon WorkSpaces Amazon Kinesis 2013 280 516 AWS CodeDeploy AWS CodeCommit AWS CodePipeline Amazon EC2 Container Service Amazon Lambda Amazon Config Amazon CloudWatch Logs Amazon RDS for Aurora AWS KMS Amazon Cognito Amazon WorkDocs AWS Service Catalog AWS Directory Service Amazon Mobile Analytics 2014 AWS IoT AWS Mobile Hub Amazon EC2 Container Registry AWS Database Migration Service Amazon Inspector Amazon RDS for MariaDB Amazon Kinesis Analytics Amazon Kinesis Firehose AWS Import/Export Snowball Amazon QuickSight Amazon Elasticsearch Service AWS WAF Amazon API Gateway AWS Device Farm Amazon EFS Amazon WorkMail Amazon Machine Learning 2015 500+ * As of 8 Oct 15
インフラ塩漬けアンチパターン 原因 構築した当初のままインフラの見直しをしない 症状 実際の利用にくらべてキャパシティの過不足を放置したまま利用している 一時凌ぎで選んだサービスをそのまま使い続けている 24
インフラ塩漬けアンチパターン 解決法 サービスは四半期に一度は見直す 新サービスや新機能が助けになることが 25
サービスアップデートによりアンチパターンとなったパターンの紹介
塗り替えたパターンの例 Managed NAT が塗り替えたもの HA NAT Auto Scaling NAT VPC endpoint for S3 が塗り替えたもの HA EC2 proxy for S3 WAF が塗り替えたもの ELB sandwich for WAF appliance
Internet AWS Region NAT Public Subnet NAT Public Subnet Amazon S3 DynamoDB HA NAT NAT インスタンスにオートスケールを設定 (min=1,max=1) し AZ 毎に 1NAT プライベートサブネットのルートテーブルは同じ AZ の NAT にむける Private Subnet Availability Zone A Private Subnet Availability Zone B
Auto Scale NAT AZ 毎にHA NATを配置する スケールアップ! ネットワーク関連メトリクスを見る プロトコル別アプリケーションプロキシも有効 t1.micro Very Low m1.small Low m1.large Moderate m1.xlarge, c1.xlarge High
HA EC2 Proxy for S3 ELB+Proxy+AutoScaling での実装 Squid, ExaProxy などの Proxy サーバを使用
ELB sandwich for WAF appliance Auto scale に対応していない WAF アプライアンスを ELB で挟んで機能を補う Auto Scaling group WAF アプライアンス 31
2015 年以降の新サービスにおけるアンチパターンの紹介
Amazon API Gateway Mobile Apps Web API の作成 保護 運用と公開を簡単に AWS API Gateway Cache API Gateway AWS Lambda functions 特徴 (http://aws.amazon.com/jp/lambda/) OS キャパシティ等インフラの管理不要 バックエンドとして Lambda 既存 Web システムを利用可能 スロットリング / キャッシュ Websites Services Amazon CloudWatch Monitoring Endpoints on Amazon EC2 / Amazon Elastic Beanstalk Any other publicly accessible endpoint 価格体系 (http://aws.amazon.com/jp/lambda/pricing/) 呼び出し回数とキャッシュ容量 100 万回の呼び出しにつき $3.5 キャッシュ容量に応じて $0.02/ 時 ~$3.8/ 時
同期 API Gateway アンチパターン 原因 API Gateway を 同期 サービスとして使う 症状 APIGWがタイムアウトしてしまう APIGWの同時実行数が足りない APIGWの価格が高い 34
同期 API Gateway アンチパターン 解決法 API の非同期化 実施のオーダー と 状態の確認 で構成する 留意点 APIGW Lambda RDS(VPC) のようなレイテンシが大きく変化するケースを避ける Java を使う場合さらに注意 35
AWS IoT 簡単で安全なクラウドへのデバイス接続サービス 特徴 (https://aws.amazon.com/jp/iot/) 様々な産業での利用 デバイスとクラウドの双方向コミュニケーション HTTP MQTT Websocketに対応 SQLベースのルールとアクション定義 AWSサービスとのシームレスな連携 デバイス向けのSDK 価格体系 (https://aws.amazon.com/jp/iot/pricing/) 100 万メッセージあたり $8( 日本リージョン ) 無料利用枠利用は 25 万メッセージ / 月を (1 年間 ) アーキテクチャ図
NO シャドウアンチパターン 原因 デバイスのリモート制御を MQTT トピックだけで行う 症状 AWS IoT でデバイスへのコマンドが到達しない 37
NO シャドウアンチパターン 解決法 MQTT トピックだけでは Retain が効かないためシャドウを利用するのがベスト 留意点 38
ノールック明細アンチパターン 39
ノールック明細アンチパターン 原因 月末の料金請求しかないと思っている 症状 支払い周期のずれ クレジットカード与信額のつかいきり 40
ノールック明細アンチパターン 解決法 AWS サポート新規契約 RI 購入 の際に請求書がわかれる RI 購入は契約時の購入費用分のみ / サポート契約は初月分のみ請求書が分かれる Consolidated Billing 使用の場合 子アカウントが RI を購入しても親アカウント宛に請求書が届くことになるので注意 41
机上の空論アンチパターン 42
机上の空論アンチパターン 原因 サーバ発注 システムデプロイ 納品の硬直したループにはまっている 症状 動作確認をしない 事前のキャパシティプランニングに時間をかけすぎる 43
机上の空論アンチパターン 解決法 ともかく小さく試してみること 44
アンチパターンまとめ アンチパターンはリファクタリング方法が存在する 3 つの避けるべきメタアンチパターン インフラ塩漬けアンチパターン ノールック明細アンチパターン 机上の空論アンチパターン 45
Web でノウハウを共有 WIKI http://aws.clouddesignpattern.org/index.php FACEBOOK https://www.facebook.com/awscdp 46
書籍でノウハウを共有 Amazon Web Services クラウドデザインパターン設計ガイド 47
48 Q&A
AWS トレーニングでは様々な学習方法をご提供しています メリット 提供方法 AWS について実習や実践練習を通じて学習できる AWS を熟知したエキスパートから直接 AWS の機能について学び 疑問の答えを得られる 自信をもって IT ソリューションに関する決定を下せるようになる e ラーニングや動画 セルフペースラボ クラスルームトレーニング 詳しくは http://aws.amazon.com/training をご覧ください 49
公式 Twitter/Facebook AWS の最新情報をお届けします @awscloud_jp 検索 もしくは http://on.fb.me/1vr8ywm 最新技術情報 イベント情報 お役立ち情報 お得なキャンペーン情報などを日々更新しています! 50
AWS の導入 お問い合わせのご相談 AWS クラウド導入に関するご質問 お見積り 資料請求をご希望のお客様は 以下のリンクよりお気軽にご相談ください https://aws.amazon.com/jp/contact-us/aws-sales/ 51 AWS 問い合わせ で検索してください