Upload
eiji-shinohara
View
452
Download
0
Embed Size (px)
Citation preview
1
AWS Application Load BalancerAmazon ECS
2016年8⽉ 篠原英治
AWS Summit New York 2016 : Recap
2
AWS Summit New York 2016 - KeynoteWerner Vogels が “Application Load Balancer” を発表!!
深夜に盛り上がった某チャット J
思わずTweet!https://www.youtube.com/watch?v=b7yqd7z1RBQ
3
AWS Application Load Balancer• Load Balancer
– 負荷分散はVM Ecosystemにおいて鍵になるもの– AWSでは Elastic Load Balancingがその役割を担ってきた
4
AWS Application Load Balancer• Classic Load Balancing
– ELBを使った典型的な負荷分散のアーキテクチャパターン– 基本的に全てのターゲットグループのノードにトラフィックを送信– アプリケーションレベルでFine-grainedな負荷分散をしたいと多くご要望を頂いていた
• 例えば、サインアップ/ログアウト/リスト表⽰といったそれぞれの機能を、全てのターゲットグループのノードに配置しなければならないのは頭が痛い…
• Service や Container という⽂脈では、より Controllable である必要がある
5
AWS Application Load Balancer• Application Load Balancer
– Happy to announce “新しいロードバランサー” – その名も【Application Load Balancer】– AWS Summit New York 2016の会場からは多くの拍⼿と歓声!
6
AWS Application Load Balancer• Application Load Balancer
– ハイパフォーマンス (Classic Load Balancingと⽐較しても)– コンテントレベルでターゲットグループを制御可能
• ターゲットグループ全てのサーバーに全ての機能のアプリケーションをデプロイする必要がない• Fine-grained な Content-based routing を実現!
7
AWS Application Load Balancer• Application Load Balancer
– Content-based routing に加えて、– HTTP/2 (Formerly known as SPDY) のエンドポイントに利⽤可能で、– WebSocketをサポートしたことで接続状態を維持したストリーミング⽤途にも活⽤でき、– どのようにそれぞれのコンポーネントにトラフィックを流したか詳細なロギングを⾏う
ことができる
8
Microservices Architecture• Amazon.com の 変遷
– 巨⼤なモノリシックなアプリケーションだった• 同じような実装が多く出現するなど、End of Lifeな状態に
– Service Oriented Architectureに移⾏する決断をした• DBへの直接アクセスを無くし、それぞれのコンポーネントはAPIを介してアクセス• Worked really well, but we made a mistake
– Data Drivenにdecompositionしたことで、⼤きなデータセットの周りに⼤量の実装が発⽣
– Item, Customer, and Order という3つの⼤きなデータセット– 例えば ”Customer” はマスターサービスだけでなく、多くのものを扱う。ログイン、
アドレスブック、、全てのお客様の⾏動に関連するもの• Data DrivenではなくFunctional Drivenなdecompositionを実施する必要性
– Function毎にスケーリング/信頼性/パフォーマンスに関する要求が⼤きく異る– ログインは頻繁に⾏われるがアドレスブックは購買が発⽣するときにしかアクセス
されない– 上記のような変遷を経て、現在ではPopularになったMicroservices Architectureへ
9
Microservices Architecture with Amazon ECS• ”Monolithic→Microservices”な事例紹介
– AirtimeというNYの会社のエンジニアによる、(Werner⽈く)”Magnificent”なブログhttps://techblog.airtime.com/
– Airtimeの @abbyfuller さん
– Amazon ECSを活⽤したMicroservices化の実現
10
Microservices Architecture with Container• コンテナ技術はMicroservices化を加速させる
– コンテナをImmutableにし、1つのタスクのみに専念させる
– 但し、そのままコンテナ技術を使うには、やらなければならないことが盛り沢⼭
11
Amazon ECS• Cloud Native Container Service
– Container Managementを簡単にするだけでなく、複数のAvailability Zoneへの展開やAutoScalingもサポート。Production環境で稼働させるのにベストな選択肢
– ECS の container management は container scheduling から分離され、Batch jobsとLong-running appsの2つのスケジューラーがECSにより提供される
12
Amazon ECS• Cloud Native Container Service
– ⾮常に重要な点として、AWSの他のサービスとの連携が可能であることが挙げられる
– VMの世界で培った経験を、Containerの世界に持ち込むことができる!• 例えばCloudWatch Logsを使ったLoggingは⾮常に容易。Amazon ESで可視化も可能
13
Amazon ECS• セキュリティは常にナンバーワンのプライオリティ
– ECSであればコンテナでもSecurityに妥協する必要はない– 例えば、S3にはアクセスするが、DynamoDBにアクセスしない、といった制
御をIAMロールをコンテナに付与することで実現
14
Amazon ECS• スケーリングもセキュリティと同様に重要な要素
– コンテナベースのアプリケーションもCloudWatchのメトリクスを活⽤してスケーリング• ビジネスロジックを活⽤したプライベートなメトリクスも利⽤可能
15
Amazon ECS• 新しいApplication Load Balancerとのインテグレーション
– Content-based Routingでダイレクトにコンテナにトラフィックをお届け!
16
AWS New York Summit 2016 Keynote• 是⾮ YouTube でもご覧ください J
https://www.youtube.com/watch?v=b7yqd7z1RBQ