狠狠撸

狠狠撸Share a Scribd company logo
App Modernization for .NET
App Modernization for .NET
Atsushi Kojima (Alterbooth Inc, CEO)
Yuta Matsumura (Alterbooth Inc, CTA)
アジェンダ ? 惭辞诲别谤苍颈锄补迟颈辞苍と惭颈驳谤补迟颈辞苍
? クラウド化戦略
? アプリケーションプラットフォーム
? リアーキテクチャー方針
? データストア戦略
? 开発プロセス
Atsushi Kojima
Alterbooth Inc, CEO
Microsoft Regional Director
G’s Academy Mentor
#aadojo
@techno_officer
Yuta Matsumura
Chief Technical Architect
Microsoft MVP
(Developer Technologies)
#fukuten #devblogradio
@tsubakimoto_s
tsubakimoto
惭辞诲别谤苍颈锄补迟颈辞苍と惭颈驳谤补迟颈辞苍
課題が解決される過程を知る
Modernizationの本質は課題を解決することです。Migrationとの違い
は移設は必ずしも必要ではない、というところですがオンプレ上の
システムはクラウドに移行されるべきなのでModernizationと
Migrationは連携して行う必要があります。
フェーズ 課題の顕在化 解決提案 課題の克服 新しい環境 継続的改善
状態
クラウド化の動機主導の戦略方針
クラウドを利用する動機とその具体的戦略の例を以下に示します。
既存のシステムを活かすことを中心とした戦略なのか、新しい何か
を生みだすためのイノベーションであるか、戦略をまず2つに分けど
ちらなのかを検討します。
? コスト削減
? ベンダーまたは技術的な複雑さの減少
? 内部運用の最適化
? ビジネス アジリティの向上
? 新しい技術機能に対する準備
? 市場需要に合わせたスケーリング
? 地理的需要に合わせたスケーリング
? ビジネス アジリティの向上
? 新しい技術機能に対する準備
? 新しい技術機能の構築
? 市場需要に合わせたスケーリング
? 地理的需要に合わせたスケーリング
? カスタマーエクスペリエンスとエンゲージメントの向上
? 製品またはサービスの変革
Migration/Modernization Innovation
モダナイズの基本設計
モダナイズは3つのステップに沿って行います。
Step1. 既存システムの評価
既存システムの評価は、クラウド化するための見積もり、リスク評価、改修規模など中心に行う
Step2. クラウドへ移行
5Rを軸に移行設計をする
Step3. リソースの最適化
継続的改善ができるように、常に状態を確認できるようにする
Cloud Adoption Framework
戦略
業務上の正当な理由と
導入による予想される
結果を定義する
計画 準備完了 移行
ビジネスの結果に合わせて
実行可能な導入計画を
調整する
計画された変更のために
クラウド環境を準備する
ガバナンス
環境とワークロードを
管理する
管理
ソリューションおよび
ハイブリッド ソリューション
のための運用管理
既存のワークロードを
移行して最新化する
Cloud Center of Excellence
CAFで最も重要なことはCCoE
CCoEとは企業規模でリーン事業開発を実現するために、必要な役割
や責任、行動に関する考え方が体系化されたナレッジです。クラウ
ドを軸とした組織全体、または組織間コラボレーションにおける重
要な目標や役割を示す組織戦略になります。CCoEはクラウドへ対応
するための速度と安定性のバランスを取る機能であり、レガシー資
産をモダナイズするために必要になります。
サンプルシナリオ 事前 CCoE ソリューション 事後 CCoE ソリューション
運用 SQL Server のプロビジョニング ネットワーク、IT、データ プラットフォームの各
チームは、数日または数週間にわたってさまざま
なコンポーネントをプロビジョニングします。
サーバーを必要とするチームは、Azure SQL
Database の PaaS インスタンスをデプロイしま
す。 または、承認済みのテンプレートを使用して、
すべての IaaS 資産をクラウドに数時間でデプロ
イできます。
開発環境のプロビジョニング ネットワーク、IT、開発、DevOps の各チームは、
仕様に同意し、環境をデプロイします。
開発チームは、独自の仕様を定義し、割り当てら
れた予算に基づいて環境をデプロイします。
データ保護を向上させるためのセキュリティ要件の更新 ネットワーク、IT、セキュリティの各チームは、
保護を追加するために複数の環境にわたってさま
ざまなネットワーク デバイスと VM を更新します。
クラウド ガバナンス ツールを使用して、すべての
クラウド環境内のすべての資産にすぐに適用でき
るポリシーを更新します。
クラウド化戦略
5Rでクラウド設計の基盤を策定する
5RはModernize Migrationにおける基本的な設計思想であり、対象と
なるシステムやワークロードをどのようにクラウドに展開するかを
検討していきます。
リファクター リアーキテクト リビルド リプレイス
リホスト
リフトアンドシフ
トでIaaSに移行さ
せる。コード修正
することなく既存
の仕組みをそのま
ま移行する。現状
のままクラウドに
移行することが可
能。
アプリケーション
の再パッケージ化
をし、PaaSもしく
はIaaSに移行する。
コード修正は最小
限で行い、アプリ
ケーションのス
ケールを最大化す
ることが可能。
アプリケーション
のコードベースを
変更し、最新化し
たのちに個別にデ
プロイできるアー
キテクチャーへ分
散させる。
クラウドネイティブ化す
るためにアプリケーショ
ンをゼロからリビルドす
る。すべての機能をPaaS
で実現し、フルマネージ
ドサービスとしてクラウ
ドを活用する。
すべてのアプリ
ケーションをSaaS
に置き換え常に最
高のテクノロジー
とアプローチにす
ることができる。
5Rの動機づけ分類
リホスト
リファクター
リアーキテクト
リビルド
リプレイス
ビジネス要件 システム要件 コスト要件
固定資産の削減 既存構成の変更を極力避ける
追加開発コストはなく、現在
の仕組みを踏襲
継続的なビジネスへの投資
デプロイの向上とソフトウェ
ア資産の継続アップデート
最小限の運用コスト
増大する運用リスクの削減
コード簡素化とアプリケー
ションのスケール?アジリ
ティ向上
マイクロサービスとして運用
ビジネスの変化への対応
新しいコードベースとクラウ
ドネイティブ
サーバーレスで最適化
入れ替え可能なビジネスツー
ルの導入
ワークフローの改善
開発、運用コストをゼロにす
る
.NETにおけるモダナイズで最初に注意するべきこと
Windows Server上で.NET Webアプリケーションを稼働させている場
合、モダナイズするためにはIISのバージョン遷移について理解する
必要があります。
Windows2003/R2
IIS6.0
Windows2008/R2
IIS7.0/7.5
Windows2012/R2
IIS8.0/8.5
Windows2016
IIS10.0
汎用ワーカープロセス
(w3wp.exe)
統合パイプライン
TCP/IP、名前付きパイプライン
64ビット対応
アプリケーションプール単位の動作
アカウント分離
大きな変更はあまりない
IIS6.0以前で稼働しているアプリケーションはIISの大幅なバージョンアップを考慮しないといけない。
? ワーカープロセスの分離管理
? パイプラインの確認
? 64ビット化
? 運用、管理サービスのクラウド化
モダナイズシナリオ
代表的なモダナイズシナリオは 2020年1月にEOSとなった Windows
Server 2008/2008 R2 を移行元として、Microsoft Azure 上の
Windows Server 2019仮想マシンへ最小リスクで移設するリホストプ
ランです。
On-Premise
Windows
Server
2008/2008R2
(IIS 7.0/7.5)
Virtual Machine
Windows Server 2019
Microsoft Azure
.NET アプリケーションを移行する
オンプレミスで稼働している Windows Server
2008/2008 R2 上の .NET アプリケーションの
みを最小リスクで Azure 上の Windows
Server 2019 へ移行する。
移行においてのアクションは以下。
1. Azure でのリソース作成
2. .NET アプリケーションファイルの移行
3. IIS 設定
4. Azure 最適化
アプリケーションコードへの改修は最小限にす
る。
アプリケーションプラットフォーム
リアーキテクチャー方針
for .NET
新しい .NET への移行
3.5 SP1 (~2029)
4.6.2
4.7, 4.7.1, 4.7.2
4.8
.NET and .NET Core official support policy
Microsoft .NET Framework - Microsoft Lifecycle | Microsoft Docs
※参考リンク
.NET アプリケーションの移行パス
Console
WinForms / WPF
WCF
ASP.NET Web Forms
ASP.NET MVC
ASP.NET Web API
Console / Generic Host
WinForms / WPF
gRPC / CoreWCF
ASP.NET Core Blazor
ASP.NET Core MVC
ASP.NET Core Web API
.NET アプリケーションの移行パス
Console
WinForms / WPF
WCF
ASP.NET Web Forms
ASP.NET MVC
ASP.NET Web API
Console / Generic Host
WinForms / WPF
gRPC / CoreWCF
ASP.NET Core Blazor
ASP.NET Core MVC
ASP.NET Core Web API
.NET Framework から .NET Core への移行
UI レイヤー以外の部分を .NET Standard に移行しつつ
最終的にすべてを .NET Core (.NET 6) に移行します。
※画像引用元
Microsoft Graph's Journey to .NET 6 - .NET Blog
移行作業を支援するツール
.NET Portability Analyzer
? ライブラリが移行可能な .NET
プラットフォームを解析
? .NET 6 は非対応であるため、
自身で解析が必要
.NET Upgrade Assistant
? 移行作業に必要なタスクの可視化を
行い、機械的な変換作業を実施
? .NET 6 まで移行可能
ツールが移行支援を行うのは、プロジェクト構成やライブラリの範囲程度です。
ビジネスロジックや UI は手作業での移行が必要となります。
移行が難しいケース
? Application Domain
? Remoting
? WF (Workflow Foundation)
? .NET Standard や .NET Core に移行できないライブラリ
?自社製の共有ライブラリ、サードパーティツール
(ドライバー、帳票、UI コンポーネントなど)
?代替ツールの採用 or 自身で実装 or 当該機能の削除
※参考リンク
破壊的変更 - .NET Framework から .NET Core | Microsoft Docs
データストア戦略
データストアの見直し
クラウドで実行する Web アプリケーションの場合、スケーラブルな
構成を保つことが大事です。
? Well-Architected Framework : “Performance Efficiency”
アプリケーション最新化のための設計と同様に、スケーラブルな
構成のためのデータ再設計を行いましょう。
ストレージ
(Blob, Queue,
Table, File Share)
リレーショナル
データベース
NoSQL
データベース
安全に扱いたい
データ
(シークレット)
ログやテレメト
リ
※参考リンク
Design scalable Azure applications - Microsoft Azure Well-Architected Framework | Microsoft Docs
データストアとしてどのサービスを使用するとよいか
Azure Key Vault で重要な情報を保護する
Azure Key Vault は下記のような、重要な情報を安全かつ一元的に
を管理するための仕組みです。
? データベースの接続文字列
? システムのマスターパスワード
? クラウドリソースへのアクセスに用いるキーや証明書
? 外部 Web サービスへのアクセスに用いるキーや証明書 など
※参考リンク
Azure Key Vault の概要 - Azure Key Vault | Microsoft Docs
Azure Key Vault が安全性を高める仕組み
ユーザーがアクセスする場合
? Azure AD 認証
? ユーザーに対するアクセスポリシー
アプリケーションからアクセスする場合
? Azure AD 認証 (マネージドID)
? リソースに対するアクセスポリシー
フルアクセス
読取のみ
シークレットのみ
开発プロセス
Azure
GitHub
开発プロセスのアップデート
commit & push
Repository
Packages
dotnet restore
Pull Request
Actions
Issue / Projects
?
deploy
レビューもクラウド環境に合わせて
クラウドアプリケーションに対するレビュー項目
? スケーラビリティが考慮されているか
? 非機能要件をカバーしたアーキテクチャーか
? SDK や API を適切に使用できているか
? シークレット値の安全性が考慮されているか
? 必要なテストコードが書かれているか
CI/CD パイプラインの構成
トリガー 環境構成 ビルド
成果物の
受渡
デプロイ
Artifact
dotnet restore
dotnet build
dotnet test
dotnet publish
Azure
NuGet
Container Registry
etc.
? Copyright Microsoft Corporation. All rights reserved.

More Related Content

App Modernization for .NET