AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeDeploy

23,377 views

Published on

2015年10月28日に放送したAWS CodeCommit & AWS CodePipeline & AWS CodeDeployの回の資料です。今後の予定は以下をご覧ください。
http://aws.amazon.com/jp/about-aws/events/#webinar

Published in: Technology
0 Comments
43 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
23,377
On SlideShare
0
From Embeds
0
Number of Embeds
13,270
Actions
Shares
0
Downloads
97
Comments
0
Likes
43
Embeds 0
No embeds

No notes for slide

AWS Black Belt Tech シリーズ 2015 - AWS CodeCommit & AWS CodePipeline & AWS CodeDeploy

  1. 1. 1 AWS CodeCommit AWS CodePipeline AWS CodeDeploy AWS Black Belt Tech Webinar 2015 アマゾン データ サービス ジャパン株式会社 コンサルタント 佐藤聖規 2015/10/28
  2. 2. 2 サービスの頻繁なリリースは ビジネスの成功に欠かせない • ビジネスは常に変化する – Amazon.comはインターネット書店としてスタート – 現在はAWSやKindleなど創業当時とは違う多くのビジネスを手 がけている • 1発1中は難しい • 頻繁にリリースし、エンドユーザやビジネスの フィードバックを受けてサービスを育てていく。
  3. 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
  4. 4. 4 DevOpsとは? DevOps = ライフサイクルを高速化する効率の良さ 開発者 顧客 releasetestbuild plan monitor デリバリのパイプライン フィードバックループ ソフトウェア開発のライフサイクル
  5. 5. 5 AmazonにおけるDevOpsの物語
  6. 6. 6
  7. 7. 7 モノリシックな開発のライフサイクル 開発者 releasetestbuild デリバリパイプラインアプリ
  8. 8. 8 • Service-Oriented Architecture (SOA) • 単一の目的 • APIでのみ連携 • “Microservices”
  9. 9. 9 • Two-pizza teams • 全ての主導権 • 全ての責任 • 良くしようとする動機 • “DevOps”
  10. 10. 10 足りないツール 開発者 デリバリパイプラインサービス ???
  11. 11. 11 • セルフサービス • テクノロジに依らない • ベストプラクティス • サービスは単一の目的
  12. 12. 12 • デプロイサービス • ダウンタイム無し • ヘルスチェック • バージョニングした成 果物、ロールバック
  13. 13. 13 • 継続的デリバリ • コミットから本番環境 まで • 自動化されたアクショ ンと遷移 • >90%のチームが利用 Pipelines
  14. 14. 14 Microserviceの開発ライフサイクル 開発者 デリバリパイプラインサービス releasetestbuild releasetestbuild releasetestbuild releasetestbuild releasetestbuild releasetestbuild
  15. 15. 15 = 5000万回/年のデプロイ 数千のチーム × Microservice アーキテクチャ × 継続的デリバリ × 複数の環境
  16. 16. 16 デリバリパイプラインのセットアップ 1) ソフトウェアのデプロイを自動化 2) リリースプロセスを自動化 deploy deploy deploy deploy development test staging productio n release: source > build > test > staging > production
  17. 17. 17 デリバリパイプラインのセットアップ 0) ソフトウェアのバージョン管理 AWS CodeCommit 1) ソフトウェアのデプロイを自動化 AWS CodeDeploy 2) リリースプロセスを自動化 AWS CodePipeline
  18. 18. 18 AWS CodeCommit/AWS CodePipeline/AWS CodeDeployの位置づけ MonitorProvisionDeployTestBuildCode Elastic Beanstalk OpsWorks Cloud Watch Cloud Formation Code Deploy Code Commit Code Pipeline
  19. 19. 19 AWS CodeCommit
  20. 20. 20 バージョン管理システムとGit • ファイルの変更履歴を保管する – 誰が、いつ、どのような、変更を行なったか自動的に記録する – なぜ、はコメントとして残すことができる – 好きな状態に戻すことができる • ファイルの変更を保管しているデータベースを リポジトリと呼ぶ • 近年、分散バージョン管理システムであるGitが よく採用される。
  21. 21. 21 よくある課題 • 可用性・冗長性 – バージョン管理システムがダウンすると開発作業が進め られない • 耐久性 – リポジトリが消失するとソースコードの安定版が消失 • リポジトリサイズ – 開発が長期にわたるとリポジトリが大きくなり、ディス クサイズが足りなくなる • パフォーマンス – 開発規模が大きくなるとバージョン管理システム自体の パフォーマンスが劣化
  22. 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. 23 AWS CodeCommitの特徴 • AWSのフルマネージド – Git用のインスタンスを立ててGitを管理する必要がない – リポジトリのサイズは無制限。各ファイルは2GBまで • 普通のGitリポジトリとして使える – 既存のリポジトリからの移行が容易 • AWS KMSを使って保存データは暗号化される • アクセス権をIAMでコントロールできる – ssh公開鍵無しにAWS CLIと連携した認証も可能
  24. 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. 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. 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. 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
  28. 28. 28 Step 3: SSH公開鍵の登録と秘密鍵の設定 IAMユーザへのSSH公開鍵の登録 注意 iam:UploadSSHPublicKeyのポリシー設定が必要です。
  29. 29. 29 Step 3: SSH公開鍵の登録と秘密鍵の設定
  30. 30. 30 Step 3: SSH公開鍵の登録と秘密鍵の設定
  31. 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として指定
  32. 32. 32 コンソールでソースコードを閲覧 〜ファイルの一覧
  33. 33. 33 コンソールでソースコードを閲覧 〜ソースコードの表示
  34. 34. 34 コンソールでソースコードを閲覧 〜MarkDownのレンダリング
  35. 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が対象 • データ転送が無ければ対象外
  36. 36. 36 よくある課題をAWS CodeCommitで解決 • 可用性・冗長性 →AWSのマネージドサービスで可用性や冗長性を確保 • 耐久性 →データはS3に配置されるため高い耐久性を誇る • リポジトリサイズ →リポジトリサイズは無制限 • パフォーマンス →パフォーマンスはスケーラブル
  37. 37. 37 AWS CodePipeline
  38. 38. 38 デプロイメントパイプラインとは • ソースコードからビルドやテストなどのステージを自動 化したプロセス • プロセスは開発チームやサービスそれぞれで異なる • スムーズなデプロイメントには欠かせない ソースコード ビルド テスト ステージ デプロイ 本番 デプロイ UAT デプロイメントパイプライン
  39. 39. 39 よくある課題 • デプロイメントパイプラインの設定が複雑 – デプロイ職人が生まれてしまう。 • 標準化されないデプロイメントパイプライン – デプロイメントパイプラインを他プロジェクトで再現できない • デプロイメントパイプラインのバックアップ – 消失するとデプロイできなくなる
  40. 40. 40 AWS CodePipeline • カスタマイズ可能なワークフローエンジン • パートナーやカスタムのシステムと連携 • ビジュアルエディターと可視化されたステータス 継続的デリバリー、リリース自動化を、Amazonの様に Build 1) ビルド 2) Unitテスト 1) デプロイ 2) UIテスト Source Beta Production 1) デプロイ 2) 負荷テスト Gamma 1) カナリア デプロイ 2) リージョン1 デプロイ 3) リージョン2 デプロイ
  41. 41. 41 AWS CodePipelineの特徴 • AWSマネージドのワークフローコントローラ – Build/Test/Deployを組み合わせた複雑なワークフロー • AWSサービスやサードパーティとの連携が充実 – DeployとしてAWS CodeDeployやAWS Elastic Beanstalk – BuildやTestをJenkinsサーバと連携 • 見やすいUI – マネージメントコンソールで確認・操作ができる
  42. 42. 42 開発のスタイルにあったワークフローを自由に 例えば ソースコード ビルド ユニット テスト ステージ デプロイ 本番 デプロイ A機能画面 テスト CodePipeline ステージ デプロイ B機能画面 テスト
  43. 43. 43 開発のスタイルにあったワークフローを自由に
  44. 44. 44 AWS CodePipeline パートナー連携
  45. 45. 45 Custom Action 開発者が コミット CodePipeline S3 カスタムアクションリソース カスタムジョブワーカー カスタムビルドアクション 1. エージェントでポーリング 2. ジョブの詳細 4. ビルドの実行 3. ジョブのAck 5. ジョブの成功
  46. 46. 46 AWS CodePipelineの料金 • 1アクティブパイプライン毎に、$1/月 – アクティブパイプラインとは、その月に1度でもアクションを実 行したパイプライン • 無料利用枠 – 1パイプライン/月
  47. 47. 47 よくある課題をAWS CodePipelineで解決 • デプロイメントパイプラインの設定が複雑 →見やすいUIで設定できる。もちろんCLIでも。 • 標準化されないデプロイメントパイプライン →CodePipelineなら標準化も簡単 • デプロイメントパイプラインのバックアップ →マネージドサービスで消失の可能性は低い
  48. 48. 48 AWS CodeDeploy
  49. 49. 49 デプロイとは? • アプリケーションやア セットの更新をサーバ に反映させること • 実際には、更新された ファイル群を対象の サーバ群に配布する Availability Zone Availability Zone v2
  50. 50. 50 デプロイとビルド・プロビジョニングの違い • ビルド – ソースコードから配布すべ き成果物を生成する • プロビジョニング – サーバにソフトウェアをイ ンストール&設定 • オーケストレーション – DBやLBとのつなぎ込み • デプロイ – アセットの更新をサーバに 反映 ソース コード ビルド ex. mvn, bundle プロビジョニング ex. chef, puppet オーケスト レーション デプロイ Apache, Nginx Ruby, JDK Config, etc. WEB LB DB Amazon Linux
  51. 51. 51 よくあるデプロイ手法と課題 • Push型 – デプロイ元からデプロイ先へ – FTP, rsync, git pull – Capistrano, Fabric • 課題 – 自動化できていない • 人間がサーバにログインしてコマンドを手動で実行している – デプロイサーバの負荷、シングルポイント – 新規サーバ構築時にデプロイ対象がわからない – 複数人でデプロイがぶつからない様に管理するのが面倒
  52. 52. 52 デプロイの効率化・安定化 • 質の高いリリースのためには、必要不可欠 • 効率的で安定している仕組みがあるなら、それ を使わない手はない AWS CodeDeployが選択肢
  53. 53. 53 AWS CodeDeploy • 1台も数千台も同じやり方で • 開発環境もステージング環境もプロダクションも同じやり方で • ダウンタイム無くデプロイ • 中央でデプロイをコントロール・モニタリング Staging AWS CodeDeployv1, v2, v3 Production Dev 自動デプロイのコーディネートを、Amazonの様に Application revisions Deployment groups
  54. 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. 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. 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. 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. 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することをオススメ
  59. 59. 59 AWS CodeDeployでやること、やらないこと やること • ファイルをサーバに配る • hookスクリプトの実行 – アプリ再起動 – オーケストレーション • ELB付け外し等 • これらの実行を中央管理 – 進捗やエラーログが、ブラ ウザやAPIで確認可能 やらないこと • ビルド • プロビジョニング ※いずれもhookスクリプト で実行できなくはないが、 効率や安定性の面で オススメしない
  60. 60. 60 AWS CodeDeployとAuto Scaling Group(ASG) • スケールアウト時に最新のリビ ジョンが自動でデプロイされる – ASGのLifecycle Hookを利用 – 追加インスタンスのみにデプロイ • Deployment GroupにASGを指定 するだけで利用可能 デプロイに成功した最新の リビジョンが自動でデプロイ
  61. 61. 61 AWS CodeDeploy パートナー連携
  62. 62. 62 AWS CodeDeployの料金 • Amazon EC2へのデプロイは全て無料 – Amazon S3を使う場合は、S3の利用料 • オンプレミスインスタンスへのデプロイ – $0.02/インスタンス/デプロイ
  63. 63. 63 よくある課題をAWS CodeDeployで解決 • 自動化できていない →もちろん自動的にデプロイ • デプロイサーバの負荷、シングルポイント →マネージドサービスのためパフォーマンス、耐障害性も 気にしなくて良くなる • 新規サーバ構築時にデプロイ対象がわからない →CodeDeployなら、AutoScalingと連動し自動でデプロイ • 複数人でデプロイがぶつからない様に管理するのが面倒 →AWS CodeDeployで一元管理
  64. 64. 64 まとめ
  65. 65. 65 CodeCommit/CodePipeline/CodeDeploy リリース状況 • CodeCommit – 2015年7月にGA! – N. Virginia のみ • CodePipeline – 2015年7月にGA! – N. Virginia / Oregon • CodeDeploy – 2015年8月東京リージョンで利用可能に! 2015年10月28日現在
  66. 66. 66 質の高い開発のためには質の高いツールを • 質の高い開発を継続するには、ツールが重要 • ただし、ツールだけではなく同時にアーキテクチャ やプロセスと組織の整備も重要 AWS CodeCommit AWS CodePipeline AWS CodeDeployの利用をご検討ください
  67. 67. 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
  68. 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/
  69. 69. 69 Webinar資料の配置場所 • AWS クラウドサービス活用資料集 – http://aws.amazon.com/jp/aws-jp-introduction/
  70. 70. 70 公式Twitter/Facebook AWSの最新情報をお届けします @awscloud_jp 検索 最新技術情報、イベント情報、お役立ち情報、お得なキャンペーン情報などを 日々更新しています! もしくは http://on.fb.me/1vR8yWm
  71. 71. 71 AWS初心者向けWebinar • AWSをこれからご使用になる向けのソリュー ションカットのオンラインセミナー • 申し込みサイト – http://aws.amazon.com/jp/about-aws/events/
  72. 72. 72 ご参加ありがとうございました。

×