Transcript
Page 1: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

1

AWS CodeCommit AWS CodePipeline AWS CodeDeploy

AWS Black Belt Tech Webinar 2015 アマゾン データ サービス ジャパン株式会社 コンサルタント 佐藤聖規

2015/10/28

Page 2: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

2

サービスの頻繁なリリースは ビジネスの成功に欠かせない

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

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

• 1発1中は難しい

• 頻繁にリリースし、エンドユーザやビジネスのフィードバックを受けてサービスを育てていく。

Page 3: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

3

AWSのイノベーションのペース

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

2013

2012

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

Page 4: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

4

DevOpsとは?

DevOps = ライフサイクルを高速化する効率の良さ

開発者 顧客

release test build

plan monitor

デリバリのパイプライン

フィードバックループ

ソフトウェア開発のライフサイクル

Page 5: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

5

AmazonにおけるDevOpsの物語

Page 6: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

6

Page 7: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

7

モノリシックな開発のライフサイクル

開発者

release test build

デリバリパイプライン アプリ

Page 8: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

8

• Service-Oriented Architecture (SOA)

• 単一の目的

• APIでのみ連携

• “Microservices”

Page 9: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

9

• Two-pizza teams

• 全ての主導権

• 全ての責任

• 良くしようとする動機

• “DevOps”

Page 10: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

10

足りないツール

開発者 デリバリパイプライン サービス

???

Page 11: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

11

• セルフサービス

• テクノロジに依らない

• ベストプラクティス

• サービスは単一の目的

Page 12: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

12

• デプロイサービス

• ダウンタイム無し

• ヘルスチェック

• バージョニングした成果物、ロールバック

Page 13: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

13

• 継続的デリバリ

• コミットから本番環境まで

• 自動化されたアクションと遷移

• >90%のチームが利用

Pipelines

Page 14: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

14

Microserviceの開発ライフサイクル

開発者 デリバリパイプライン サービス

release test build

release test build

release test build

release test build

release test build

release test build

Page 15: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

15

= 5000万回/年のデプロイ

数千のチーム

× Microservice アーキテクチャ

× 継続的デリバリ

× 複数の環境

Page 16: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

16

デリバリパイプラインのセットアップ

1) ソフトウェアのデプロイを自動化

2) リリースプロセスを自動化

deploy deploy deploy deploy

development test staging production

release: source > build > test > staging > production

Page 17: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

17

デリバリパイプラインのセットアップ

0) ソフトウェアのバージョン管理

AWS CodeCommit

1) ソフトウェアのデプロイを自動化

AWS CodeDeploy

2) リリースプロセスを自動化

AWS CodePipeline

Page 18: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

18

AWS CodeCommit/AWS CodePipeline/AWS CodeDeployの位置づけ

Monitor Provision Deploy Test Build Code

Elastic Beanstalk

OpsWorks

Cloud Watch

Cloud Formation

Code Deploy

Code Commit

Code Pipeline

Page 19: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

19

AWS CodeCommit

Page 20: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

20

バージョン管理システムとGit

• ファイルの変更履歴を保管する – 誰が、いつ、どのような、変更を行なったか自動的に記録する

– なぜ、はコメントとして残すことができる

– 好きな状態に戻すことができる

• ファイルの変更を保管しているデータベースをリポジトリと呼ぶ

• 近年、分散バージョン管理システムであるGitがよく採用される。

Page 21: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

21

よくある課題

• 可用性・冗長性 – バージョン管理システムがダウンすると開発作業が進められない

• 耐久性 – リポジトリが消失するとソースコードの安定版が消失

• リポジトリサイズ – 開発が長期にわたるとリポジトリが大きくなり、ディスクサイズが足りなくなる

• パフォーマンス – 開発規模が大きくなるとバージョン管理システム自体のパフォーマンスが劣化

Page 22: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

22

AWS CodeCommit

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

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

• IAMとの統合

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

git push AWS CodeCommit

Gitのオブジェクトは Amazon S3

Gitのインデックスは Amazon DynamoDB

暗号化鍵は AWS KMS

SSH or HTTPS

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

Page 23: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

23

AWS CodeCommitの特徴

• AWSのフルマネージド – Git用のインスタンスを立ててGitを管理する必要がない

– リポジトリのサイズは無制限。各ファイルは2GBまで

• 普通のGitリポジトリとして使える – 既存のリポジトリからの移行が容易

• AWS KMSを使って保存データは暗号化される

• アクセス権をIAMでコントロールできる – ssh公開鍵無しにAWS CLIと連携した認証も可能

Page 24: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

24

Getting Started with https

• Step 1: AWS CodeCommitを使うためのIAMユーザの作成やAWS CLIのセットアップ

• Step 2: Gitのインストール • Step 3: Credential Helperのインストール • Step 4: AWS CodeCommitリポジトリの作成とClone • 手順Mac/Linux

– http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/setting-up-https-unixes.html

• 手順Windows – http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/settin

g-up-https-windows.html

Page 25: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

25

Step 3: Credential Helperのインストール Mac/Linuxでのサンプル

$git config --global credential.helper '!aws --profile default codecommit credential-helper $@' $git config --global credential.UseHttpPath true

Credential Helperの設定

~/.gitconfigの中身

[credential] helper = !aws --profile CodeCommitProfile codecommit credential-helper $@ UseHttpPath = true

Mac OS Xの場合はKeychainの設定をしないと約15分で接続できなくなるので注意

Page 26: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

26

Step 3: Credential Helperのインストール Windowsでのサンプル

cd %PROGRAMFILES(X86)%\AWS Tools\CodeCommit git-credential-AWSS4.exe -p default

Credential Helperの設定

%HOME%/.gitconfigの中身

[credential] helper = !'C:\\Users\\user-name\\AppData\\Roaming\\GitCredStore\\git-credential-AWSSV4.exe' --profile=CodeCommitProfile UseHttpPath = true

Page 27: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

27

Getting Started with ssh

• Step 1: AWS CodeCommitを使うためのIAMユーザの作成 • Step 2: Gitのインストール • Step 3: SSH公開鍵の登録と秘密鍵の設定 • Step 4: AWS CodeCommitリポジトリの作成とClone • 手順Mac/Linux

– http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/setting-up-ssh-unixes.html

• 手順Windows – http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/settin

g-up-ssh-windows.html

Page 28: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

28

Step 3: SSH公開鍵の登録と秘密鍵の設定 IAMユーザへのSSH公開鍵の登録

注意 iam:UploadSSHPublicKeyのポリシー設定が必要です。

Page 29: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

29

Step 3: SSH公開鍵の登録と秘密鍵の設定

Page 30: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

30

Step 3: SSH公開鍵の登録と秘密鍵の設定

Page 31: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

31

Step 3: SSH公開鍵の登録と秘密鍵の設定

Host git-codecommit.*.amazonaws.com User APKAEIBAERJR2******* IdentityFile ~/.ssh/codecommit_rsa

~/.ssh/configファイルに以下を追記 UserにはSSH Key IDを指定

git clone ssh://[email protected]/v1/repos/MyDemoRepo my-demo-repo

WindowsではユーザIDをSSH Key IDとして指定

Page 32: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

32

コンソールでソースコードを閲覧 〜ファイルの一覧

Page 33: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

33

コンソールでソースコードを閲覧 〜ソースコードの表示

Page 34: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

34

コンソールでソースコードを閲覧 〜MarkDownのレンダリング

Page 35: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

35

AWS CodeCommitの料金

• ユーザ課金 – 1アクティブユーザ毎に$1/月

• 無料利用枠 – 5アクティブユーザ/月 – 50 GB/月 – 10,000 req/月

※アクティブユーザとは その月に1回でもCodeCommitにアクセスがあったIAM user/role等が対象

• ストレージ課金 – 10 GB/1アクティブユーザ/月が無料 – 超過分は$0.06/GB/月

• Gitリクエスト課金 – 2,000req/1アクティブユーザ/月が無料 – 超過分は$0.001/req – pullとpushが対象

• データ転送が無ければ対象外

Page 36: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

36

よくある課題をAWS CodeCommitで解決

• 可用性・冗長性

→AWSのマネージドサービスで可用性や冗長性を確保

• 耐久性

→データはS3に配置されるため高い耐久性を誇る

• リポジトリサイズ

→リポジトリサイズは無制限

• パフォーマンス

→パフォーマンスはスケーラブル

Page 37: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

37

AWS CodePipeline

Page 38: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

38

デプロイメントパイプラインとは

• ソースコードからビルドやテストなどのステージを自動化したプロセス

• プロセスは開発チームやサービスそれぞれで異なる

• スムーズなデプロイメントには欠かせない

ソースコード

ビルド テスト ステージ デプロイ

本番 デプロイ

UAT

デプロイメントパイプライン

Page 39: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

39

よくある課題

• デプロイメントパイプラインの設定が複雑 – デプロイ職人が生まれてしまう。

• 標準化されないデプロイメントパイプライン – デプロイメントパイプラインを他プロジェクトで再現できない

• デプロイメントパイプラインのバックアップ – 消失するとデプロイできなくなる

Page 40: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

40

AWS CodePipeline

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

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

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

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

Build 1) ビルド

2) Unitテスト

1) デプロイ

2) UIテスト

Source Beta Production

1) デプロイ

2) 負荷テスト

Gamma

1) カナリア デプロイ

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

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

Page 41: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

41

AWS CodePipelineの特徴

• AWSマネージドのワークフローコントローラ – Build/Test/Deployを組み合わせた複雑なワークフロー

• AWSサービスやサードパーティとの連携が充実 – DeployとしてAWS CodeDeployやAWS Elastic Beanstalk

– BuildやTestをJenkinsサーバと連携

• 見やすいUI – マネージメントコンソールで確認・操作ができる

Page 42: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

42

開発のスタイルにあったワークフローを自由に 例えば

ソースコード

ビルド ユニット テスト

ステージ デプロイ

本番 デプロイ

A機能画面 テスト

CodePipeline

ステージ デプロイ

B機能画面 テスト

Page 43: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

43

開発のスタイルにあったワークフローを自由に

Page 44: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

44

AWS CodePipeline パートナー連携

Page 45: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

45

Custom Action

開発者が コミット

CodePipeline S3

カスタムアクションリソース

カスタムジョブワーカー カスタムビルドアクション

1. エージェントでポーリング

2. ジョブの詳細

4. ビルドの実行

3. ジョブのAck

5. ジョブの成功

Page 46: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

46

AWS CodePipelineの料金

• 1アクティブパイプライン毎に、$1/月 – アクティブパイプラインとは、その月に1度でもアクションを実行したパイプライン

• 無料利用枠 – 1パイプライン/月

Page 47: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

47

よくある課題をAWS CodePipelineで解決

• デプロイメントパイプラインの設定が複雑

→見やすいUIで設定できる。もちろんCLIでも。

• 標準化されないデプロイメントパイプライン→CodePipelineなら標準化も簡単

• デプロイメントパイプラインのバックアップ

→マネージドサービスで消失の可能性は低い

Page 48: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

48

AWS CodeDeploy

Page 49: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

49

デプロイとは?

• アプリケーションやアセットの更新をサーバに反映させること

• 実際には、更新されたファイル群を対象のサーバ群に配布する

Availability Zone Availability Zone

v2

Page 50: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

50

デプロイとビルド・プロビジョニングの違い

• ビルド – ソースコードから配布すべき成果物を生成する

• プロビジョニング – サーバにソフトウェアをインストール&設定

• オーケストレーション – DBやLBとのつなぎ込み

• デプロイ – アセットの更新をサーバに反映

ソース コード

ビルド ex. mvn, bundle

プロビジョニング ex. chef, puppet

オーケストレーション

デプロイ

Apache, Nginx Ruby, JDK Config, etc.

WEB LB

DB

Amazon Linux

Page 51: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

51

よくあるデプロイ手法と課題

• Push型 – デプロイ元からデプロイ先へ – FTP, rsync, git pull

– Capistrano, Fabric

• 課題 – 自動化できていない

• 人間がサーバにログインしてコマンドを手動で実行している

– デプロイサーバの負荷、シングルポイント

– 新規サーバ構築時にデプロイ対象がわからない

– 複数人でデプロイがぶつからない様に管理するのが面倒

Page 52: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

52

デプロイの効率化・安定化

• 質の高いリリースのためには、必要不可欠

• 効率的で安定している仕組みがあるなら、それを使わない手はない

AWS CodeDeployが選択肢

Page 53: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

53

AWS CodeDeploy

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

• 開発環境もステージング環境もプロダクションも同じやり方で

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

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

Staging

AWS CodeDeploy v1, v2, v3

Production

Dev

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

Application revisions

Deployment groups

Page 54: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

54

AWS CodeDeploy概要

• デプロイに特化したサービス – 指定したグループに、指定したファイルを、指定した割合ずつ

– TagやAuto Scaling Groupでグループ指定

• エージェントを入れれば利用可能 – Pull型のデプロイ、EC2以外でも – Linux & Windows対応

• 関連する処理をフックで実行可能 – アプリ再起動なども自動化できる

Staging Production

Dev

Deployment groups

Agent Agent

Agent

Agent

Agent

Agent

Agent

AWS CodeDeploy v1, v2, v3

Page 55: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

55

AWS CodeDeployの動作

1. 配布物をアップロード – Amazon S3 / GitHub

2. デプロイを指示 – 配布物ダウンロード

– files: 所定の場所に配置

– hooks: 任意の処理実行

Deployment group

Agent Agent Agent

or

Amazon S3

Application

1. Upload

files

hooks

/dst

2. Deploy Download

Polling

Page 56: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

56

Deployment config – デプロイのスピード

v2 v1 v1 v1 v1 v1 v1 v1

v2 v2 v2 v2 v1 v1 v1 v1

v2 v2 v2 v2 v2 v2 v2 v2

OneAtATime (1台ずつ)

HalfAtATime (半分ずつ)

AllAtOnce (全て一度に)

※任意の割合のconfigも作成可能

Page 57: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

57

AppSpec File – デプロイの手順書

• files

– どのファイルをどこに配置するか指定

• hooks

– 以下の黄色のEventで実行する処理を指定

version: 0.0 os: linux files: - source: config destination: /etc/app - source: target/hello.war destination: /var/lib/tomcat6/webapps hooks: ApplicationStop: - location: deploy_hooks/stop-tomcat.sh ApplicationStart: - location: deploy_hooks/start-tomcat.sh

Page 58: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

58

Application – 成果物 + AppSpec File

• フォルダ構成 – appspec.yml (必須) – ビルド済の成果物 – その他配布物 – hookスクリプト

• アップロード – Amazon S3のObject

• zip/tar/tgz形式対応

– GitHubのRepository • zip形式でダウンロードされる

/ ├── appspec.yml ├── config/ │ └── config.xml ├── deploy_hooks/ │ ├── start-tomcat.sh │ └── stop-tomcat.sh └── target/ └── hello.war

or

Amazon S3

注: ソースコードではなくmavenやbundle後のファイル群をput/pushすることをオススメ

Page 59: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

59

AWS CodeDeployでやること、やらないこと

やること

• ファイルをサーバに配る

• hookスクリプトの実行 – アプリ再起動

– オーケストレーション • ELB付け外し等

• これらの実行を中央管理 – 進捗やエラーログが、ブラウザやAPIで確認可能

やらないこと

• ビルド

• プロビジョニング

※いずれもhookスクリプトで実行できなくはないが、効率や安定性の面で オススメしない

Page 60: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

60

AWS CodeDeployとAuto Scaling Group(ASG)

• スケールアウト時に最新のリビジョンが自動でデプロイされる – ASGのLifecycle Hookを利用

– 追加インスタンスのみにデプロイ

• Deployment GroupにASGを指定するだけで利用可能 デプロイに成功した最新の

リビジョンが自動でデプロイ

Page 61: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

61

AWS CodeDeploy パートナー連携

Page 62: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

62

AWS CodeDeployの料金

• Amazon EC2へのデプロイは全て無料 – Amazon S3を使う場合は、S3の利用料

• オンプレミスインスタンスへのデプロイ – $0.02/インスタンス/デプロイ

Page 63: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

63

よくある課題をAWS CodeDeployで解決

• 自動化できていない →もちろん自動的にデプロイ • デプロイサーバの負荷、シングルポイント →マネージドサービスのためパフォーマンス、耐障害性も気にしなくて良くなる • 新規サーバ構築時にデプロイ対象がわからない →CodeDeployなら、AutoScalingと連動し自動でデプロイ • 複数人でデプロイがぶつからない様に管理するのが面倒 →AWS CodeDeployで一元管理

Page 64: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

64

まとめ

Page 65: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

65

CodeCommit/CodePipeline/CodeDeploy リリース状況

• CodeCommit – 2015年7月にGA!

– N. Virginia のみ

• CodePipeline – 2015年7月にGA!

– N. Virginia / Oregon

• CodeDeploy – 2015年8月東京リージョンで利用可能に!

2015年10月28日現在

Page 66: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

66

質の高い開発のためには質の高いツールを

• 質の高い開発を継続するには、ツールが重要

• ただし、ツールだけではなく同時にアーキテクチャやプロセスと組織の整備も重要

AWS CodeCommit AWS CodePipeline AWS CodeDeployの利用をご検討ください

Page 67: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

67

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

http://www.slideshare.net/AmazonWebServicesJapan/awswebinaraws-54198407

• AWS CodeCommit User Guide http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/welcome.html

• AWS CodePipeline User Guide http://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/welcome.html

• AWS CodePipeline API Reference http://docs.aws.amazon.com/ja_jp/codepipeline/latest/APIReference/Welcome.html

• AWS CodeDeploy User Guide http://docs.aws.amazon.com/ja_jp/codedeploy/latest/userguide/welcome.html

• AWS CodeDeploy Demo https://www.youtube.com/watch?v=jcR9iIWdU7E

Page 68: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

68

AWS Black Belt Tech Webinar 2015 AWSのサービスをディープにご紹介

• 今後の配信予定 デプロイ&プロビジョニング月間! – 10月28日(水) 18:00〜 AWS CodeCommit / AWS CodePipeline /

AWS CodeDeploy

– 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/

Page 70: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

70

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

@awscloud_jp

検索

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

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

Page 71: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

71

AWS初心者向けWebinar

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

• 申し込みサイト – http://aws.amazon.com/jp/about-aws/events/

Page 72: AWS CodeCommit AWS CodePipeline AWS CodeDeploy · PDF fileCloudFormation AWS Direct Dynamo DB Connect Amazon Cloud AWS Elastic Beanstalk GovCloud Amazon SWF WorkSpaces Amazon Route

72

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


Top Related