昨年の秋のAWS re:Inventで我々はAWS CodePipelineをアナウンスしました(私のコード管理とデプロイのための新しいAWSツールという投稿に詳細があります)。その時にお伝えした様に、このツールはみなさんのソフトウェアのリリースプロセスをモデル化し自動化することをお手伝いします。CodePipelineでの自動化はリリースプロセスをより安定して効率よいものにするためにデザインされています。
今から利用可能です
CodePipelineが利用可能となり今日から使い始めて頂けることをアナウンスできて私はとても興奮しています。
詳細な話に入る前に、少しだけそのバックグラウンドについて共有したいと思います。
インサイドAmazon: Pipelines
AWS CodeDeployがApolloとして知られるAmazonの内部ツールから着想を得た様に(より詳しくはApolloの話 - Amazonのデプロイエンジンをお読み下さい)、CodePipelineもAmazonの内部ツールを祖先に持ちます。
我々は一度コードがチェックインされてから本番環境にデプロイされるまでに時間を計測した後で、独自の継続的デリバリーサービスを開発しました。その時間はものすごく長く、我々の開発チームが開発した機能がお客様の手に出来る限り速く届くと感じられるように挑戦するだけに十分な量でした。
更なる調査により、ほとんどの時間が実際のビルドやテストやデプロイの時間に使われていないということがわかりました。その代わりに、手動のチケット駆動のチーム間の連携が深刻に邪魔をしているということがわかりました。待ち行列にチケットが入ると誰かがそれに気づくまで待って、ビルドとテストの結果はレビューされるまで放置され、それらを動かすために人間から人間への通知が送られる必要がありました。
Amazon自体がフルフィルメントセンターでは自動化に集中していてロボットを利用して有形の商品の流れを加速されているのに、我々がソフトウェアのデリバリープロセスにおいて無形のビットを動かすために手動の人間駆動のプロセスに依存していてるのはある意味皮肉的なものでした。
その速度を上げるために、我々はPipelinesとして知られる内部システムを開発しました。このシステムによってチームはリリースプロセスの全ての部分を繋げることができるようになりました。これには、ソースコード管理、ビルド、デプロイに本番直前の環境でのテスト、そして本番へのデプロイが含まれました。言うまでもなく、このツールによってコードの変更が本番環境に到達するまでの時間を劇的に削減しました。
より速いデリバリーがこの仕事の主たる目的でしたが、それ以外にもいくつかの利点があるということを目の当たりにしました。全てのコードの変更が同じクオリティのプロセスを通ることで、チームはより早く問題を捉えることができ、より高い質のリリースを生み出すことができ、結果として悪いコードが本番にデプロイされたがためにロールバックしなければならない回数を減少させることができました。
今ではPipelinesはAmazonのいたるところで使われています。チームは主たるダッシュボードとして利用しており彼らのソフトウェアリリースの監視と管理に使われています。
本日のCodePipelineのローンチにより、皆さんも我々の開発者と同じ力にアクセスすることができます!
CodePipelineの全て
CodePipelineはソフトウェアの継続的デリバリーサービスです。皆さんのソフトウェアをリリースするために必要なステップをモデル化し可視化し自動化することができます。コードがチェックインからビルドされテストされ、そしてデプロイされるまでの全てのステップを定義し完全にカスタマイズすることができます。
皆さんの組織は、多くの他の組織と同じ様に、ビルドプロセスの一部として多様な(オープンソースやその他の)ツールをおそらく利用していると思います。組み込みの連携により、我々のパートナーから利用可能なものに加え、この新しく高度に自動化されたワークフロー駆動の世界に既存のツールも組み込むことができます。ご自身のソース管理やビルド、テスト、デプロイのツールとCodePipelineは、新しいカスタムアクションAPIによって繋げることもできます。
リリースプロセスは自動化することでより速くより一貫性のあるものになるでしょう。その結果、小さな変更をずっと頻繁に本番環境に適応することができるでしょう。CodePipelineのダッシュボードを使ってリリースパイプラインを流れる様にして、変更を可視化し管理することが可能になるでしょう。
クイックツアー
短いCodePipelineのツアーをしてみましょう。バージョン付きのS3バケットとサンプルアプリケーションをリリースするのにAWS CodeDeployを使った単純な2ステージのパイプラインを作ります。
まず新しいバケット(jbarr-code)を作りバージョニングを有効にします:
コードをデプロイする場所が必要なので、CodeDeployのコンソールを開きサンプルデプロイを利用します。これによって3つのEC2インスタンスが1つのDeployment Groupに起動します:
続いてCodePipelineのコンソールを開きDeployment Walkthrough Wizardを使ってデプロイリソースを作成します。このPipelineをDeployMyCodeと呼ぶことにします:
ここでCodePipelineにコードをどこで見つけたらいいかを教えます。Source ProviderとしてS3バケットとオブジェクトの名前(このオブジェクトはデプロイしたいコードを含んでいます)を参照します。
Source ProviderとしてGitHubのレポジトリを代わりに使うこともできます。
次のステップではBuild Providerを指定することでコードをどのようにビルドしたらよいかを伝えます。今回はコードはスクリプトでありそのままで実行可能なので、ビルドをする必要はありません。
Build ProviderとしてJenkinsを使うこともできます。
(パイプラインを走らせた時に)コードをビルドしないので、次のステップはデプロイ前のテストのためにデプロイすることです。数分前にセットアップしたCodeDeployの設定(ターゲットのEC2インスタンスを含む)を使います:
CodePipelineに自分のアカウントのAWSリソースを使う権限を与えるために、IAMロールを作成します:
このステップが終わったら、選択肢を確認してパイプラインを作成することができます:
パイプラインはすぐに走り始めます:
特定のステージの設定についてより詳しく見るときには、”i”にカーソルを載せることができます:
コードを変更して新しいバージョンを(今回は)S3にアップロードすると、CodePipelineはその変更を検出し自動的にパイプラインを走らせます。Release changeボタンをクリックすることで同じことができます。
ステージの間でパイプラインを停止する必要があったら、クリックすれば(説明をつけて)できます。
後でクリックすれば再度有効化できます!
パイプラインの編集も可能です。既存のステージを変更したり、新しいステージを最後に追加したりパイプラインの途中に挿入することができます:
例えば、テストステップを追加することができ、(もしテストが成功したら)本番環境にデプロイします。もしテストステップを足すときにはTest Providerを選び接続する必要があります。
接続のステップではProviderのWebサイトが使われます:
今まで説明してきた全てのアクションは(それ以外も)AWS Command Line Interface(CLI)を使っても実施することができます。
CodePipeline連携
先ほど言及した様に、CodePipelineは既存のソース管理やビルド、テスト、そしてデプロイツールを使うことができます。こちらが今までの所私が知っているものです(もし何か見落としていたらコメントを下さい、この投稿を更新します)
ソース管理
- Amazon Simple Storage Service (S3) - S3バケットからの変更をリリースのソースとしてパイプラインに接続
- GitHub - パブリック又はプライベートなレポジトリからの変更をリリースのソースとして接続
ビルド&継続的インテグレーション
- Jenkins - クラウドやオンプレミスでホストされているJenkinsサーバ上でビルドを実行
- CloudBees - CloudBeesのJenkinsプラットフォーム上でビルドとテストのCIを実行
テスト
- Apica - Apicaの負荷試験サービスで、高負荷な負荷試験を実行
- BlazeMeter - BlazeMeterのサービスで、高負荷な負荷試験を実行
- Ghost Inspector - Ghost Inspectorのサービスで、UIの自動化テストを実行
- Runscope - Runscopeのサービスで、APIのテストを実行
デプロイ
- AWS CodeDeploy - Amazon Elastic Compute Cloud (EC2)やその他のサーバにCodeDeployを使ってデプロイ
- AWS Elastic Beanstalk - Elastic Beanstalkのアプリケーションコンテナにデプロイ
- Xebia Labs - XLデプロイで宣言的に自動化され事前に作られた計画通りにデプロイ
今から利用可能です
CodePipelineは今から利用可能であり今日からUS East (Northern Virginia)リージョンで使い始められます。また他のリージョンへの拡張も(いつもどおり)時間をかけて行っていく計画です。
アクティブなパイプライン毎に毎月$1が課金されます(最初に1つはAWS無料枠として課金されずに利用可能です)。アクティブなパイプラインとは1ヶ月の間に少なくとも1度のコードの変更が流れたものになります。
-- Jeff; (翻訳: SA岩永)
原文: https://aws.amazon.com/blogs/aws/now-available-aws-codepipeline/