Weitere ähnliche Inhalte Ähnlich wie 【AWS初心者向けWebinar】AWSのプロビジョニングからデプロイまで (20) Mehr von Amazon Web Services Japan (20) Kürzlich hochgeladen (11) 【AWS初心者向けWebinar】AWSのプロビジョニングからデプロイまで4. 自己紹介
• 名前:佐藤 聖規(さとう まさのり)
• 所属:アマゾンデータサービスジャパン株式会社
プロフェッショナル・サービス
コンサルタント
• 得意分野:インフラストラクチャー最適化/自動化、
アジャイル開発
• 好きなAWSサービス:AWS Trusted Advisor
4
12. 皆さんに質問
• How long does it take to deploy one line of
code to production?
– Mary & Tom Poppendieck, Lean Software Development
12
13. AWSのイノベーションのペース
13
2008 2009 2010 2011
Amazon EBS
Amazon EC2
Amazon SNS
AWS Identity
& Access
Management
AWS Import
& Export
Amazon
CloudWatch
Amazon EMR
Amazon RDS
Amazon VPC
Auto Scaling
Elastic Load
Balancing
Amazon
ElastiCache
Amazon SES
AWS
CloudFormation
AWS Direct
Connect
AWS Elastic
Beanstalk
GovCloud
Amazon SWF
Amazon Route 53
Amazon Redshift
Amazon Glacier
Amazon
Dynamo DB
Amazon
CloudSearch
AWS Storage
Gateway
Amazon
CloudTrail
Amazon
CloudHSM
Amazon
WorkSpaces
Amazon Kinesis
Amazon Elastic
Transcoder
Amazon
AppStream
AWS OpsWorks
AWS Data
Pipeline
20132012 2014
Amazon
Zocalo
EBS
Encripion
Amazon Cloud
Trail
EC2 T2
Instances
VPC
Peering
AWS Lambda
AWS Directory
Service
AWS CodeDeploy
Amazon EC2
Container Service
Amazon Aurora
23. Infrastructure as Codeのメリット
• サーバーの台数が増えても構築に時間がかからない
• コード=手順書となるのでコードを常にメンテナン
スしておけば良い
• 手順を抜かしたり手順を間違う心配がない
• 同じコードを動かせば同じサーバーが出来上がる
• コードで記述されているので再利用が容易である
• 他のプロジェクトでコードを使いまわすことで無駄
を省ける
23
38. あらゆるものはいつでも故障す
る前提で設計。単一障害点を避
ける
サーバコピーを取得しいつでも
起動可能に
スナップショットでのバックア
ップ
障害時の自動復旧のために
AutoScalingを活用
複数AZ利用による冗長化
故障のための設計
コンポーネントを独立させ、各
コンポーネントはブラックボッ
クスとして設計
コンポーネント間を疎結合に
アプリケーションをステートレ
スに。この実現のためにELBを
活用し、スティッキーセッショ
ンを避ける
セッションデータはデータベー
ス(RDS、DynamoDB)に保存
疎結合なコンポーネント
コンポーネントの健全性や配置
場所を決めつけない
いつでもリブート可能になるよ
うに設計
動的なコンフィグレーション(
起動時に自動でアプリケーショ
ンやライブラリ等をインストー
ルする)の活用
設定済みAMIの活用による時間
短縮
弾力性の実装
AWSのセキュリティは責任分担
モデル。OS以上の層やセキュ
リティグループの設定、データ
暗号化、秘密鍵の管理等は利用
者側の責任
OSの層とアプリの層、ネット
ワークの層など各所でセキュリ
ティを担保すること。必要に応
じてアプリケーションのペネト
レーション試験も推奨
全レイヤでセキュリティ担保
AWSの特性は時間単位でリソー
スを使用可能な点。これを活か
してアプリケーションやバッチ
処理の並列化、マルチスレッド
化を検討する
ELBやAutoScalingを活用して
並列処理、分散処理を実装
並列処理の実装
EBSや、データベース、S3等
データを保存するストレージに
は多種多様なものがある
読み書きの特性(読み書きの比
率や頻度)や、データ喪失の可
能性、ステートレスの実現可否
を踏まえて適切なストレージを
選択する
異なるストレージの使い分け
38
42. AWS CodeCommit
• Availability Zoneを跨ぎデータを冗長化
• データは暗号化されて保存
• IAMとの統合
• レポジトリのサイズは無制限
git push AWS CodeCommit
Gitのオブジェクトは
Amazon S3
Gitのインデックスは
Amazon DynamoDB
暗号化鍵は
AWS KMS
SSH or HTTPS
安全、スケーラブル、マネージドな、Gitソース管理
42
43. バージョン管理システム on AWS
• AWS CodeCommitを使うとセキュリティや
ディスクサイズ、バックアップなどの運用の負
担を減らすことができる
• AWS上にVCSを構築する場合も、パフォーマン
スが不足するときのスケールアップや、スナッ
プショット取得の容易性によるデータの耐久性
など多くのメリットがある
43
49. 継続的インテグレーション on AWS
• スローテスト問題に対して並列実行
• 指定時刻に継続的インテグレーションサーバを
増やし、必要なくなったら止める
• バイナリを大量に生成しても、AWSに保存すれ
ば容量は気にしなくても良くなる
• クラウドならではのアプローチ
49
52. AWS CodePipeline
• カスタマイズ可能なワークフローエンジン
• パートナーやカスタムのシステムと連携
• ビジュアルエディターと可視化されたステータス
継続的デリバリー、リリース自動化を、Amazonの様に
Build
1) ビルド
2) Unitテスト
1) デプロイ
2) UIテスト
Source Beta Production
1) デプロイ
2) 負荷テスト
Gamma
1) カナリア デプロイ
2) リージョン1 デプロイ
3) リージョン2 デプロイ
52
56. ツールの選択
• 専用のツールを使う
– Capistrano、Fabric、など
• デプロイスクリプトの可読性と保守性は重要
– これがリリース手順書の代わりになるので、担当者が変わっても保守
できるものを選択
– シェルスクリプトは複雑化しやすく保守しにくい
• AWS CodeDeploy、Elastic Beanstalkなどが自分たち
のプロセスに合いそうかどうかを確認
– どんなデプロイプロセスが必要なのかによって適合性がかわる
56
57. AWS CodeDeploy
• 1台も数千台も同じやり方で
• ダウンタイム無くデプロイ
• 中央でデプロイをコントロール・モニタリング
Staging
AWS CodeDeployv1, v2, v3
Production
Dev
自動デプロイのコーディネートを、Amazonの様に
Application
revisions
Deployment groups
57
58. AWS Elastic Beanstalk
• 特徴 (http://aws.amazon.com/jp/elasticbeanstalk/)
– 速く簡単にアプリケーションをデプロイ可能
– インフラストラクチャーの準備&運営からア
プリケーションスタックの管理まで自動化
– Auto Scaling によりコストを抑えながらス
ケーラビリティを確保
– Java, PHP, Ruby, Python, Node.js, .NET,
Docker などに対応
インフラストラクチャー構成の構築・アプリデプロイの自動化サービ
ス
58
61. Elastic Beanstalk + Docker
Developer
1. docker push4. docker pull
2. deploy
registry
registry
registry
registry
Region
app
app
app
registry
app
3. docker run registry
5. docker stop registry
Docker registry container
with AWS credentials
61
66. VPC 10.0.0.0/16
Availability Zone - C
Availability Zone - A
Internet
Anyone
Internet
Gateway
Public Subnet 10.0.0.0/24
Public Subnet 10.0.2.0/24
Private Subnet
10.0.1.0/24
Private Subnet
10.0.3.0/24
AMI
Amazon RDS
Amazon RDS
AZ-A-WP1
10.0.0.6
EC2 Instance
EC2 Instance
AZ-B-WP2
10.0.2.8
こんな環境の作成を自動化できる
66
68. プロダクト Elastic
Beanstalk
OpsWorks Cloud
Formation
Amazon EC2
できること 定番構成+アプ
リデプロイ
カスタム構成+
アプリデプロイ
スタックの一括
構築
なんでも
利用頻度 アプリデプロイ
ごと
アプリデプロ
イ・プロビジョ
ニングごと
初回1回や
似た環境を作る
とき
自分で管理
(Chef、
Capistrano等)
手軽さ・
自由度
手軽 手軽 自由 自由
考慮点 定番アーキテク
チャかどうか
Chefの習得
Cookbookのテ
ストをどうする
か(ServerSpec
などを使うか)
アプリデプロイ
は別で考える
構築のコストを
考慮
68
69. プロダクト Elastic
Beanstalk
OpsWorks Cloud
Formation
Amazon EC2
できること 定番構成+アプ
リデプロイ
カスタム構成+
アプリデプロイ
スタックの一括
構築
なんでも
利用頻度 アプリデプロイ
ごと
アプリデプロ
イ・プロビジョ
ニングごと
初回1回や
似た環境を作る
とき
自分で管理
(Chef、
Capistrano等)
手軽さ・
自由度
手軽 手軽 自由 自由
考慮点 定番アーキテク
チャかどうか
Chefの習得
Cookbookのテ
ストをどうする
か(ServerSpec
などを使うか)
アプリデプロイ
は別で考える
構築のコストを
考慮
69
組み合わせ技も可能。例えばCloudFormationを使って
Elastic Beanstalkのアプリケーションや
OpsWorksのスタックを作成したりできる
70. AWS CloudFormation
• 特徴 (http://aws.amazon.com/jp/cloudformation/)
– テンプレートを元に、EC2やELBと
いったAWSリソースの環境構築を自動
化
– JSONフォーマットのテキストで、テン
プレートを自由に記述可能
– Microsoft Windows Server や SAP
HANA などのリファレンス実装を用意
(http://aws.amazon.com/quickstart/)
設定管理 & クラウドのオーケストレーション サービス
スタック
EC2
Auto
Scaling
テンプレート(設定ファイル)
テンプレートに基づき
各リソースが自動起動
EC2
Cloud
Formation
70
71. AWS OpsWorks
• 特徴 (http://aws.amazon.com/jp/opsworks/)
– Chefのレシピを使って、デプロイや運用タス
クを自動化可能
– ライフサイクルイベントにより動的な構成変
更への対応が可能
– 継続的な構成管理
アプリケーションのデプロイ・管理サービス
AWS OpsWorks
スタック
LBレイヤー
Webレイヤー
DBレイヤー
EC2インスタンス上の
OpsWorksエージェント
71
73. AMIによるデプロイのPros/Cons
方式 利点 欠点
[1]全部入りAMI 同一性の確保
起動時間が早い
デプロイ毎にAMIを作り直
す必要がある(作成プロセス
を自動化すれば欠点とはな
らない)。
[2]GoldenImage あとはアプリコードのみ最
新を取得すれば良く扱いや
すい
[3]最小構成AMI 柔軟に中身を変更できる 起動処理に時間がかかる。
場合によっては外部ライブ
ラリが取得できないことも
73
75. VPC
Availability Zone - C
Availability Zone - A
Internet
Client
Internet
Gateway
Public Subnet
Public Subnet
Private Subnet
Private Subnet
Amazon RDS
Amazon RDS
実例
75
Developers
76. VPC
Availability Zone - C
Availability Zone - A
Internet
Client
Internet
Gateway
Public Subnet
Public Subnet
Private Subnet
Private Subnet
Amazon RDS
Amazon RDS
実例
76
Developers
アプリコードと
CloudFormationテンプ
レートをプッシュ
77. VPC
Availability Zone - C
Availability Zone - A
Internet
Client
Internet
Gateway
Public Subnet
Public Subnet
Private Subnet
Private Subnet
Amazon RDS
Amazon RDS
実例
77
Developers
CloudFormationで新しい
インスタンスを展開
AMIとChef Serverを利用
78. VPC
Availability Zone - C
Availability Zone - A
Internet
Client
Internet
Gateway
Public Subnet
Public Subnet
Private Subnet
Private Subnet
Amazon RDS
Amazon RDS
実例
78
Developers
CIを実行
79. VPC
Availability Zone - C
Availability Zone - A
Internet
Client
Internet
Gateway
Public Subnet
Public Subnet
Private Subnet
Private Subnet
Amazon RDS
Amazon RDS
実例
79
Developers
CodeDeployが新しい
コードをデプロイ
80. VPC
Availability Zone - C
Availability Zone - A
Internet
Client
Internet
Gateway
Public Subnet
Public Subnet
Private Subnet
Private Subnet
Amazon RDS
Amazon RDS
実例
80
Developers
新しい環境にELBを
切り替え
監視システムへ登録
81. VPC
Availability Zone - C
Availability Zone - A
Internet
Client
Internet
Gateway
Public Subnet
Public Subnet
Private Subnet
Private Subnet
Amazon RDS
Amazon RDS
実例
81
Developers
古い環境の削除
86. 参考文献・リンク
• AWS Tokyo Summit 2015
DEV-04 (Developer Productivity):【デベロッパー向
け】開発生産性を上げるためのデプロイ戦略
– http://media.amazonwebservices.com/jp/summit2015/docs/Dev-
04d-Tokyo-Summit-2015.pdf
• AWS Tokyo Summit 2015
TA-05:AWS Elastic Beanstalk, AWS OpsWorks,
AWS CodeDeploy, AWS CloudFormation を使った自
動デプロイ
– http://media.amazonwebservices.com/jp/summit2015/docs/TA-05-
Tokyo-Summit-2015.pdf
86
90. AWS Black Belt Tech Webinar 2015
AWSのサービスをディープにご紹介
• 今後の配信予定 デプロイ&プロビジョニング月間!
– 10/21(水)18:00~ AWS Directory Service
– 10/28(水)18:00~ AWS CodeCommit & CodePipeline &
CodeCommit
– 11/4 (水) お休み
– 11月11日(水)18:00~ AWS OpsWorks
– 11月18日(水)18:00~ AWS CloudFormation
– 11月25日(水)18:00~ AWS Elastic Beanstalk
• 申し込みサイト
– http://aws.amazon.com/jp/about-aws/events/
90