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

54
#cmdevio2016 #A Developers.IO 2016 A-1 ソリューションアーキテクト ⼤栗 宗 クラスメソッド株式会社 Classmethod, Inc. 2016年02⽉20⽇ 頑張らないクラウド最適化 〜クラウドネイティブだけでないAWS活⽤〜 1

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

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

#cmdevio2016 #A

Developers.IO 2016

A-1

ソリューションアーキテクト ⼤栗 宗クラスメソッド株式会社

Ⓒ Classmethod, Inc.

2016年02⽉20⽇

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

1

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

#cmdevio2016 #A

2Ⓒ Classmethod, Inc.

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

#cmdevio2016 #A

3Ⓒ Classmethod, Inc.

この時間帯の⽬⽟「DynamoDBによる

グラフデータベースの構築」は11Fですよ!

間違えてませんか???

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

#cmdevio2016 #Aお前誰よ?⼤栗 宗(@maroon1st)AWS導⼊のコンサルティングや構築を⾏っています。執筆に携わった書籍が来週でます!I ♥ ウィスキー, シガー, パイプ好きなAWSサービス:• RDS• CloudWatch

4Ⓒ Classmethod, Inc.

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

#cmdevio2016 #AAgenda

• クラウド最適化• 『頑張らない』とは?• Web/APサーバの最適化• ネットワーク構成の最適化• オンプレ→AWS化→最適化• まとめ

5Ⓒ Classmethod, Inc.

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

#cmdevio2016 #A

クラウド最適化とは?

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

#cmdevio2016 #A

7Ⓒ Classmethod, Inc.

Developer.IO 2016に参加されている皆さんはクラウド(特にAWS)を

使ってますよね?

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

#cmdevio2016 #A

8Ⓒ Classmethod, Inc.

ではAWSを『使いこなして』

いますか?

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

#cmdevio2016 #A

9Ⓒ Classmethod, Inc.

『使いこなすこと』つまり

『利⽤の最適化』は極めて難しい

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

#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.

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

#cmdevio2016 #Aセキュリティ

• 責任分担モデル(shared)• AWS提供部分はAWSが責任をもち、ユーザ設定部分はユーザ

が責任を持つ

• 『⾃由度』 = 『責任』• マネージドサービスは⾃由度が下がる分、責任が減る

• 世界最⼤級のECサイトと同程度のセキュリティ対策• 多数の第三者認証• AWSに「責任を押し付けて」セキュリティを上げる

11Ⓒ Classmethod, Inc.

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

#cmdevio2016 #A信頼性

• オンプレミスの考え⽅• 代替機の準備が⼤変• サーバ1台1台の信頼性を⾼める(メインフレームやスト

レージアプライアンス)

• AWSの考え⽅• 無限に代替機がある• コモディティサーバで⾼速に切り替える• マネージドサービスは冗⻑化済みor⾼可⽤性な構成を組める

12Ⓒ Classmethod, Inc.

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

#cmdevio2016 #Aパフォーマンス効率• ⼀般的にはクラウド環境ではスケールアウト

• 今後はスケールアップも現実的(X1は2Uのフルスペックレベル)

• ステートレスかステートフルで拡張戦略を使い分ける• ステートレスサーバ:

状態を持たないためスケールアウトが⼀般的。ソフトウェアのライセンスによってはスケールアップも検討。

• ステートフルサーバ:データの再配置に⼤きな負荷がかかるためスケールアップを優先して考える(⼤規模データは除く)。10TBオーダーのデータ量の場合はスケールアウトを考慮。

13Ⓒ Classmethod, Inc.

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

#cmdevio2016 #Aコストの最適化

『コストの最適化』≠『コストが低い』• 固定費から変動費へ

• 使⽤料利⽤状況に合わせたコストを⽀払えば良い

• 運⽤にかかる⼈件費の低減• サーバのランプチェックやディスク交換の⼈件費は不要

• すぐに終了可能• リース費⽤や最低利⽤期間がない

• 柔軟な⽀払いオプション• Reserved InstanceやSpot Instanceを選択可能

14Ⓒ Classmethod, Inc.

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

#cmdevio2016 #A

『頑張らない』とは?

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

#cmdevio2016 #Aクラウド適⽤の分類独⾃にクラウドの適⽤レベルを分類してみる(スピーカー独⾃の分類です)

16Ⓒ Classmethod, Inc.

クラウドレガシー

ニューレガシー

クラウドネイティブ

低 AWSの活⽤度 ⾼

クラウド

ア|キテクチャ

オンプレミス

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

#cmdevio2016 #Aクラウドレガシー

レガシーシステムをクラウド上に展開している状態(スピーカーの独⾃⽤語/定義です)

• AWSの使⽤⽅法を理解できていない。• 物理サーバをEC2に置き換えただけ。• システムのアーキテクチャはオンプレミスと変わらない。

17Ⓒ Classmethod, Inc.

初期費⽤

○?

修正は最⼩限

AWS利⽤料

EC2ばかりで購⼊オプション無し

運⽤費⽤

マネージドなサービス無し

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

#cmdevio2016 #Aニューレガシー

オンプレミスのアーキテクチャの延⻑で発展した状態(スピーカーの独⾃⽤語/定義です)

• オンプレミスのアーキテクチャを踏襲• 積極的にマネージドサービスを活⽤• 必要はアプリケーション改修は⾏う

18Ⓒ Classmethod, Inc.

初期費⽤

ある程度の修正コスト

AWS利⽤料

EC2を使う場合は購⼊オプションを使⽤

運⽤費⽤

マネージドな部分は負荷低減

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

#cmdevio2016 #Aクラウドネイティブ

クラウドの特性を前提としたアーキテクチャ(スピーカーの独⾃定義です)

• マネージドサービスを積極活⽤• ⾯倒なことをAWSへ押し付ける• サービス利⽤により余計な開発は不要

19Ⓒ Classmethod, Inc.

初期費⽤

○ / △ / ☓

内容により⼤きく変動

AWS利⽤料

EC2は最⼩限

運⽤費⽤

ほとんどマネージドサービス

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

#cmdevio2016 #A頑張らないクラウド最適化

• 頑張らない?• クラウドレガシー• ニューレガシー• クラウドネイティブ

• インフラはクラウド推進だが、アプリは既存設計→アプリが「頑張らない」分をインフラが「頑張る」

20Ⓒ Classmethod, Inc.

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

#cmdevio2016 #A

21Ⓒ Classmethod, Inc.

『頑張らない』クラウド最適化=

インフラ担当が『頑張る』

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

#cmdevio2016 #A

Web/APサーバ最適化の例

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

#cmdevio2016 #AクラウドレガシーなWeb/APサーバ

典型的なAWSを使いこなしていないWebシステム

23Ⓒ Classmethod, Inc.

virtual private cloud

LBDB on EC2

C1アプリA

C1アプリB

URLのパスで割り振る

#cmdevio2016 #A

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

#cmdevio2016 #Aクラウドレガシーの懸案事項

• 商⽤ロードバランサの導⼊で⾼コスト• URLのパスによって後続のEC2(アプリ)が異なる

• DBはEC2上に構築• バックアップ、障害回復は⼿動で対応するの?

• Web/APサーバが旧世代インスタンス• C1では仮想化タイプがPV。パフォーマンスが悪い。

24Ⓒ Classmethod, Inc.

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

#cmdevio2016 #Aニューレガシーの例

レガシーシステムをクラウド上に展開している状態

25Ⓒ Classmethod, Inc.virtual private cloud

アプリA

アプリB

CloudFront

ELB

ELB

S3 bucket

RDSC3

C3

Auto Scaling group

Auto Scaling group

CloudWatchLogs

アプリデプロイ済AMI

ElastiCache

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

#cmdevio2016 #Aニューレガシーでの改善案

• CloudFrontをReverse Proxyとして使う• Behaviorの設定でパス毎にアクセス先を変更可能• 同⼀ドメインでも特定パスをS3に向けることができる。

• DBはRDSでマネージドに• 無停⽌⾃動バックアップ、PITRに対応。• 最近はTimezoneの変更も可能などアップデートもある。

• Web/APサーバは設定のコード化、ステートレス化• マシンイメージの切替えが可能で仮想化タイプを変更できる。• ステートレスのためAutoScaleでの台数の増減が可能。

26Ⓒ Classmethod, Inc.

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

#cmdevio2016 #A

ネットワーク構成最適化の例

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

#cmdevio2016 #Aクラウドレガシーなネットワーク構成

典型的なAWSを使いこなしていないWebシステム

28Ⓒ Classmethod, Inc.

virtual private cloud

NAT

ELB

Public Private

S3 Bucket

IPアドレス

ElastiCache

RDS

AP2

AP1

CloudWatch

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

#cmdevio2016 #Aクラウドレガシーの懸案事項

• 外部への通信が全てNATインスタンスを経由する• インスタンスタイプにより帯域が制限される。• 冗⻑化するには⾃分で仕組みを構築する必要がある。

• S3との通信でNATインスタンスが逼迫する• S3への通信は殆どが⼤容量のため、他の通信の帯域を奪う。

• インスタンス間の通信はIPで⾏う• インスタンスの⼊れ替え時にアクセス元全ての設定を変更す

る必要がある。

29Ⓒ Classmethod, Inc.

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

#cmdevio2016 #Aニューレガシーの例

典型的なAWSを使いこなしていないWebシステム

30Ⓒ Classmethod, Inc.

virtual private cloud

ELB

Public Private

S3 Bucket

hostnameAmazon

RDS

AP2

AP1

CloudWatch

endpoints

NAT gateway

flow logs

ElastiCachePrivate

PrivateDNS

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

#cmdevio2016 #Aニューレガシーでの改善案

• 外部への通信はNAT Gateway経由する• NAT Gatewayは帯域が広く、冗⻑化されている。• 通信がない時の待機コストが低い。

• S3との通信はVPC Endpointを使⽤する• 他の通信の帯域を消費しない。

• インスタンス間の通信はホスト名で⾏う• Private DNSの使⽤で、インスタンス⼊れ替え時はRoute 53

のみ変更すれば良い。名前解決のTTLに注意。

31Ⓒ Classmethod, Inc.

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

#cmdevio2016 #A

オンプレ→AWS化→最適化

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

#cmdevio2016 #AオンプレミスのWebシステムの例

33Ⓒ Classmethod, Inc.

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

#cmdevio2016 #Aオンプレミスの構成内容

• ロードバランサーはハードウェアアプライアンスを使⽤している

• 共⽤するストレージとしてNFSをマウントしている

• バックアップはテープドライブにしている

• バッチサーバは特定の時間帯のみ処理を⾏う

34Ⓒ Classmethod, Inc.

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

#cmdevio2016 #Aクラウドレガシーの例

35Ⓒ Classmethod, Inc.

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

#cmdevio2016 #Aクラウドレガシーの構成内容

• ⼤きな変更点• バックアップ先をテープからS3へ変更• メールサーバを廃⽌して、SESでメールを送信• ロードバランサをアプライアンスからELBへ変更

• 問題点• AWSのSLAの定義を満たしていない• 障害発⽣時に復旧処理を⾏う必要がある• バッチサーバの利⽤時間が少ない

36Ⓒ Classmethod, Inc.

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

#cmdevio2016 #Aニューレガシーの例

37Ⓒ Classmethod, Inc.

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

#cmdevio2016 #Aニューレガシーの構成内容

• Web/APサーバをMulti-AZで配置する• DBサーバはRDS化してMulti-AZ構成とする• Auroraの使⽤で99.99%の可⽤性のDBサーバ• Web/APサーバのAuto Scaling適⽤で、障害発⽣時に

⾃動で復旧する• バッチサーバは必要な時間帯にSpot Blockで起動して

コストを抑える

38Ⓒ Classmethod, Inc.

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

#cmdevio2016 #A

まとめ

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

#cmdevio2016 #Aまとめ• 導⼊レベルの分類

• 導⼊するチームメンバーが持っているスキルを考慮しAWSの導⼊レベルを決定→『頑張らない』クラウド最適化

40Ⓒ Classmethod, Inc.

初期費⽤ AWS利⽤費 運⽤費⽤ 備考

クラウドレガシー ○? ☓ ☓ AWSに最適化できていない

ニューレガシー △ △ △ インフラだけでできる最適化を⾏う

クラウドネイティブ ○ / △ / ☓ ○ ○ インフラとアプリの両⾯で

最適化を⾏う

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

#cmdevio2016 #Aまとめ

• AWSの主要サービスについて代表的な利⽤ケースとそのメリットを把握する。AWS CDP等が参考になる。

• 各サービスを低いハードル(アプリ改修が少ない)で導⼊する⽅法を考える

• 導⼊が容易なサービスはメリットがあり、コストに問題が無ければ積極的に活⽤していく。

41Ⓒ Classmethod, Inc.

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

#cmdevio2016 #A

宣伝

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

#cmdevio2016 #AJAWS Days 2016が3⽉12⽇に開催

クラスメソッドはJAWS Days 2016のサポーターです!43Ⓒ Classmethod, Inc.

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

#cmdevio2016 #A

宣伝 その2

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

#cmdevio2016 #AAWSエキスパート養成読本が出ます!

45Ⓒ Classmethod, Inc.

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

#cmdevio2016 #A

46Ⓒ Classmethod, Inc.

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

#cmdevio2016 #A

47Ⓒ Classmethod, Inc.

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

#cmdevio2016 #A

48Ⓒ Classmethod, Inc.

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

#cmdevio2016 #A

49Ⓒ Classmethod, Inc.

2⽉26⽇発売予定です。是⾮お買い上げ下さい!2⽉26⽇発売予定です。是⾮お買い上げ下さい!

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

#cmdevio2016 #A

宣伝 その3

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

#cmdevio2016 #A

51Ⓒ Classmethod, Inc.

みなさんAWSエキスパート養成読本

欲しいですよね?

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

#cmdevio2016 #A

52Ⓒ Classmethod, Inc.

懇親会まで参加すると抽選でプレゼント!

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

#cmdevio2016 #A

53Ⓒ Classmethod, Inc.

ANY QUESTIONS ?

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

#cmdevio2016 #A

Developers.IO 2016

ご静聴ありがとうございました。スライドは後⽇ブログで公開します。

54

A-1

Ⓒ Classmethod, Inc.