#cmdevio2016 #A
Developers.IO 2016
A-1
ソリューションアーキテクト ⼤栗 宗
クラスメソッド株式会社
Ⓒ Classmethod, Inc.
2016年02⽉20⽇
頑張らないクラウド最適化
〜クラウドネイティブだけでないAWS活⽤〜
1
#cmdevio2016 #A
2Ⓒ Classmethod,
Inc.
#cmdevio2016 #A
3
Ⓒ Classmethod,
Inc.
この時間帯の⽬⽟
「DynamoDBによる
グラフデータベースの構築」
は11Fですよ!
間違えてませんか???
#cmdevio2016 #A
お前誰よ?
⼤栗 宗(@maroon1st)
AWS導⼊のコンサルティングや
構築を⾏っています。
執筆に携わった書籍が来週でます!
I ♥ ウィスキー, シガー, パイプ
好きなAWSサービス:
• RDS
• CloudWatch
4Ⓒ Classmethod, Inc.
#cmdevio2016 #A
Agenda
• クラウド最適化
• 『頑張らない』とは?
• Web/APサーバの最適化
• ネットワーク構成の最適化
• オンプレ→AWS化→最適化
• まとめ
5Ⓒ Classmethod, Inc.
#cmdevio2016 #A
クラウド最適化とは?
#cmdevio2016 #A
7Ⓒ Classmethod, Inc.
Developer.IO 2016に
参加されている皆さんは
クラウド(特にAWS)を
使ってますよね?
#cmdevio2016 #A
8Ⓒ Classmethod, Inc.
ではAWSを
『使いこなして』
いますか?
#cmdevio2016 #A
9Ⓒ Classmethod, Inc.
『使いこなすこと』
つまり
『利⽤の最適化』
は極めて難しい
#cmdevio2016 #A
クラウド利⽤の最適化とは?
AWSを使いこなしているかをチェックするには「AWS Well-
Architected Framework」によると4本の軸があります。
(内容は「AWS Well-Architected Framework」 を参考にしていません)
• セキュリティ
• 信頼性
• パフォーマンス効率
• コストの最適化
http://d0.awsstatic.com/whitepapers/architecture/AWS_Well-Architected_Framework.pdf
10Ⓒ Classmethod, Inc.
#cmdevio2016 #A
セキュリティ
• 責任分担モデル(shared)
• AWS提供部分はAWSが責任をもち、ユーザ設定部分はユーザ
が責任を持つ
• 『⾃由度』 = 『責任』
• マネージドサービスは⾃由度が下がる分、責任が減る
• 世界最⼤級のECサイトと同程度のセキュリティ対策
• 多数の第三者認証
• AWSに「責任を押し付けて」セキュリティを上げる
11Ⓒ Classmethod, Inc.
#cmdevio2016 #A
信頼性
• オンプレミスの考え⽅
• 代替機の準備が⼤変
• サーバ1台1台の信頼性を⾼める(メインフレームやスト
レージアプライアンス)
• AWSの考え⽅
• 無限に代替機がある
• コモディティサーバで⾼速に切り替える
• マネージドサービスは冗⻑化済みor⾼可⽤性な構成を組める
12Ⓒ Classmethod, Inc.
#cmdevio2016 #A
パフォーマンス効率
• ⼀般的にはクラウド環境ではスケールアウト
• 今後はスケールアップも現実的(X1は2Uのフルスペックレベ
ル)
• ステートレスかステートフルで拡張戦略を使い分ける
• ステートレスサーバ:
状態を持たないためスケールアウトが⼀般的。ソフトウェア
のライセンスによってはスケールアップも検討。
• ステートフルサーバ:
データの再配置に⼤きな負荷がかかるためスケールアップを
優先して考える(⼤規模データは除く)。
10TBオーダーのデータ量の場合はスケールアウトを考慮。
13Ⓒ Classmethod, Inc.
#cmdevio2016 #A
コストの最適化
『コストの最適化』≠『コストが低い』
• 固定費から変動費へ
• 使⽤料利⽤状況に合わせたコストを⽀払えば良い
• 運⽤にかかる⼈件費の低減
• サーバのランプチェックやディスク交換の⼈件費は不要
• すぐに終了可能
• リース費⽤や最低利⽤期間がない
• 柔軟な⽀払いオプション
• Reserved InstanceやSpot Instanceを選択可能
14Ⓒ Classmethod, Inc.
#cmdevio2016 #A
『頑張らない』とは?
#cmdevio2016 #A
クラウド適⽤の分類
独⾃にクラウドの適⽤レベルを分類してみる
(スピーカー独⾃の分類です)
16Ⓒ Classmethod, Inc.
クラウド
レガシー
ニュー
レガシー
クラウド
ネイティブ
低 AWSの活⽤度 ⾼
クラウド
ア
|
キ
テ
ク
チ
ャ
オンプレミス
#cmdevio2016 #A
クラウドレガシー
レガシーシステムをクラウド上に展開している状態
(スピーカーの独⾃⽤語/定義です)
• AWSの使⽤⽅法を理解できていない。
• 物理サーバをEC2に置き換えただけ。
• システムのアーキテクチャはオンプレミスと変わらない。
17Ⓒ Classmethod, Inc.
初期費⽤
○?
修正は最⼩限
AWS利⽤料
☓
EC2ばかりで購⼊
オプション無し
運⽤費⽤
☓
マネージドな
サービス無し
#cmdevio2016 #A
ニューレガシー
オンプレミスのアーキテクチャの延⻑で発展した状態
(スピーカーの独⾃⽤語/定義です)
• オンプレミスのアーキテクチャを踏襲
• 積極的にマネージドサービスを活⽤
• 必要はアプリケーション改修は⾏う
18Ⓒ Classmethod, Inc.
初期費⽤
△
ある程度の
修正コスト
AWS利⽤料
△
EC2を使う場合は
購⼊オプションを使⽤
運⽤費⽤
△
マネージドな
部分は負荷低減
#cmdevio2016 #A
クラウドネイティブ
クラウドの特性を前提としたアーキテクチャ
(スピーカーの独⾃定義です)
• マネージドサービスを積極活⽤
• ⾯倒なことをAWSへ押し付ける
• サービス利⽤により余計な開発は不要
19Ⓒ Classmethod, Inc.
初期費⽤
○ / △ / ☓
内容により
⼤きく変動
AWS利⽤料
○
EC2は最⼩限
運⽤費⽤
○
ほとんどマネージド
サービス
#cmdevio2016 #A
頑張らないクラウド最適化
• 頑張らない?
• クラウドレガシー
• ニューレガシー
• クラウドネイティブ
• インフラはクラウド推進だが、アプリは既存設計
→アプリが「頑張らない」分をインフラが「頑張る」
20Ⓒ Classmethod, Inc.
#cmdevio2016 #A
21Ⓒ Classmethod, Inc.
『頑張らない』クラウド最適化
=
インフラ担当が『頑張る』
#cmdevio2016 #A
Web/APサーバ最適化の例
#cmdevio2016 #A
クラウドレガシーなWeb/APサーバ
典型的なAWSを使いこなしていないWebシステム
23Ⓒ Classmethod, Inc.
virtual private cloud
LB
DB on EC2
C1
アプリA
C1
アプリB
URLのパスで
割り振る
#cmdevio2016 #A
#cmdevio2016 #A
クラウドレガシーの懸案事項
• 商⽤ロードバランサの導⼊で⾼コスト
• URLのパスによって後続のEC2(アプリ)が異なる
• DBはEC2上に構築
• バックアップ、障害回復は⼿動で対応するの?
• Web/APサーバが旧世代インスタンス
• C1では仮想化タイプがPV。パフォーマンスが悪い。
24Ⓒ Classmethod, Inc.
#cmdevio2016 #A
ニューレガシーの例
レガシーシステムをクラウド上に展開している状態
25Ⓒ Classmethod, Inc.
virtual private cloud
アプリA
アプリB
CloudFront
ELB
ELB
S3 bucket
RDS
C3
C3
Auto Scaling group
Auto Scaling group
CloudWatch
Logs
アプリデプロイ
済AMI
ElastiCache
#cmdevio2016 #A
ニューレガシーでの改善案
• CloudFrontをReverse Proxyとして使う
• Behaviorの設定でパス毎にアクセス先を変更可能
• 同⼀ドメインでも特定パスをS3に向けることができる。
• DBはRDSでマネージドに
• 無停⽌⾃動バックアップ、PITRに対応。
• 最近はTimezoneの変更も可能などアップデートもある。
• Web/APサーバは設定のコード化、ステートレス化
• マシンイメージの切替えが可能で仮想化タイプを変更できる。
• ステートレスのためAutoScaleでの台数の増減が可能。
26Ⓒ Classmethod, Inc.
#cmdevio2016 #A
ネットワーク構成最適化の例
#cmdevio2016 #A
クラウドレガシーなネットワーク構成
典型的なAWSを使いこなしていないWebシステム
28Ⓒ Classmethod, Inc.
virtual private cloud
NAT
ELB
Public Private
S3 Bucket
IPアドレス
ElastiCache
RDS
AP2
AP1
CloudWatch
#cmdevio2016 #A
クラウドレガシーの懸案事項
• 外部への通信が全てNATインスタンスを経由する
• インスタンスタイプにより帯域が制限される。
• 冗⻑化するには⾃分で仕組みを構築する必要がある。
• S3との通信でNATインスタンスが逼迫する
• S3への通信は殆どが⼤容量のため、他の通信の帯域を奪う。
• インスタンス間の通信はIPで⾏う
• インスタンスの⼊れ替え時にアクセス元全ての設定を変更す
る必要がある。
29Ⓒ Classmethod, Inc.
#cmdevio2016 #A
ニューレガシーの例
典型的なAWSを使いこなしていないWebシステム
30Ⓒ Classmethod, Inc.
virtual private cloud
ELB
Public Private
S3 Bucket
hostname
Amazon
RDS
AP2
AP1
CloudWatch
endpoints
NAT gateway
flow logs
ElastiCache
Private
Private
DNS
#cmdevio2016 #A
ニューレガシーでの改善案
• 外部への通信はNAT Gateway経由する
• NAT Gatewayは帯域が広く、冗⻑化されている。
• 通信がない時の待機コストが低い。
• S3との通信はVPC Endpointを使⽤する
• 他の通信の帯域を消費しない。
• インスタンス間の通信はホスト名で⾏う
• Private DNSの使⽤で、インスタンス⼊れ替え時はRoute 53
のみ変更すれば良い。名前解決のTTLに注意。
31Ⓒ Classmethod, Inc.
#cmdevio2016 #A
オンプレ→AWS化→最適化
#cmdevio2016 #A
オンプレミスのWebシステムの例
33Ⓒ Classmethod, Inc.
#cmdevio2016 #A
オンプレミスの構成内容
• ロードバランサーはハードウェアアプライアンスを
使⽤している
• 共⽤するストレージとしてNFSをマウントしている
• バックアップはテープドライブにしている
• バッチサーバは特定の時間帯のみ処理を⾏う
34Ⓒ Classmethod, Inc.
#cmdevio2016 #A
クラウドレガシーの例
35Ⓒ Classmethod, Inc.
#cmdevio2016 #A
クラウドレガシーの構成内容
• ⼤きな変更点
• バックアップ先をテープからS3へ変更
• メールサーバを廃⽌して、SESでメールを送信
• ロードバランサをアプライアンスからELBへ変更
• 問題点
• AWSのSLAの定義を満たしていない
• 障害発⽣時に復旧処理を⾏う必要がある
• バッチサーバの利⽤時間が少ない
36Ⓒ Classmethod, Inc.
#cmdevio2016 #A
ニューレガシーの例
37Ⓒ Classmethod, Inc.
#cmdevio2016 #A
ニューレガシーの構成内容
• Web/APサーバをMulti-AZで配置する
• DBサーバはRDS化してMulti-AZ構成とする
• Auroraの使⽤で99.99%の可⽤性のDBサーバ
• Web/APサーバのAuto Scaling適⽤で、障害発⽣時に
⾃動で復旧する
• バッチサーバは必要な時間帯にSpot Blockで起動して
コストを抑える
38Ⓒ Classmethod, Inc.
#cmdevio2016 #A
まとめ
#cmdevio2016 #A
まとめ
• 導⼊レベルの分類
• 導⼊するチームメンバーが持っているスキルを考慮し
AWSの導⼊レベルを決定
→『頑張らない』クラウド最適化
40Ⓒ Classmethod, Inc.
初期費⽤ AWS利⽤費 運⽤費⽤ 備考
クラウド
レガシー
○? ☓ ☓ AWSに最適化できていない
ニューレガシー △ △ △
インフラだけでできる最適
化を⾏う
クラウド
ネイティブ
○ / △ / ☓ ○ ○
インフラとアプリの両⾯で
最適化を⾏う
#cmdevio2016 #A
まとめ
• AWSの主要サービスについて代表的な利⽤ケースと
そのメリットを把握する。AWS CDP等が参考になる。
• 各サービスを低いハードル(アプリ改修が少ない)で
導⼊する⽅法を考える
• 導⼊が容易なサービスはメリットがあり、コストに問題
が無ければ積極的に活⽤していく。
41Ⓒ Classmethod, Inc.
#cmdevio2016 #A
宣伝
#cmdevio2016 #A
JAWS Days 2016が3⽉12⽇に開催
クラスメソッドはJAWS Days 2016のサポーターです!
43Ⓒ Classmethod, Inc.
#cmdevio2016 #A
宣伝 その2
#cmdevio2016 #A
AWSエキスパート養成読本が出ます!
45Ⓒ Classmethod, Inc.
#cmdevio2016 #A
46Ⓒ Classmethod, Inc.
#cmdevio2016 #A
47Ⓒ Classmethod, Inc.
#cmdevio2016 #A
48Ⓒ Classmethod, Inc.
#cmdevio2016 #A
49Ⓒ Classmethod, Inc.
2⽉26⽇発売予定です。
是⾮お買い上げ下さい!
2⽉26⽇発売予定です。
是⾮お買い上げ下さい!
#cmdevio2016 #A
宣伝 その3
#cmdevio2016 #A
51Ⓒ Classmethod, Inc.
みなさん
AWSエキスパート養成読本
欲しいですよね?
#cmdevio2016 #A
52Ⓒ Classmethod, Inc.
懇親会まで参加すると
抽選でプレゼント!
#cmdevio2016 #A
53Ⓒ Classmethod, Inc.
ANY QUESTIONS ?
#cmdevio2016 #A
Developers.IO 2016
ご静聴ありがとうございました。
スライドは後⽇ブログで公開します。
54
A-1
Ⓒ Classmethod, Inc.

頑張らないクラウド最適化 〜クラウドネイティブだけでないAWS活用〜