.NET アプリを改善して実践する CI
Encourage Your Cloud Native Architecture
Copyright © Alterbooth Inc. All Rights Reserved.
Copyright © Alterbooth Inc. All Rights Reserved.
松村 優大 (Yuta Matsumura)
Chief Technical Architect (C#, PHP, Cloud)
KOSMISCH 開発リーダー
Microsoft MVP (Development Technologies)
Currently working for
これから話すこと
アプリケーション開発サイクルで行う
定型作業の効率化を実現する CI/CD について
DevOps を実践するための第一歩として、定型作業の自動化に
ついて C# アプリでの方法を紹介します。
※他の言語でも CLI があればそこまで変わらないはずです
Copyright © Alterbooth Inc. All Rights Reserved.
一般的なアプリケーション開発工程
要件定義 設計 開発 テスト リリース
Copyright © Alterbooth Inc. All Rights Reserved.
CI/CD でカバーできる範囲
要件定義 設計 開発 テスト リリース
継続的インテグレーション
(Continuous Integration)
継続的デリバリー
(Continuous Delivery)
Copyright © Alterbooth Inc. All Rights Reserved.
CI/CD がなぜ必要か
アプリケーションの品質を保ち続けるため
✓アプリケーション開発とそのライフサイクルを加速する
✓自動化されたビルドおよびリリースプロセスで品質と一貫性を確保する
✓アプリケーションの安定性と稼働時間を増やす
✓不健全な状態のアプリケーションの公開を防ぐ
✓上記の作業をツールに任せることができる
(人による作業を挟むこともできる)
Copyright © Alterbooth Inc. All Rights Reserved.
CI/CD ツールはチームに適したものを選ぶ
Azure DevOps
Copyright © Alterbooth Inc. All Rights Reserved.
.NET における CI/CD
Copyright © Alterbooth Inc. All Rights Reserved.
.NET Framework は移行時期です
プラットフォーム Windows Windows, macOS, Linux
バージョン 4.8
(今後はメジャーアップデートなし)
.NET Core 3.1, .NET 5
( .NET 6 Preview)
コマンドライン MSBuild.exe, MSDeploy.exe .NET Core CLI
Copyright © Alterbooth Inc. All Rights Reserved.
.NET Framework は移行時期です
プラットフォーム Windows Windows, macOS, Linux
バージョン 4.8
(今後はメジャーアップデートなし)
.NET Core 3.1, .NET 5
( .NET 6 Preview)
コマンドライン MSBuild.exe, MSDeploy.exe .NET Core CLI
Copyright © Alterbooth Inc. All Rights Reserved.
.NET Core CLI
コマンド 機能
dotnet new プロジェクトの新規作成
dotnet restore パッケージの復元
dotnet build プロジェクトのビルド
dotnet run プロジェクトの実行
dotnet test 単体テストの実行
dotnet pack プロジェクトのパッケージ化
dotnet publish
プロジェクトの展開
(=実行形式ファイルの生成)
Copyright © Alterbooth Inc. All Rights Reserved.
新しい dotnet コマンド
dotnet watch + command
いわゆるホットリロード。
ファイルの変更を検知して
コマンドを継続実行できる。
Copyright © Alterbooth Inc. All Rights Reserved.
開発できるアプリ形式も変わる
Copyright © Alterbooth Inc. All Rights Reserved.
Console
WinForms / WPF
WCF
ASP.NET Web Forms
ASP.NET MVC
ASP.NET Web API
Console / Generic Host
WinForms / WPF
gRPC
ASP.NET Core Blazor
ASP.NET Core MVC
ASP.NET Core Web API
これからは 2年ごとに LTS リリース
Copyright © Alterbooth Inc. All Rights Reserved.
https://dotnet.microsoft.com/platform/support/policy/dotnet-core
App Modernization Strategy
Copyright © Alterbooth Inc. All Rights Reserved.
.NET Core 2.1
Aug 2021 EOL
.NET Framework 4.8
.NET Framework 4.6.1
.NET Framework 2.0 .NET Framework 4.5
.NET Standard 1.0 .NET Standard 2.0 .NET Standard 2.1
NuGet Package ▶
App Modernization Strategy
Copyright © Alterbooth Inc. All Rights Reserved.
.NET Framework / .NET Core どちらもサポート
フレームワークのアップグレード
.NET Standard 1.0+ (One .NET)
フレームワークのアップデート
.NET Core 2.1
Aug 2021 EOL
.NET Framework 4.8
.NET Framework 4.6.1
.NET Framework 2.0 .NET Framework 4.5
.NET Standard 1.0 .NET Standard 2.0 .NET Standard 2.1
NuGet Package ▶
Azure DevOps を使った CI/CD
Copyright © Alterbooth Inc. All Rights Reserved.
パイプラインも YAML でバージョン管理
steps:
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '3.1.x'
- task: DotNetCoreCLI@2
displayName: build
inputs:
command: 'build'
projects: '**/*.csproj'
arguments: '--configuration $(buildConfiguration)'
- task: DotNetCoreCLI@2
displayName: test
inputs:
command: 'test'
projects: '**/*.csproj'
arguments: '--configuration $(buildConfiguration)'
- task: DotNetCoreCLI@2
displayName: publish
inputs:
command: 'publish'
publishWebProjects: true
arguments: '--configuration $(buildConfiguration) --
output $(Build.ArtifactStagingDirectory)'
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
Copyright © Alterbooth Inc. All Rights Reserved.
ビ
ル
ド
テ
ス
ト
発
行
CI/CD を構築した
▼
アプリの品質が保てる ではない
Copyright © Alterbooth Inc. All Rights Reserved.
要件定義 設計 開発 テスト リリース
レビューも大事
Copyright © Alterbooth Inc. All Rights Reserved.
レビュー レビュー レビュー レビュー
レビュー
レビューアーにもスキルが必要
クラウドで実行するアプリケーションを開発する場合、
レビューアーにも必要なスキルは多くなる。
✓ スケーラビリティが考慮されている設計/コードか
✓ 非機能要件をカバーしたアーキテクチャーか
✓ SDK や API を適切に使用できているか
✓ シークレット値の安全性が考慮されているか
✓ 必要なテストコードが書かれているか etc...
Copyright © Alterbooth Inc. All Rights Reserved.
Copyright © Alterbooth Inc. All Rights Reserved.
Copyright © Alterbooth Inc. All Rights Reserved.
C# の既存アプリケーションをあらゆる観
点から解析し、クラウドネイティブ化へ
の道筋を示すアセスメントツールです。
KOSMISCH はアーキテクチャーやソース
コードに潜むクラウドネイティブ化の障
壁を明確にし、お客様が抱える漠然とし
たクラウドネイティブ化への不安や自信
の無さを解消します。
https://kosmisch.jp/
フェーズ
タッチポイント
行動
課題の顕在化 解決提案 課題の克服 新しい環境 継続的改善
システム運用
障害
改修
クラウド化検討 継続開発
問題抽出 クラウドネイティブ化
監視
テスト
自動化
STRONG!
KOSMISCH はプログラムソースコードを解析し、クラウドネ
イティブ化にするためのレポートを自動作成します。
Copyright © Alterbooth Inc. All Rights Reserved.
KOSMISCH が解決するもの
Copyright © Alterbooth Inc. All Rights Reserved.
クラウドネイティブ化へのプロ
グラムコード改善
クラウドネイティブなインフラ
継続的に改善できる仕組み
KOSMISCH Monolith
お客様が保有するアプリケーション資産のソースコードを解析し、
クラウドネイティブ環境への展開に必要な変更を提示します。
Copyright © Alterbooth Inc. All Rights Reserved.
アセスメントの観点
クラウドで動かす Web アプリケーション
▶ スケーラビリティを備えることが望ましい
Copyright © Alterbooth Inc. All Rights Reserved.
スケールアウト
負荷増
アセスメントの観点
Web アプリケーションで使用するステート (状態) を
Web サーバー内に保持する構成になっていないかどうか
Copyright © Alterbooth Inc. All Rights Reserved.
データ
キャッシュ
ログ
ステートフル
外部のデータストア
(ex. Azure SQL Database)
外部のログストア
(ex. Azure Application Insights)
外部のキャッシュストア
(ex. Azure Cache for Redis)
ステートレス
Copyright © Alterbooth Inc. All Rights Reserved.
ソースコード
解析
アセスメント
レポート
コード改善
クラウドネイティブに適した実装か
KOSMISCH の利用シーン
1. クラウドネイティブ化の初期コスト見積もり
2. 改修中のアドバイザー
3. 改修したアプリケーションの受入試験の一環
4. 継続改善のアシスタント
5. クラウドプロバイダーの最新情報にキャッチ
アップし、自社製品への適用を検討する際の
補助ツール
Copyright © Alterbooth Inc. All Rights Reserved.
Photo by Annie Spratt on Unsplash
Copyright © Alterbooth Inc. All Rights Reserved.
適切なクラウドサービスの提案
Copyright © Alterbooth Inc. All Rights Reserved.
外部ライブラリ移行パスの提示
Encourage Your Cloud Native Architecture
クラウドネイティブアーキテクチャーの “不安” からの解放
Copyright © Alterbooth Inc. All Rights Reserved.

.NET アプリを改善して実践する継続的インテグレーション