Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 33 Ad
Advertisement

More Related Content

Slideshows for you (20)

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

Advertisement

More from Yuta Matsumura (17)

Recently uploaded (20)

Advertisement

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

  1. 1. .NET アプリを改善して実践する CI Encourage Your Cloud Native Architecture Copyright © Alterbooth Inc. All Rights Reserved.
  2. 2. Copyright © Alterbooth Inc. All Rights Reserved. 松村 優大 (Yuta Matsumura) Chief Technical Architect (C#, PHP, Cloud) KOSMISCH 開発リーダー Microsoft MVP (Development Technologies) Currently working for
  3. 3. これから話すこと アプリケーション開発サイクルで行う 定型作業の効率化を実現する CI/CD について DevOps を実践するための第一歩として、定型作業の自動化に ついて C# アプリでの方法を紹介します。 ※他の言語でも CLI があればそこまで変わらないはずです Copyright © Alterbooth Inc. All Rights Reserved.
  4. 4. 一般的なアプリケーション開発工程 要件定義 設計 開発 テスト リリース Copyright © Alterbooth Inc. All Rights Reserved.
  5. 5. CI/CD でカバーできる範囲 要件定義 設計 開発 テスト リリース 継続的インテグレーション (Continuous Integration) 継続的デリバリー (Continuous Delivery) Copyright © Alterbooth Inc. All Rights Reserved.
  6. 6. CI/CD がなぜ必要か アプリケーションの品質を保ち続けるため ✓アプリケーション開発とそのライフサイクルを加速する ✓自動化されたビルドおよびリリースプロセスで品質と一貫性を確保する ✓アプリケーションの安定性と稼働時間を増やす ✓不健全な状態のアプリケーションの公開を防ぐ ✓上記の作業をツールに任せることができる (人による作業を挟むこともできる) Copyright © Alterbooth Inc. All Rights Reserved.
  7. 7. CI/CD ツールはチームに適したものを選ぶ Azure DevOps Copyright © Alterbooth Inc. All Rights Reserved.
  8. 8. .NET における CI/CD Copyright © Alterbooth Inc. All Rights Reserved.
  9. 9. .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.
  10. 10. .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.
  11. 11. .NET Core CLI コマンド 機能 dotnet new プロジェクトの新規作成 dotnet restore パッケージの復元 dotnet build プロジェクトのビルド dotnet run プロジェクトの実行 dotnet test 単体テストの実行 dotnet pack プロジェクトのパッケージ化 dotnet publish プロジェクトの展開 (=実行形式ファイルの生成) Copyright © Alterbooth Inc. All Rights Reserved.
  12. 12. 新しい dotnet コマンド dotnet watch + command いわゆるホットリロード。 ファイルの変更を検知して コマンドを継続実行できる。 Copyright © Alterbooth Inc. All Rights Reserved.
  13. 13. 開発できるアプリ形式も変わる 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
  14. 14. これからは 2年ごとに LTS リリース Copyright © Alterbooth Inc. All Rights Reserved. https://dotnet.microsoft.com/platform/support/policy/dotnet-core
  15. 15. 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 ▶
  16. 16. 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 ▶
  17. 17. Azure DevOps を使った CI/CD Copyright © Alterbooth Inc. All Rights Reserved.
  18. 18. パイプラインも 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. ビ ル ド テ ス ト 発 行
  19. 19. CI/CD を構築した ▼ アプリの品質が保てる ではない Copyright © Alterbooth Inc. All Rights Reserved.
  20. 20. 要件定義 設計 開発 テスト リリース レビューも大事 Copyright © Alterbooth Inc. All Rights Reserved. レビュー レビュー レビュー レビュー レビュー
  21. 21. レビューアーにもスキルが必要 クラウドで実行するアプリケーションを開発する場合、 レビューアーにも必要なスキルは多くなる。 ✓ スケーラビリティが考慮されている設計/コードか ✓ 非機能要件をカバーしたアーキテクチャーか ✓ SDK や API を適切に使用できているか ✓ シークレット値の安全性が考慮されているか ✓ 必要なテストコードが書かれているか etc... Copyright © Alterbooth Inc. All Rights Reserved.
  22. 22. Copyright © Alterbooth Inc. All Rights Reserved.
  23. 23. Copyright © Alterbooth Inc. All Rights Reserved. C# の既存アプリケーションをあらゆる観 点から解析し、クラウドネイティブ化へ の道筋を示すアセスメントツールです。 KOSMISCH はアーキテクチャーやソース コードに潜むクラウドネイティブ化の障 壁を明確にし、お客様が抱える漠然とし たクラウドネイティブ化への不安や自信 の無さを解消します。 https://kosmisch.jp/
  24. 24. フェーズ タッチポイント 行動 課題の顕在化 解決提案 課題の克服 新しい環境 継続的改善 システム運用 障害 改修 クラウド化検討 継続開発 問題抽出 クラウドネイティブ化 監視 テスト 自動化 STRONG! KOSMISCH はプログラムソースコードを解析し、クラウドネ イティブ化にするためのレポートを自動作成します。 Copyright © Alterbooth Inc. All Rights Reserved.
  25. 25. KOSMISCH が解決するもの Copyright © Alterbooth Inc. All Rights Reserved. クラウドネイティブ化へのプロ グラムコード改善 クラウドネイティブなインフラ 継続的に改善できる仕組み
  26. 26. KOSMISCH Monolith お客様が保有するアプリケーション資産のソースコードを解析し、 クラウドネイティブ環境への展開に必要な変更を提示します。 Copyright © Alterbooth Inc. All Rights Reserved.
  27. 27. アセスメントの観点 クラウドで動かす Web アプリケーション ▶ スケーラビリティを備えることが望ましい Copyright © Alterbooth Inc. All Rights Reserved. スケールアウト 負荷増
  28. 28. アセスメントの観点 Web アプリケーションで使用するステート (状態) を Web サーバー内に保持する構成になっていないかどうか Copyright © Alterbooth Inc. All Rights Reserved. データ キャッシュ ログ ステートフル 外部のデータストア (ex. Azure SQL Database) 外部のログストア (ex. Azure Application Insights) 外部のキャッシュストア (ex. Azure Cache for Redis) ステートレス
  29. 29. Copyright © Alterbooth Inc. All Rights Reserved. ソースコード 解析 アセスメント レポート コード改善 クラウドネイティブに適した実装か
  30. 30. KOSMISCH の利用シーン 1. クラウドネイティブ化の初期コスト見積もり 2. 改修中のアドバイザー 3. 改修したアプリケーションの受入試験の一環 4. 継続改善のアシスタント 5. クラウドプロバイダーの最新情報にキャッチ アップし、自社製品への適用を検討する際の 補助ツール Copyright © Alterbooth Inc. All Rights Reserved. Photo by Annie Spratt on Unsplash
  31. 31. Copyright © Alterbooth Inc. All Rights Reserved. 適切なクラウドサービスの提案
  32. 32. Copyright © Alterbooth Inc. All Rights Reserved. 外部ライブラリ移行パスの提示
  33. 33. Encourage Your Cloud Native Architecture クラウドネイティブアーキテクチャーの “不安” からの解放 Copyright © Alterbooth Inc. All Rights Reserved.

×