Contenu connexe
Similaire à AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeDeploy (20)
Plus de Amazon Web Services Japan (20)
AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeDeploy
- 3. 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
201
3
201
2
201
4
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
- 22. 22
AWS CodeCommit
• Availability Zoneを跨ぎデータを冗長化
• データは暗号化されて保存
• IAMとの統合
• リポジトリのサイズは無制限
git push AWS CodeCommit
Gitのオブジェクトは
Amazon S3
Gitのインデックスは
Amazon DynamoDB
暗号化鍵は
AWS KMS
SSH or HTTPS
安全、スケーラブル、マネージドな、Gitソース管理
- 23. 23
AWS CodeCommitの特徴
• AWSのフルマネージド
– Git用のインスタンスを立ててGitを管理する必要がない
– リポジトリのサイズは無制限。各ファイルは2GBまで
• 普通のGitリポジトリとして使える
– 既存のリポジトリからの移行が容易
• AWS KMSを使って保存データは暗号化される
• アクセス権をIAMでコントロールできる
– ssh公開鍵無しにAWS CLIと連携した認証も可能
- 24. 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/settin
g-up-https-unixes.html
• 手順Windows
– http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/settin
g-up-https-windows.html
- 25. 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分で接続できなくなるので注意
- 26. 26
Step 3: Credential Helperのインストール
Windowsでのサンプル
cd %PROGRAMFILES(X86)%AWS ToolsCodeCommit
git-credential-AWSS4.exe -p default
Credential Helperの設定
%HOME%/.gitconfigの中身
[credential]
helper = !'C:Usersuser-nameAppDataRoamingGitCredStoregit-credential-AWSSV4.exe' --profile=CodeCommitProfile
UseHttpPath = true
- 27. 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/settin
g-up-ssh-unixes.html
• 手順Windows
– http://docs.aws.amazon.com/ja_jp/codecommit/latest/userguide/settin
g-up-ssh-windows.html
- 31. 31
Step 3: SSH公開鍵の登録と秘密鍵の設定
Host git-codecommit.*.amazonaws.com
User APKAEIBAERJR2*******
IdentityFile ~/.ssh/codecommit_rsa
~/.ssh/configファイルに以下を追記
UserにはSSH Key IDを指定
git clone ssh://Your-SSH-Key-ID@git-codecommit.us-east-1.amazonaws.com/v1/repos/MyDemoRepo my-demo-
repo
WindowsではユーザIDをSSH Key IDとして指定
- 35. 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が対象
• データ転送が無ければ対象外
- 40. 40
AWS CodePipeline
• カスタマイズ可能なワークフローエンジン
• パートナーやカスタムのシステムと連携
• ビジュアルエディターと可視化されたステータス
継続的デリバリー、リリース自動化を、Amazonの様に
Build
1) ビルド
2) Unitテスト
1) デプロイ
2) UIテスト
Source Beta Production
1) デプロイ
2) 負荷テスト
Gamma
1) カナリア デプロイ
2) リージョン1 デプロイ
3) リージョン2 デプロイ
- 51. 51
よくあるデプロイ手法と課題
• Push型 – デプロイ元からデプロイ先へ
– FTP, rsync, git pull
– Capistrano, Fabric
• 課題
– 自動化できていない
• 人間がサーバにログインしてコマンドを手動で実行している
– デプロイサーバの負荷、シングルポイント
– 新規サーバ構築時にデプロイ対象がわからない
– 複数人でデプロイがぶつからない様に管理するのが面倒
- 53. 53
AWS CodeDeploy
• 1台も数千台も同じやり方で
• 開発環境もステージング環境もプロダクションも同じやり方で
• ダウンタイム無くデプロイ
• 中央でデプロイをコントロール・モニタリング
Staging
AWS CodeDeployv1, v2, v3
Production
Dev
自動デプロイのコーディネートを、Amazonの様に
Application
revisions
Deployment groups
- 54. 54
AWS CodeDeploy概要
• デプロイに特化したサービス
– 指定したグループに、指定したファイ
ルを、指定した割合ずつ
– TagやAuto Scaling Groupでグループ
指定
• エージェントを入れれば利用可能
– Pull型のデプロイ、EC2以外でも
– Linux & Windows対応
• 関連する処理をフックで実行可能
– アプリ再起動なども自動化できる
Staging Production
Dev
Deployment groups
Agent Agent
Agent
Agent
Agent
Agent
Agent
AWS CodeDeployv1, v2, v3
- 55. 55
AWS CodeDeployの動作
1. 配布物をアップロード
– Amazon S3 / GitHub
2. デプロイを指示
– 配布物ダウンロード
– files: 所定の場所に配置
– hooks: 任意の処理実行
Deployment
group
Agent
Agent Agent
…
or
Amazon
S3
Application
1. Upload
files
hook
s
/dst
2. Deploy
Downloa
d
Polling
- 56. 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も作成可能
- 57. 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
- 58. 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することをオススメ
- 60. 60
AWS CodeDeployとAuto Scaling Group(ASG)
• スケールアウト時に最新のリビ
ジョンが自動でデプロイされる
– ASGのLifecycle Hookを利用
– 追加インスタンスのみにデプロイ
• Deployment GroupにASGを指定
するだけで利用可能 デプロイに成功した最新の
リビジョンが自動でデプロイ
- 68. 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/