Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

20160720 aws development-tools-and_hybrid_cdp

793 views

Published on

7/20に開催されたJAWS-UG アーキテクチャ専門支部 ハイブリッド分科会 #7
コード3兄弟&RunCommandの最新アップデート紹介資料です。
(7/22のRunCommandアップデートも追加しました)

Published in: Technology

20160720 aws development-tools-and_hybrid_cdp

  1. 1. 1 JAWS-UG アーキテクチャ専⾨⽀部 ハイブリッド分科会 #7 AWS Development Tools 紹介 アマゾン ウェブ サービス ジャパン株式会社 テクニカルトレーナー ⼤村幸敬 2016/07/20(7/22追記)
  2. 2. 2 Caution • この資料はハイブリッドCDP検討のための ディスカッションペーパーです • 各サービス2015年10⽉時点の情報に 2016年7⽉22⽇時点までのアップデートを 加えて紹介しています
  3. 3. 3 Agenda • AWS Development & Operation Tools Updates – Code Commit / Code Deploy / Code Pipeline – Run Command
  4. 4. 4 AWS Development Tools ?
  5. 5. 5 DevOpsにおける開発サイクル DevOps = ライフサイクルを高速化する効率の良さ 開発者 顧客 releasetestbuild plan monitor デリバリのパイプライン フィードバックループ ソフトウェア開発のライフサイクル
  6. 6. 6 デリバリパイプラインのセットアップ 1) ソフトウェアのデプロイを⾃動化 2) リリースプロセスを⾃動化 deploy deploy deploy deploy development test staging production release: source > build > test > staging > production
  7. 7. 7 デリバリパイプラインのセットアップ 1) ソフトウェアのバージョン管理 AWS CodeCommit 2) ソフトウェアのデプロイを⾃動化 AWS CodeDeploy 3) リリースプロセスを⾃動化 AWS CodePipeline
  8. 8. 8 デプロイとビルド・プロビジョニングの違い • ビルド – ソースコードから配布すべ き成果物を⽣成する • プロビジョニング – サーバにソフトウェアをイ ンストール&設定 • オーケストレーション – DBやLBとのつなぎ込み • デプロイ – アセットの更新をサーバに 反映 ソース コード ビルド ex. mvn, bundle プロビジョニング ex. chef, puppet オーケスト レーション デプロイ Apache, Nginx Ruby, JDK Config, etc. WEB LB DB Amazon Linux
  9. 9. 9 AWS CodeCommit/AWS CodePipeline/ AWS CodeDeployの位置づけ MonitorProvisionDeployTestBuildCode Elastic Beanstalk OpsWorks Cloud Watch Cloud Formation Code Deploy Code Commit Code Pipeline
  10. 10. 10 AWS CodeCommit
  11. 11. 11 AWS CodeCommit • Availability Zoneを跨ぎデータを冗⻑化 • データは暗号化されて保存 • IAMとの統合 • リポジトリのサイズは無制限 git push AWS CodeCommit Gitのオブジェクトは Amazon S3 Gitのインデックスは Amazon DynamoDB 暗号化鍵は AWS KMS SSH or HTTPS 安全、スケーラブル、マネージドな、Gitソース管理
  12. 12. 12 AWS CodeCommitの特徴 • AWSのフルマネージド – Git⽤のインスタンスを⽴ててGitを管理する必要がない – リポジトリのサイズは無制限。各ファイルは2GBまで • 普通のGitリポジトリとして使える – 既存のリポジトリからの移⾏が容易 • AWS KMSを使って保存データは暗号化される • アクセス権をIAMでコントロールできる – ssh公開鍵無しにAWS CLIと連携した認証も可能
  13. 13. 13 よくある課題 • 可⽤性・冗⻑性 – バージョン管理システムがダウンすると開発作業が進め られない • 耐久性 – リポジトリが消失するとソースコードの安定版が消失 • リポジトリサイズ – 開発が⻑期にわたるとリポジトリが⼤きくなり、ディス クサイズが⾜りなくなる • パフォーマンス – 開発規模が⼤きくなるとバージョン管理システム⾃体の パフォーマンスが劣化
  14. 14. 14 よくある課題をAWS CodeCommitで解決 • 可⽤性・冗⻑性 →AWSのマネージドサービスで可⽤性や冗⻑性を確保 • 耐久性 →データはS3に配置されるため⾼い耐久性を誇る • リポジトリサイズ →リポジトリサイズは無制限 • パフォーマンス →パフォーマンスはスケーラブル
  15. 15. 15 新機能:AWS CodeCommitで通知機能が利⽤可能に – コードのプッシュ、ブランチ/タグ の作成や削除に対して起動するト リガーを設定可能に – トリガーによってSNSトピックの 送信やAWS Lambdaファンクショ ンを起動できる – トリガーの数はリポジトリあたり 最⼤10個まで
  16. 16. 16 CodeCommit Pros/Cons for Hybrid Env. • Pros – オンプレミス環境から利⽤可能 – プライベートリポジトリとして利⽤可能 • Cons – N.Virginiaのみ利⽤可能 – GitHubにあるような PullRequest 機能はない
  17. 17. 17 AWS CodePipeline
  18. 18. 18 デプロイメントパイプラインとは • ソースコードからビルドやテストなどのステージを⾃動 化したプロセス • プロセスは開発チームやサービスそれぞれで異なる • スムーズなデプロイメントには⽋かせない ソースコード ビルド テスト ステージ デプロイ 本番 デプロイ UAT デプロイメントパイプライン
  19. 19. 19 AWS CodePipeline • カスタマイズ可能なワークフローエンジン • パートナーやカスタムのシステムと連携 • ビジュアルエディターと可視化されたステータス 継続的デリバリー、リリース自動化を、Amazonの様に Build 1) ビルド 2) Unitテスト 1) デプロイ 2) UIテスト Source Beta Production 1) デプロイ 2) 負荷テスト Gamma 1) カナリア デプロイ 2) リージョン1 デプロイ 3) リージョン2 デプロイ
  20. 20. 20 よくある課題 • デプロイメントパイプラインの設定が複雑 – デプロイ職⼈が⽣まれてしまう。 • 標準化されないデプロイメントパイプライン – デプロイメントパイプラインを他プロジェクトで再現できない • デプロイメントパイプラインのバックアップ – 消失するとデプロイできなくなる
  21. 21. 21 よくある課題をAWS CodePipelineで解決 • デプロイメントパイプラインの設定が複雑 →⾒やすいUIで設定できる。もちろんCLIでも。 • 標準化されないデプロイメントパイプライン →CodePipelineなら標準化も簡単 • デプロイメントパイプラインのバックアップ →マネージドサービスで消失の可能性は低い
  22. 22. 22 Custom Actionによる他システム連携 開発者が コミット CodePipeline S3 カスタムアクションリソース カスタムジョブワーカー カスタムビルドアクション 1. エージェントでポーリング 2. ジョブの詳細 4. ビルドの実⾏ 3. ジョブのAck 5. ジョブの成功
  23. 23. 23 CodePipelineのLambda連携をサポート • Integrate AWS Lambda Functions into Pipelines – CodePipelineの ActionとしてLambda Functionを設定可能 – Lambda Functionの中で、テストの実施やサードパーティツー ルとの連携など汎⽤的な処理実施可能に
  24. 24. 24 AWS CodePipeline が AWS CodeCommitと連携 • AWS CodeCommit をソースプロバイダとして利⽤可能に • パイプラインのソース ステージで、CodeCommitのリポジト リやブランチを選択可能 • AWS CodeCommit と連携することで、セキュアでマネージ ドなDevOps環境を構築可能 https://aws.amazon.com/about-aws/whats-new/2016/04/aws-codepipeline-adds-integration-with-aws-codecommit/
  25. 25. 25 AWS CodePipeline が Failed Actionのリトライに対応 • 失敗した処理を再実⾏可能 http://docs.aws.amazon.com/ja_jp/codepipeline/latest/userguide/pipelines-actions-retry.html
  26. 26. 26 AWS CodePipeline が ⼿動承認に対応 • AWS Pipelineの各ステージに⼿動承認の機能を追加できるよ うになりました。これによりパイプラインが次の段階に進む 前に、適切なアクセスを持つユーザーがコード変更を承認す ることができます。 • パイプラインがアクティブ状態の場合、⼿動承認を設定する 段階に来ると実⾏が停⽌します。パイプラインが承認をリク エストしてから 7 ⽇以内に、AWS Identity and Access Management (IAM) のアクセスを持つユーザーがそのアク ションを承認した場合に限り、パイプラインの実⾏が再開し ます。 https://aws.amazon.com/jp/about-aws/whats-new/2016/07/aws-codepipeline-adds-manual-approval-actions/
  27. 27. 27 AWS CodePipeline Pros/Cons to Hybrid Env. • Pros – オンプレミス環境から利⽤可能 – オンプレミス環境上のテストサーバやデプロイ環境が利⽤可能 • Cons – N.Virginia, Oregon, Irelandのみ利⽤可能 – 5分以上を要する処理はテストサーバやテスト環境を別途⽤意する 必要がある(5分以内ならLambdaによる実⾏が可能)
  28. 28. 28 AWS CodeDeploy
  29. 29. 29 デプロイとは? • アプリケーションやア セットの更新をサーバ に反映させること • 実際には、更新された ファイル群を対象の サーバ群に配布する Availability Zone Availability Zone v2
  30. 30. 30 よくあるデプロイ⼿法と課題 • Push型 – デプロイ元からデプロイ先へ – FTP, rsync, git pull – Capistrano, Fabric • 課題 – ⾃動化できていない • ⼈間がサーバにログインしてコマンドを⼿動で実⾏している – デプロイサーバの負荷、シングルポイント – 新規サーバ構築時にデプロイ対象がわからない – 複数⼈でデプロイがぶつからない様に管理するのが⾯倒
  31. 31. 31 デプロイの効率化・安定化 • 質の⾼いリリースのためには、必要不可⽋ • 効率的で安定している仕組みがあるなら、それ を使わない⼿はない AWS CodeDeployが選択肢
  32. 32. 32 AWS CodeDeploy • 1台も数千台も同じやり⽅で • 開発環境もステージング環境もプロダクションも同じやり⽅で • ダウンタイム無くデプロイ • 中央でデプロイをコントロール・モニタリング Staging AWS CodeDeployv1, v2, v3 Production Dev 自動デプロイのコーディネートを、Amazonの様に Application revisions Deployment groups
  33. 33. 33 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
  34. 34. 34 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も作成可能
  35. 35. 35 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
  36. 36. 36 AWS CodeDeployでやること、やらないこと やること • ファイルをサーバに配る • hookスクリプトの実⾏ – アプリ再起動 – オーケストレーション • ELB付け外し等 • これらの実⾏を中央管理 – 進捗やエラーログが、ブラ ウザやAPIで確認可能 やらないこと • ビルド • プロビジョニング ※いずれもhookスクリプト で実⾏できなくはないが、 効率や安定性の⾯でオスス メしない
  37. 37. 37 AWS CodeDeployの料⾦ • Amazon EC2へのデプロイは全て無料 – Amazon S3を使う場合は、S3の利⽤料 • オンプレミスインスタンスへのデプロイ – $0.02/インスタンス/デプロイ
  38. 38. 38 よくある課題をAWS CodeDeployで解決 • ⾃動化できていない →もちろん⾃動的にデプロイ • デプロイサーバの負荷、シングルポイント →マネージドサービスのためパフォーマンス、耐障害 性も気にしなくて良くなる • 新規サーバ構築時にデプロイ対象がわからない →CodeDeployなら、AutoScalingと連動し⾃動でデプ ロイ • 複数⼈でデプロイがぶつからない様に管理するのが⾯倒 →AWS CodeDeployで⼀元管理
  39. 39. 39 AWS CodeDeployによるイベント通知 • イベント通知機能 – アプリケーションの展開プロセスの前、途中、あとにSNSに通知を送信するトリ ガーを作成することが可能 – トリガーは展開するインスタンス全体または、個別のインスタンスに対してセット することができ、成功か失敗のどちらの場合でも送信可能 • トリガーとなりうるイベント – DEPLOYMENT_START – DEPLOYMENT_SUCCESS – DEPLOYMENT_FAILURE – DEPLOYMENT_STOP INSTANCE_START – INSTANCE_SUCCESS INSTANCE_FAILURE
  40. 40. 40 AWS CodeDeploy Pros/Cons to Hybrid Env. • Pros – オンプレ環境へデプロイ可能 – 東京リージョンで利⽤可能 • Cons – オンプレミスインスタンスへのデプロイにはコストがかかる (EC2インスタンスは無料)
  41. 41. 41 追加:EC2 RunCommand
  42. 42. 42 • EC2 Run Command – インスタンスへのコマンド実⾏をエージェント経由で外部から実⾏す る機能 • ソフトウェアのインストール • 特定プロセスの再起動 • ログデータのアップロードなど – IAMポリシーとロールによりコマンド実⾏の可否を制御可能 – CloudTrailと連携し、Run Command経由の実⾏ログを取得可能 – コンソールやCLIを使⽤して定義済みコマンドや、カスタムコマンドを 実⾏可能 EC2 Run Commandが東京リージョンに!
  43. 43. 43 • EC2 Run CommandがAWS環境外の仮想マシンに対応しました。 オンプレミスとAWS両⽅にまたがるハイブリッド環境であっても、双⽅の インスタンスへスクリプト実⾏の指⽰を出すことができます。 EC2 Run Commandがオンプレミス環境のリモート操 作に対応 https://aws.amazon.com/about-aws/whats-new/2016/06/amazon-ec2-run-command-now-supports-hybrid-and-cross- cloud-management/
  44. 44. 44 • Run Commandの実⾏状態の変化をインスタンスあるいはフリート単位で モニタリングし、リアルタイムで通知を受けることができます。これらの 通知はEC2 Run Command あるいは CloudWatch Eventsでサポートさ れています。 EC2 Run Commandがイベントドリブンの通知をサ ポート https://aws.amazon.com/jp/about-aws/whats-new/2016/07/amazon-ec2-run-command-now-supports-event-driven- notifications/
  45. 45. 45 参考資料 • AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeDeploy http://www.slideshare.net/AmazonWebServicesJapan/aws-black-belt-tech-2015-aws-codecommit-aws-codepipeline-aws- codedeploy • 【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

×