【レポート】AWS Summit Tokyo 2017:C# 開発者必見、Docker コンテナへの継続的デプロイメント on AWS ~CodeCommit, CodeBuild, CodePipeline, CloudFormation, ECR, ECS を活用した CI/CD ~ #AWSSummit
2017年05月30日(火)〜2017年06月02日(金)の計4日間に渡り、グランドプリンスホテル新高輪 品川プリンスホテル アネックスタワーで行われている『AWS Summit Tokyo 2017』。
当エントリでは2017年05月31日に行われた『C# 開発者必見、Docker コンテナへの継続的デプロイメント on AWS ~CodeCommit, CodeBuild, CodePipeline, CloudFormation, ECR, ECS を活用した CI/CD ~』に関する内容をレポートしたいと思います。
- Dev Day Tokyo 2017 セッション資料・動画一覧 | AWS
- 関連資料(PDF):ダウンロード
- 関連動画(YouTube):
セッション概要
当セッションの登壇者及び概要は以下の通りです。
福井 厚
アマゾン ウェブ サービス ジャパン株式会社
技術統括本部 ソリューションアーキテクト
セッション概要:
このセッションでは、AWS 環境において Docker コンテナで動作する ASP.NET Core Web アプリケーションを例として、Amazon ECS と Code シリーズを利用した継続的インテグレーション/継続的デリバリーを実現する方法をご紹介します。.NET 開発経験者の方や、これから AWS へ移行することを検討されている開発チームの リーダー、マネージャーの方を対象としています。
セッションレポート
エンタープライズを取り巻く環境、課題
- 大型株銘柄の企業の平均寿命15年
- 2/3以上のIT予算は現在の運用を維持するために使われている
- セキュリティリスクの増加
- 限られたリソース
- アジリティの欠如
- 十分なセキュリティ、コンプライアンス、可用性が実現できていない
課題解決のために必要とされる事
企業としての差別化にフォーカス
- コアミッションにフォーカスする
- インフラストラクチャなど、企業価値に直接寄与しない領域にかけるコストを最小化する
スタートアップのようなスピードで革新する
- ソフトウェア開発のアジリティを高める
- ソフトウェアの作成と配布が簡単かつ高速になっている
- 資金調達せずに中小企業が大企業に対抗できる状況
- ソフトウェアの頻繁なアップデートが重要
リスクを低減する
- ビジネスのスピードとセキュリティの両方が必要
- ビジネスのアプリケーションもサービス志向に変わってきている
- 複雑でモノシリックなシステムに対するメンテナンスの限界
- 機能要求に対するリリース期間の短縮が命題
- 業務システムのSPAの導入も進んでいる
- API化、マイクロサービス化
なぜ継続的デプロイメントなのか?
- ソフトウェアリリースプロセスの自動化
- 開発者の生産性を改善
- バグを検出して対処
- アップデートの配信を高速化
C#と.NET Core
.NET Coreの特徴
- クロスプラットフォーム
- Linux上のDockerコンテナでも動作可能
- 高速(JITコンパイラ)
- 軽量
- .NET Coreの便利なライブラリ
- .NET Standard Library
- ASP.NET Core MVC
- ASP.NET Core Web API
- Entiry Framework
- .NET FrameworkはWindowsのみで動作。Coreはクロスプラットフォーム
AWSと.NET Core
- EC2 Windows
- EC2 Linux
- ECS
- Lambda
Dockerコンテナの活用
- デプロイメントの課題
- 開発環境の構成メンテナンスが必要、開発、テスト、本番で環境に差異がある
- Dockerを取り入れた場合
- 環境に差異がない
- コードに集中できる
コンテナと共にCI/CDを実現するAWSサービス
- CodePipeline
- CodeDeploy
- CodeCommit
- CodeBuild
- CodeStarは上記のサービスを束ねて使える
- CodeStar以外は全て東京リージョンで利用可能
- Codeシリーズ以外
- CloudFormation
- ECS
- コンテナ管理をあらゆるスケールで
- 柔軟なコンテナの配置
- AWSの基盤との連携
- ECR
- フルマネージドのDockerレジストリサービス
ASP.NET Coreアプリの継続的デプロイメント on AWS
- ECSを使った継続的デプロイメントのリファレンスアーキテクチャがGithubで公開されている
- これをASP.NET版にモディファイしたものを紹介
- 継続的デプロイメントの流れ
- CodeCommitにPUSH
- CodePipelineが変更を検知してパイプラインを開始
- CodeBuildでDcokerイメージをビルド&ECRへPUSH
- CloudFormationでデプロイ(ECSのサービスを作成・更新)
- CodeCommitはHTTPS接続がサポートされている。IDEから簡単に接続可能
感想
Docker(ECS)とCodeシリーズをフル活用したCI/CD環境、使いこなせばソフトウェア開発の生産性が大きく向上する可能性を感じました。また福井さんのC#への愛着が随所に感じられたのものよかったです。(私自身はC#は触れた事がなかったのですが、、俄然興味が湧いてきました。)
セッションでは実際のCloudFormationはテンプレートの書き方等についても紹介されていました。気になる方は後日公開されるセッション資料を参照いただくのが良いかと思います。