More Related Content Similar to 20170809 AWS code series (20) More from Atsushi Fukui (10) 20170809 AWS code series1. @JAWS UG Osaka
Developer Tools
AWS Code Services
アマゾン ウェブ サービス ジャパン株式会社
ソリューション アーキテクト 福井 厚
2017.08.09
© 2017, Amazon Web Services, Inc. or its affiliates. All rights reserved.
2. ⾃⼰紹介
v 名前
v 福井 厚(ふくい あつし)fatsushi@
v 所属
v アマゾン ウェブ サービス ジャパン株式会社
v 技術統括本部レディネスソリューション部
v ソリューション アーキテクト(Dev&Opsスペシャリスト)
v 前職
v エンタープライズ アプリケーション開発コンサルタント
v 好きなAWSサービス
v AWS Code シリーズ、Mobile Hub、AWS IoT、Lambda(C#)
6. • 他のシステムと
の統合テスト
• ロードテスト
• UIテスト
• 侵⼊テスト
リリースプロセスの4つの主なフェーズ
ソース ビルド テスト 運⽤
• ソースコードを
チェックイン
• バージョン管理、
ブランチ管理
• 新しいコードの
ピアレビュー
• Java、C#などの
コードのコンパイル
• ユニットテスト
• スタイルチェッカー
• コードメトリック
• コンテナイメージの
作成
• 本番環境に
デプロイ
13. Source Build Test Production
Third Party
Tooling
ソフトウェア リリース フェーズ
AWS Code シリーズ
AWS CodeBuild
15. Source Build Test Production
EC2 On-Prem
AWS CodeDeploy
ソフトウェア リリース フェーズ
AWS Code シリーズ
17. Source Build Test Production
Third Party
Tooling
AWS CodeCommit AWS CodeBuild AWS CodeDeploy
AWS CodePipeline
ソフトウェア リリース フェーズ
AWS Code シリーズ
AWS CodeBuild
20. v AWSによるフルマネージドなサービス
v ⾼可⽤性、耐久性及びハードウェア、ソフトウェアを管理する
負荷の削減
v セキュアにコードを管理
v AWS CodeCommitは送信時及び保存時に暗号化
v 容易にスケール
v 多数のファイルやブランチ、履歴を保持可能
v どのようなファイルも保存可能
v 保存できるファイルのサイズやタイプに制限はない
v 他のAWSサービスやサードパーティーと連携可能
v IAM Roleによる他のサービスとの連携が容易
v 他のリモードレポジトリからの移⾏が容易
v 他のGitベース リポジトリからシンプルに移⾏可能
v 既存のGitツールが利⽤可能
AWS CodeCommit
22. リポジトリの作成
22
$ aws codecommit create-repository --repository-name MyDemoRepo ¥
--repository-description "My demonstration repository"
AWS CLIで実行
29. HTTPS接続とGit 認証の⼿順
1. AWS CodeCommit にアクセスするIAM Userを作成
2. IAMに静的なユーザー名とパスワードを⽣成
3. ⽣成した認証情報を Git のユーザー名、パスワード認証で利⽤
v AWS CodeCommit はGit version 1.7.9以上をサポート
v AWS CodeCommit は Curl 7.33 以上が必要
curl update 7.41.0 をHTTPSで利⽤する場合は既知の障害があり
以下を参照:
http://docs.aws.amazon.com/codecommit/latest/userguide/tr
oubleshooting.html
29
41. CodeCommit の価格
41
最初の5 アクティブ ユーザー 最初の5以上のアクティブ ユーザー(一
人当たり)
無料 1ドル/月
• 無制限のリポジトリ数
• 月に50GBのストレージ
• 10,000 Git リクエスト/月
• 無制限のリポジトリ数
• 月に10GBのストレージ/ユーザー
• 2,000 Git リクエスト/月/ユーザー
上記の制限を超えた場合
• $0.06 / GB / 月
• $0.001 / Git リクエスト
42. Build & test your
application
https://secure.flickr.com/photos/spenceyc/7481166880
44. AWS CodeBuild のコンセプト
1. CodeBuild にビルド プロジェクトを
作成
2. AWS CodeBuild はビルド プロジェ
クトに基づいてビルド環境を構築
3. AWS CodeBuildはソースコードをダ
ウンロード
4. ビルドのアウトプットをS3へアップ
ロード
5. ビルド実⾏中、AWS CodeBuild と
AWS CloudWatch Logs に情報を送
信
6. ビルド実⾏中、AWS CodeBuild コン
ソール、AWS CLI、AWS SDK、
AWS APIでビルド情報を取得
44
50. version: 0.1
environment_variables:
plaintext:
JAVA_HOME: "/usr/lib/jvm/java-8-openjdk-amd64"
phases:
install:
commands:
- apt-get update -y
- apt-get install -y maven
pre_build:
commands:
- echo Nothing to do in the pre_build phase...
build:
commands:
- echo Build started on `date`
- mvn install
post_build:
commands:
- echo Build completed on `date`
artifacts:
type: zip
files:
- target/messageUtil-1.0.jar
discard-paths: yes
buildspec.yml Example
• ビルドの各フェーズで利用される環
境変数
• 各フェースで実行するコマンドの指
定
• “insutall”では環境を準備するため
のパッケージのインストールやコマ
ンドの実行など
• ”pre build“では構文チェックやコマ
ンドの実行など
• “build”ではビルドツールやコマンド
の実行など
• “post build”ではテスト実行やレポ
ジトリへのコンテナイメージの配布
• アーティファクトを作成しS3に保存
52. 価格
• 分単位の課⾦
• メモリとCPUリソースの量によって3つの異なるタイプ
を選択
• build.general1.smallで100分/⽉の無料枠
Compute instance type Memory (GB) vCPU Price per build minute ($)
build.general1.small 3 2 0.005
build.general1.medium 7 4 0.010
build.general1.large 15 8 0.020
*As of January 20 2017
54. v ⾃動化されたデプロイメント
v 開発、テスト、本番環境への完全に⾃動化されたデプロイ
メント。AWS CodeDeployは数千台の環境にスケール可能
v 最⼩のダウンタイム
v In-place デプロイメントではAmazon EC2インスタンスに
対してローリング アップデートが可能
v Blue/Green デプロイメントでは最新のリビジョンをイン
スタンスにデプロイしてトラフィックを即時またはテスト
完了後すぐに新しい環境にリルート
v 停⽌とロールバック
v ⾃動的またはマニュアルで停⽌とロールバックが可能
v センターコントロール
v AWS CodeDeployコンソール及びAWS CLIでステータス
のトラックが可能
v 容易な適⽤
AWS CodeDeploy
59. Application – デプロイに対する⼀意の名前
v フォルダ構成
– appspec.yml (必須)
– ビルド済の成果物
– その他配布物
– hookスクリプト
v アップロード
– Amazon S3のObject
– 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. AppSpec File – デプロイの⼿順書
vfiles
– どのファイルをどこに配
置するか指定
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
v hooks
– 以下の⻩⾊のEventで実⾏
する処理を指定
61. appspec.yml の例
version: 0.0
os: linux
files:
- source: /
destination: /var/www/html
permissions:
- object: /var/www/html
pattern: “*.html”
owner: root
group: root
mode: 755
hooks:
ApplicationStop:
- location: scripts/deregister_from_elb.sh
BeforeInstall:
- location: scripts/install_dependencies.sh
ApplicationStart:
- location: scripts/start_httpd.sh
ValidateService:
- location: scripts/test_site.sh
- location: scripts/register_with_elb.sh
• ELBへのインスタンスの追加と
削除
• 依存パッケージのインストール
• Apacheの起動
• デプロイの成功を確認
• 他にも!
• アプリケーションファイルと
設定ファイルをそれぞれの
ディレクトリに送信
• 特定のディレクトリとファイル
のアクセス許可を設定
62. AWS CodeDeploy Agent
v デプロイ対象となるインスタンスで実⾏
v サポートするOS
– Amazon Linux 2017.03.x, 2016.09.0, 2016.03.1, 2016.03.0,
2015.03, 2014.09.1
– Ubuntu Server 16.04 LTS and 14.04 LTS
– Microsoft Windows Server 2016, 2012 R2, and 2008 R2
– Red Hat Enterprise Linux (RHEL) 7.x
v Open Sourceとして必要に応じて他の環境にも適⽤可能
– https://github.com/aws/aws-codedeploy-agent
62
63. v2 v1 v1 v1 v1 v1 v1 v1
v2 v2 v1 v1 v1 v1 v1 v1
v2 v2 v2 v2 v1 v1 v1 v1
v2 v2 v2 v2 v2 v2 v2 v2
One-at-a-time
Min. healthy hosts = 99%
[Custom]
Min. healthy hosts = 75%
Half-at-a-time
Min. healthy hosts = 50%
All-at-once
Min. healthy hosts = 0
デプロイメント構成
65. AWS CodeDeployとAuto Scaling Group(ASG)
• スケールアウト時に最新のリビ
ジョンが⾃動でデプロイされる
– ASGのLifecycle Hookを利⽤
– 追加インスタンスのみにデプロイ
• Deployment GroupにASGを指定
するだけで利⽤可能 デプロイに成功した最新の
リビジョンが⾃動でデプロイ
71. v リリース プロセスを⾃動化
v ソースリポジトリからビルド、テスト、デプロイメントまで完
全に⾃動化されたリリース プロセス
v ⼀環したリリース プロセスを確⽴
v コードの変更に対して⼀貫した実⾏ステップのセットを定義
v 改善された品質でデリバリをスピードアップ
v リリース プロセスを⾃動化し、インクリメンタルな機能追加を
可能について顧客に素早くリリース
v お気に⼊りのツールを利⽤可能
v 既存のソース、ビルド、デプロイメントのツールをパイプラン
に組み込み
v 進捗状況が⼀⽬瞭然
v リアルタイムにパイプラインのステータスをレビュー可能
AWS CodePipeline
78. AWS サービス統合
ソース ビルド ロジック実行 デプロイ
AWS Elastic Beanstalk
Amazon S3
AWS CodeDeployAWS Lambda
AWS CodeCommit
AWS OpsWorks
AWS CloudFormation
AWS CodeBuild
*2017/6/28現在、東京リージョンでは
利用できません
80. AWS Lambda ファンクションの実⾏
v AWS CodePipelineのアクションとしてLambdaを追加可能
v Lamdbaファンクションの利⽤例
– AWS CloudFormation テンプレートの適⽤やアップデートによる環境変更の展開
– 実⾏時に1つのステージでCloudFormationを利⽤してリソースを作成し、別のス
テージで削除
– LambdaファンクションでCNAMEをスワップすることでゼロ ダウンタイム バージョ
ンアップをElasticBeanstalkで実⾏
– Amazon ECSへDockerインスタンスをデプロイ
– AMIスナップショットを作成することで構築、デプロイする前にリソースのバック
アップを作成
– IRCクライアントにメッセージをポストするなど、サードパーティーの製品と統合
80
81. Approval アクションの管理
v パイプラインに承認アクションを追加可能
v SNSトピックを指定
v 承認アクションの例
– リビジョンが次のステージに進む前にコードレビュや変更管理レ
ビューを依頼
– ⼿動の品質管理テストを最新バージョンのアプリケーションに実施
を依頼
– リリース前にビルドされた成果物の統合確認を依頼
– 会社のWebサイトに発⾏する前に、新規や更新されたテキストのレ
ビューを依頼
81
87. セットアップ内容
✤ サンプルアプリケーション
✤ EC2 or Beanstalk or Lambda
✤ CodeCommitリポジトリ
✤ CodeBuildビルドプロジェクト
✤ デプロイツール
✤ CodeDeploy or Beanstalk or CloudFormation
✤ CodePipeline 継続的デプロイメントパイプライン
✤ CloudWatchメトリクス
✤ プロジェクトダッシュボード
93. まとめ
v AWS CodeCommit はプライベートで無制限のリポジトリを容易
に構築可能
v AWS CodeBuild はフルマネージドなビルド環境を提供
v AWS CodeDeploy は最⼩限のダウンタイムでデプロイの⾃動化が
可能
v AWS CodePipeline によってリリース プロセス全体を⼀貫したや
り⽅で完全に⾃動化
v AWS CodeStar でCI/CD環境を素早く構築し、ダッシュボードで
⼀元管理が可能
v これらを活⽤することで⾼品質なソフトウェアをインクリメンタル
な開発⼿法で素早くリリース!
93