presentation title here · cloudformation aws direct connect aws elastic beanstalk govcloud amazon...

93
AWS 初心者向けWebinarAWSのプロビジョニングからデプロイまで 2015/10/21 アマゾン データ サービス ジャパン株式会社 プロフェッショナルサービス 佐藤 聖規

Upload: ngonga

Post on 08-Apr-2018

217 views

Category:

Documents


3 download

TRANSCRIPT

【AWS初心者向けWebinar】AWSのプロビジョニングからデプロイまで

2015/10/21

アマゾンデータサービスジャパン株式会社

プロフェッショナルサービス

佐藤聖規

ご質問を受け付け致します!

質問を投げることができます!• Adobe Connectのチャット機能を使って、質問を書き込んでください。(書き込んだ質問は、主催者にしか見えません)

• できるだけ回答させていただきます。

①画面右下のチャットボックスに質問を書き込んでください

②吹き出しマークで送信してください

2

AWS初心者向けWebinarのご紹介

• AWSについてこれから学ぶ方向けのソリューションカットの技術Webinarです。

• 過去のWebinar資料– AWSクラウドサービス活用資料集ページにて公開

http://aws.amazon.com/jp/aws-jp-introduction/

• イベントの告知– 国内のイベント・セミナースケジュールページにて告知

http://aws.amazon.com/jp/about-aws/events/(オンラインセミナー枠)

3

自己紹介

• 名前:佐藤 聖規(さとう まさのり)

• 所属:アマゾンデータサービスジャパン株式会社プロフェッショナル・サービスコンサルタント

• 得意分野:インフラストラクチャー最適化/自動化、アジャイル開発

• 好きなAWSサービス:AWS Trusted Advisor

4

本日の内容

• AWSでプロビジョニングやデプロイをする上でのポイントを紹介します。

• ビジネスの成功において、サービスの頻繁かつ正確なリリースの重要性は日々増しています。頻繁にリリースをするには、プロビジョニングやデプロイを自動化する必要があります。

• AWSを使うと、クラウドの伸縮自在性やプログラマブルなインフラストラクチャーを活かして、ビジネスのサイクルに合わせたリリースができるようになります。

5

アジェンダ

• ビジネスの要求と自動化が必要な背景

• AWSでのデプロイとプロビジョニングの基本

• デプロイやプロビジョニングの自動化に向けた戦略

• デプロイの自動化

• プロビジョニングの自動化

• まとめ

6

アジェンダ

• ビジネスの要求と自動化が必要な背景

• AWSでのデプロイとプロビジョニングの基本

• デプロイやプロビジョニングの自動化に向けた戦略

• デプロイの自動化

• プロビジョニングの自動化

• まとめ

7

ビジネスは変化する、しかも速度は早い

• ビジネスは常に変化する– Amazon.comはインターネット書店としてスタート

– 現在はAWSやKindleなど創業当時とは違う多くのビジネスを手がけている

8

ビジネスはうまくいかないこともある

9

• 一発必中は難しい

• うまくいっていないことを把握

• ダメなものをやめる選択肢

Lean Startup

10

IDEAS

Build

Product

Measure

Data

Learn

フィードバックループ

• 顧客とビジネスの間のフィードバックループを加速する

• 顧客の期待に応え続ける

11

皆さんに質問

• How long does it take to deploy one line of code to production? – Mary & Tom Poppendieck, Lean Software Development

12

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

ビックバンリリースを避ける

• 顧客の反応を確認し

• システムの安定性もチェックし

• 小規模にリリース

14

繰り返し高頻度でリリースするには自動化が必要

• デプロイは何度も行なわれる

• 環境構築作業も何度も行なわれる

15

個人開発環境 共用開発環境 CI環境スモークテスト環境

ステージング性能テスト環境

セキュリティテスト環境

受け入れテスト環境

本番環境 負荷試験環境パッチ検証環境

デグレ検証環境

繰り返し高頻度でリリースするには自動化が必要

• デプロイは何度も行なわれる

• 環境構築作業も何度も行なわれる

16

個人開発環境 共用開発環境 CI環境スモークテスト環境

ステージング性能テスト環境

セキュリティテスト環境

受け入れテスト環境

本番環境 負荷試験環境パッチ検証環境

デグレ検証環境

手作業でリリースすると様々なリスクが顕在化する

手作業でのリリースで考えられるリスク

1. 手順書がメンテンスされない– リリース担当者だけが知る暗黙知が秘伝のタレとして入る

2. 手順書に従って手作業して間違う– 人間必ずミスをする

3. リリース失敗・切り戻し– リリースが一大イベントとなり、複数リリース(ビックバンリリース)になり複

雑化、そして失敗しやすく、切り戻しにくくなる。

4. 長い作業時間とそれに伴う失敗増– 作業対象が増えると作業時間が増える

5. (失敗により)リリースに対する自信を失う6. (失敗により)リリースプロセスが重厚長大に

1. 二重チェック、三重チェック、膨大なチェックリスト。維持が難しい。

17

アジェンダ

• ビジネスの要求と自動化が必要な背景

• AWSでのデプロイとプロビジョニングの基本

• デプロイやプロビジョニングの自動化に向けた戦略

• デプロイの自動化

• プロビジョニングの自動化

• まとめ

18

プロビジョニングとデプロイ

• コードやバイナリ、アセットなどの配布をデプロイと定義

• インフラストラクチャー構築をプロビジョニングと定義

19

Availability Zone Availability Zone

v2

AWSサービスの位置づけ

20

MonitorProvisionDeployTestBuildCode

Elastic Beanstalk

OpsWorks

Cloud

Watch

Cloud

Formation

Code

Deploy

Code

Commit

Code

Pipeline

Infrastructure as Code

• コードによるインフラストラクチャーの記述

• コードを書くことでインフラストラクチャーのプロビジョニングを自動化できる

21

AWSでのInfrastructure as Code

22

Java Python (boto) PHP .NET Ruby Node.js

AWS Tools for Windows

PowerShell

AWS CLI

JavaScript

CloudFormation OpsWorks ElasticBeanstalk

Infrastructure as Codeのメリット

• サーバーの台数が増えても構築に時間がかからない

• コード=手順書となるのでコードを常にメンテナンスしておけば良い

• 手順を抜かしたり手順を間違う心配がない

• 同じコードを動かせば同じサーバーが出来上がる

• コードで記述されているので再利用が容易である

• 他のプロジェクトでコードを使いまわすことで無駄を省ける

23

Infrastructure as Codeのデメリット

• 学習コスト・作るのに時間がかかる

• 常に正しく動作するようにメンテナンスする必要がある

• 雑なやり方をしてしまうと、保守にかえって時間がかかる可能性がある

24

持続的に運用・メンテナンス可能に保つ

AWSでのデプロイ

25

Code Deploy Code Pipeline

連続体として捉える

• インフラストラクチャーのプロビジョニングとアプリのデプロイは連続体

• 両者を一緒に考える

• キーワードは伸縮自在性

26

(例) AutoScalingではインフラストラクチャーとアプリが一体

27

(例) AutoScalingではインフラストラクチャーとアプリが一体

28

インスタンスが増える(=プロビジョニング)タイミングでアプリも最新のものをデプロイ

アジェンダ

• ビジネスの要求と自動化が必要な背景

• AWSでのデプロイとプロビジョニングの基本

• デプロイやプロビジョニングの自動化に向けた戦略

• デプロイの自動化

• プロビジョニングの自動化

• まとめ

29

ROIを意識するコストの考え方

• 自動化にはコストがかかる

• 基本ができていない場合は達成まで時間もかかる

• 手作業でやった場合と比較してどちらが安いか

• 実行回数や問題が発生した場合(リスク顕在化)の対処コスト等を含めて考える

• ただし、損益分岐点は思った以上に低い

• 顧客が要求するスピードやアプリケーションのライフサイクルを踏まえる

30

自動化に投資するか慎重な判断が必要な領域

• たとえば、小規模なキャンペーンサイト

• 使い捨てのアプリケーション

• 納品したら終わりのモノ

31

自動化の5R

• Rapid

• Reliable

• Repeatable

• Reduce Risk

• Roll back

32

プロジェクトの最初から始める

• プロジェクト期間中は何度もテスト環境にデプロイしたりプロビジョニングするはずなのでコスト効率が向上

• 何度もテストされ信頼性向上

33

顧客や上司の理解を得る

• 黙ってこっそりやるのは無理

• 説明責任

• 個人の便利ツール構築とは次元の違う話として組織で取り組む

• 全員で取り組む

34

カイゼンを続ける

• 一度プロセスや仕組みを作って終わりではなく、継続して改善をしていく

• 改善のループを回していく

35

アジェンダ

• ビジネスの要求と自動化が必要な背景

• AWSでのデプロイとプロビジョニングの基本

• デプロイやプロビジョニングの自動化に向けた戦略

• デプロイの自動化

• プロビジョニングの自動化

• まとめ

36

デプロイしやすいアーキテクチャーの維持

• アプリケーションを常に繰り返し高頻度でデプロイしやすいように維持

• 疎結合アーキテクチャー(ステートレス)

37

あらゆるものはいつでも故障する前提で設計。単一障害点を避ける

サーバコピーを取得しいつでも起動可能に

スナップショットでのバックアップ

障害時の自動復旧のためにAutoScalingを活用

複数AZ利用による冗長化

故障のための設計

コンポーネントを独立させ、各コンポーネントはブラックボックスとして設計

コンポーネント間を疎結合にアプリケーションをステートレスに。この実現のためにELBを活用し、スティッキーセッションを避ける

セッションデータはデータベース(RDS、DynamoDB)に保存

疎結合なコンポーネント

コンポーネントの健全性や配置場所を決めつけない

いつでもリブート可能になるように設計

動的なコンフィグレーション(起動時に自動でアプリケーションやライブラリ等をインストールする)の活用

設定済みAMIの活用による時間短縮

弾力性の実装

AWSのセキュリティは責任分担モデル。OS以上の層やセキュリティグループの設定、データ暗号化、秘密鍵の管理等は利用者側の責任

OSの層とアプリの層、ネットワークの層など各所でセキュリティを担保すること。必要に応じてアプリケーションのペネトレーション試験も推奨

全レイヤでセキュリティ担保

AWSの特性は時間単位でリソースを使用可能な点。これを活かしてアプリケーションやバッチ処理の並列化、マルチスレッド化を検討する

ELBやAutoScalingを活用して並列処理、分散処理を実装

並列処理の実装

EBSや、データベース、S3等データを保存するストレージには多種多様なものがある

読み書きの特性(読み書きの比率や頻度)や、データ喪失の可能性、ステートレスの実現可否を踏まえて適切なストレージを選択する

異なるストレージの使い分け

38

デプロイ自動化に必要な要素

1. バージョン管理

2. 自動化されたテスト

3. マイグレーション

4. 継続的インテグレーション

5. デプロイツール

• (静的解析・コードレビュー)

39

バージョン管理

• 全ての基本

• ブランチ、マージを含めて、チーム全員が使い方を理解する。

• 設定ファイルやアセット含めて、いつでも環境を再現できるようにしなければならない

40

AWS CodeCommit

ブランチモデルの理解

41

• ブランチの戦略がチーム全員で理解できているか?

• ブランチの戦略はデプロイの戦略と密接な関係

A successful Git branching modelより図を引用(http://nvie.com/posts/a-successful-git-branching-model/)

AWS CodeCommit

• Availability Zoneを跨ぎデータを冗長化

• データは暗号化されて保存

• IAMとの統合

• レポジトリのサイズは無制限

git push AWS CodeCommit

GitのオブジェクトはAmazon S3

GitのインデックスはAmazon DynamoDB

暗号化鍵はAWS KMS

SSH or HTTPS

安全、スケーラブル、マネージドな、Gitソース管理

42

バージョン管理システム on AWS

• AWS CodeCommitを使うとセキュリティやディスクサイズ、バックアップなどの運用の負担を減らすことができる

• AWS上にVCSを構築する場合も、パフォーマンスが不足するときのスケールアップや、スナップショット取得の容易性によるデータの耐久性など多くのメリットがある

43

テストの自動化

• 速度維持と品質維持– 早期に問題を発見し、すぐに解決し続ける方がコストが安い

フェーズ 修正までの時間(例)

要求や設計 5分

コードやユニットテスト 15分

結合テストやシステムテスト 1時間

ベータテスト 2時間

リリース後 1日

44

どこまでテストを用意するか?

• ユニットテスト、結合テスト、受け入れテスト、スモークテスト

• テストもRIOを意識して考える

• テスト戦略として考える

45

マイグレーション

• 設定ファイルやアセット含めて、いつでも環境を再現できるようにしなければならない原則

• いつの時点のリリースにも戻せるようにする原則

• 依存関係・前後関係は人が判断しない原則

• マイグレーションの活用

46

マイグレーション用ツール

47

継続的インテグレーション

• バージョン管理、テスト自動化、マイグレーションが実現できていれば継続的インテグレーションの実現が可能

• 常にリリース可能かどうかを検証し続ける

48

継続的インテグレーション on AWS

• スローテスト問題に対して並列実行

• 指定時刻に継続的インテグレーションサーバを増やし、必要なくなったら止める

• バイナリを大量に生成しても、AWSに保存すれば容量は気にしなくても良くなる

• クラウドならではのアプローチ

49

デプロイプロセス設計

• いつ誰がどの環境にどの単位でデプロイするのか?• どういうデプロイのパターンが存在するのか?• どんなツールを使うのか?• 誰がデプロイスクリプトを保守するのか?• デプロイの成功/失敗をどのように判断するのか?• デプロイ後に問題が分かったときにどのように対処するのか?

• いまリリースされているバージョンをどのように知ることができるのか?

50

粒度を小さく

コードレビュー

チェックイン

ユニットテスト

カバレッジ

ドキュメント

性能

セキュリティ

デプロイ

結合テスト

受け入れテスト

クロスブラウザ

静的解析

フィーチャー

コードレビュー

チェックイン

ユニットテスト

カバレッジ

ドキュメント

性能

セキュリティ

デプロイ

結合テスト

受け入れテスト

クロスブラウザ

静的解析

フィーチャー

コードレビュー

チェックイン

ユニットテスト

カバレッジ

ドキュメント

性能

セキュリティ

デプロイ

結合テスト

受け入れテスト

クロスブラウザ

静的解析

フィーチャー

コードレビュー

チェックイン

ユニットテスト

カバレッジ

ドキュメント

性能

セキュリティ

デプロイ

結合テスト

受け入れテスト

クロスブラウザ

静的解析

フィーチャー

コードレビュー

チェックイン

ユニットテスト

カバレッジ

ドキュメント

性能

セキュリティ

デプロイ

結合テスト

受け入れテスト

クロスブラウザ

静的解析

フィーチャー

コードレビュー

チェックイン

ユニットテスト

カバレッジ

ドキュメント

性能

セキュリティ

デプロイ

結合テスト

受け入れテスト

クロスブラウザ

静的解析

フィーチャー

コードレビュー

チェックイン

ユニットテスト

カバレッジ

ドキュメント

性能

セキュリティ

デプロイ

結合テスト

受け入れテスト

クロスブラウザ

静的解析

フィーチャー

51

AWS CodePipeline

• カスタマイズ可能なワークフローエンジン

• パートナーやカスタムのシステムと連携

• ビジュアルエディターと可視化されたステータス

継続的デリバリー、リリース自動化を、Amazonの様に

Build1) ビルド

2) Unitテスト

1) デプロイ

2) UIテスト

Source Beta Production

1) デプロイ

2) 負荷テスト

Gamma

1) カナリア デプロイ

2) リージョン1 デプロイ

3) リージョン2 デプロイ

52

デプロイのよくあるパターン

LBから切り離す

アプリケーションのデプロイ

スモークテスト

LB対象に戻す

アプリケーションのデプロイ

メンテ中ページに差し替える

アプリケーションのデプロイ

データベースのマイグレーション

スモークテスト

メンテ中ページから戻す

新規環境構築

アプリケーションのデプロイ

スモークテスト

LB切り替え

53

ブルーグリーンデプロイ

Webサーバー群(Amazon EC2)

データベースサーバ群(Amazon RDS)

ロードバランサー

v1.1 v1.1

v1.1 v1.1

v1.2

v1.2

v1.2

v1.2

モニタリング(CloudWatch)

54

ブルーグリーンデプロイ

Webサーバー群(Amazon EC2)

データベースサーバ群(Amazon RDS)

ロードバランサー

v1.1 v1.1

v1.1 v1.1

v1.2

v1.2

v1.2

v1.2

モニタリング(CloudWatch)

55

デプロイの後一定期間たって戻すことがないと判断できた時点で旧バージョン削除クラウドの特性を活かしたデプロイ

ツールの選択

• 専用のツールを使う– Capistrano、Fabric、など

• デプロイスクリプトの可読性と保守性は重要– これがリリース手順書の代わりになるので、担当者が変わっても保守できるものを選択

– シェルスクリプトは複雑化しやすく保守しにくい

• AWS CodeDeploy、Elastic Beanstalkなどが自分たちのプロセスに合いそうかどうかを確認– どんなデプロイプロセスが必要なのかによって適合性がかわる

56

AWS CodeDeploy

• 1台も数千台も同じやり方で

• ダウンタイム無くデプロイ

• 中央でデプロイをコントロール・モニタリング

Staging

AWS CodeDeployv1, v2, v3

Production

Dev

自動デプロイのコーディネートを、Amazonの様に

Application

revisions

Deployment groups

57

AWS Elastic Beanstalk

• 特徴 (http://aws.amazon.com/jp/elasticbeanstalk/)

– 速く簡単にアプリケーションをデプロイ可能

– インフラストラクチャーの準備&運営からアプリケーションスタックの管理まで自動化

– Auto Scaling によりコストを抑えながらスケーラビリティを確保

– Java, PHP, Ruby, Python, Node.js, .NET, Docker などに対応

インフラストラクチャー構成の構築・アプリデプロイの自動化サービス

58

• アプリケーションを簡単にデプロイ

• 複数環境を切り替え可能(ブルーグリーンデプロイ)

59

Elastic Beanstalkでデプロイ

• たとえばCIサーバでテストが終わったあとに、CIサーバからステージング環境や本番環境デプロイできる

60

Elastic Beanstalk + Docker

Developer

1. docker push4. docker pull

2. deploy

registryregistry

registry

registry

Region

app

app

app

registry

app

3. docker run registry

5. docker stop registry

Docker registry container with AWS credentials

61

デプロイ自動化ワンポイント

• デプロイ失敗の検知をおこなう– スモークテストの実行

– 監視システムによるログ監視やプロセス監視

• 例:ELBのHTTPCode_Backend_4x,5xx

– 失敗を検知したらロールバック

• 手作業を混ぜない– リリース可否などの判断は可

62

アジェンダ

• ビジネスの要求と自動化が必要な背景

• AWSでのデプロイとプロビジョニングの基本

• デプロイやプロビジョニングの自動化に向けた戦略

• デプロイの自動化

• プロビジョニングの自動化

• まとめ

63

プロビジョニング自動化の進め方

• 基本的な考え方はデプロイ自動化と同じ

• デプロイとプロビジョニングは連続体

• プロセスの設計

• ベストなツールの選択

• 自動化しやすいアーキテクチャー

64

クラウドのメリットを活かす

オンプレミス新しいインフラストラクチャーの構築は複雑かつ遅くなりがち

クラウドワンクリックで新しい

インフラストラクチャーを用意

新しいデプロイ環境を構築

新しいテスト環境を構築

新しい環境を海外に構築

1,000 サーバ追加

1,000 サーバ削除

必要 調査 評価

計画 設計 エンジニア

調達 契約コミッショ

デプロイ

65

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-WP110.0.0.6

EC2 Instance

EC2 Instance

AZ-B-WP210.0.2.8

こんな環境の作成を自動化できる

66

AWSのプロダクトの位置づけ

Elastic Beanstalk OpsWorks CloudFormation EC2

手軽 自由度高

67

プロダクト ElasticBeanstalk

OpsWorks CloudFormation

Amazon EC2

できること 定番構成+アプリデプロイ

カスタム構成+アプリデプロイ

スタックの一括構築

なんでも

利用頻度 アプリデプロイごと

アプリデプロイ・プロビジョニングごと

初回1回や似た環境を作るとき

自分で管理(Chef、Capistrano等)

手軽さ・自由度

手軽 手軽 自由 自由

考慮点 定番アーキテクチャかどうか

Chefの習得Cookbookのテストをどうするか(ServerSpecなどを使うか)

アプリデプロイは別で考える

構築のコストを考慮

68

プロダクト ElasticBeanstalk

OpsWorks CloudFormation

Amazon EC2

できること 定番構成+アプリデプロイ

カスタム構成+アプリデプロイ

スタックの一括構築

なんでも

利用頻度 アプリデプロイごと

アプリデプロイ・プロビジョニングごと

初回1回や似た環境を作るとき

自分で管理(Chef、Capistrano等)

手軽さ・自由度

手軽 手軽 自由 自由

考慮点 定番アーキテクチャかどうか

Chefの習得Cookbookのテストをどうするか(ServerSpecなどを使うか)

アプリデプロイは別で考える

構築のコストを考慮

69

組み合わせ技も可能。例えばCloudFormationを使ってElastic BeanstalkのアプリケーションやOpsWorksのスタックを作成したりできる

AWS CloudFormation

• 特徴 (http://aws.amazon.com/jp/cloudformation/)

– テンプレートを元に、EC2やELBといったAWSリソースの環境構築を自動化

– JSONフォーマットのテキストで、テンプレートを自由に記述可能

– Microsoft Windows Server や SAP HANA などのリファレンス実装を用意(http://aws.amazon.com/quickstart/)

設定管理 & クラウドのオーケストレーション サービス

スタック

EC2

AutoScaling

テンプレート(設定ファイル)

テンプレートに基づき各リソースが自動起動

EC2

Cloud

Formation

70

AWS OpsWorks

• 特徴 (http://aws.amazon.com/jp/opsworks/)

– Chefのレシピを使って、デプロイや運用タスクを自動化可能

– ライフサイクルイベントにより動的な構成変更への対応が可能

– 継続的な構成管理

アプリケーションのデプロイ・管理サービス

AWS OpsWorks

スタック

LBレイヤー

Webレイヤー

DBレイヤー

EC2インスタンス上のOpsWorksエージェント

71

どんなAMIを使うか?

Linux

J2EE

アプリコード

Log4J

Spring

Hibernate

Struts

Tomcat

Apache

Linux

J2EE

アプリコード

Log4J

Spring

Hibernate

Struts

Tomcat

Apache

EC2

L

in

u

x

JE

E

Yo

u

r C

od

e

L

o

g4

J

S

pr

in

gHi

be

r

na

te

St

r

u

ts

Tom

c

a

t

Apa

ch

e

L

in

u

x

JE

E

Yo

u

r C

od

e

L

o

g

4J

S

pr

in

gHi

be

r

na

te

St

r

u

ts

Tomc

a

t

Apa

che

Li

n

ux

JE

E

Yo

u

r C

od

e

L

o

g4

J

S

pr

in

gHi

be

r

na

te

St

r

u

ts

Tom

c

a

t

Apa

c

h

e

Li

n

ux

JE

E

Yo

u

r C

od

e

L

o

g4

J

S

pr

in

gHi

be

rn

a

te

St

r

u

ts

Tom

c

a

t

Apa

c

h

e

アプリコード

Amazon S3

Log4JSpring

Struts

Linux

J2EE

Hibernate

Tomcat

Apache

Linux

J2EE

アプリコード

Amazon S3

Hibernate

TomcatLog4J

Spring

StrutsApache

EC2

L

in

ux

JE

E

Hi

b

er

na

t

e

T

omcat

A

pache

L

in

ux

J

EE

Hi

b

er

na

t

e

T

o

mca

t

A

pac

h

e

L

in

ux

J

EE

Hi

b

er

na

t

e

T

o

mca

t

A

pac

h

e

EC2

Linux

JEE

Linux

JEE

Chef

Chef

スクリプト

Java AMIJavaスタック Java AMIAMI

起動時取得

起動時取得起動時取得

[1]全部入りAMI [2]Golden Image [3]最小構成AMI

72

AMIによるデプロイのPros/Cons

方式 利点 欠点

[1]全部入りAMI 同一性の確保起動時間が早い

デプロイ毎にAMIを作り直す必要がある(作成プロセスを自動化すれば欠点とはならない)。

[2]GoldenImage あとはアプリコードのみ最新を取得すれば良く扱いやすい

[3]最小構成AMI 柔軟に中身を変更できる 起動処理に時間がかかる。場合によっては外部ライブラリが取得できないことも

73

インフラストラクチャーも含めた継続的インテグレーションが可能に

• インフラストラクチャーのプロビジョニングも自動化

• 自動化しやすいアーキテクチャを作り、維持する

• プロビジョニングとデプロイを連続体として捉える

• 自動化できれば継続的インテグレーションができる

74

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

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テンプ

レートをプッシュ

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を利用

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を実行

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が新しいコードをデプロイ

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を切り替え

監視システムへ登録

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

古い環境の削除

アジェンダ

• ビジネスの要求と自動化が必要な背景

• AWSでのデプロイとプロビジョニングの基本

• デプロイやプロビジョニングの自動化に向けた戦略

• デプロイの自動化

• プロビジョニングの自動化

• まとめ

82

まとめAWSサービスの位置づけ

83

MonitorProvisionDeployTestBuildCode

Elastic Beanstalk

OpsWorks

Cloud

Watch

Cloud

Formation

Code

Deploy

Code

Commit

Code

Pipeline

まとめ

• デプロイ自動化・環境構築の自動化には順番がある

• プロジェクトの最初から全員で取り組む

• バージョン管理・自動テスト・継続的インテグレーショ

ン重要

• デプロイ・プロビジョニングプロセス設計をする

• 適切なツールを使う– AWSなら CodeCommit / CodeDeploy / CodePipeline /

CloudFormation / OpsWorks / Elastic Beanstalk

84

Q&A

85

参考文献・リンク

• AWS Tokyo Summit 2015DEV-04 (Developer Productivity):【デベロッパー向け】開発生産性を上げるためのデプロイ戦略– http://media.amazonwebservices.com/jp/summit2015/docs/Dev-

04d-Tokyo-Summit-2015.pdf

• AWS Tokyo Summit 2015TA-05:AWS Elastic Beanstalk, AWS OpsWorks, AWS CodeDeploy, AWS CloudFormation を使った自動デプロイ– http://media.amazonwebservices.com/jp/summit2015/docs/TA-05-

Tokyo-Summit-2015.pdf

86

詳しくは、http://aws.amazon.com/training をご覧ください

メリット

• AWS について実習や実践練習を通じて学習できる

• AWS を熟知したエキスパートから直接 AWS の機能について学び、疑問の答えを得られる

• 自信をもって IT ソリューションに関する決定を下せるようになる

提供方法

e ラーニングや動画

セルフペースラボ

クラスルームトレーニング

AWSトレーニングでは様々な学習方法をご提供しています

87

公式Twitter/FacebookAWSの最新情報をお届けします

@awscloud_jp

検索

最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを日々更新しています!

もしくはhttp://on.fb.me/1vR8yWm

88

AWS初心者向けWebinar

• AWSをこれからご使用になる技術者向け、ソリューションカットのセミナー

• 今後の配信予定

【AWS初心者向けWebinarOct】AWS上にWebサーバーシステムを作ってみましょう~仮想サーバーから[演習つき]

※12時~13時15分の時間帯です!

• 申し込みサイト

– http://aws.amazon.com/jp/about-aws/events/

89

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

AWSの導入、お問い合わせのご相談

• AWSクラウド導入に関するご質問、お見積り、資料請求をご希望のお客様は、以下のリンクよりお気軽にご相談くださいhttps://aws.amazon.com/jp/contact-us/aws-sales/

※「AWS 問い合わせ」で検索してください91

We are hiring!!

http://aws.amazon.com/jp/careers/

92

ご参加ありがとうございました