Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ASP.NETアプリケーションのモダナイズ インフラ編
Search
tomokusaba
June 16, 2025
Programming
1
500
ASP.NETアプリケーションのモダナイズ インフラ編
ASP.NETアプリケーションのモダナイズ インフラ編
第54回 Jazug Night
https://jazug.connpass.com/event/354108/
tomokusaba
June 16, 2025
Tweet
Share
More Decks by tomokusaba
See All by tomokusaba
GitHub Copilot の概要
tomokusaba
1
160
Azure AI Foundry Agent Serviceを使用してコードファースト アプリを構築する
tomokusaba
1
310
Part1 GitHubってなんだろう?その1
tomokusaba
3
970
Part1 GitHubってなんだろう?その2
tomokusaba
2
950
Part2 GitHub Copilotってなんだろう
tomokusaba
2
1.1k
Global Azure2025(GitHub Copilot ハンズオン)
tomokusaba
2
950
ASP.NETアプリケーションのモダナイゼーションについて
tomokusaba
0
350
Fluent UI Blazor 5 (alpha)の紹介
tomokusaba
0
290
Generative AI for Beginners .NETの紹介
tomokusaba
1
330
Other Decks in Programming
See All in Programming
オンコール⼊⾨〜ページャーが鳴る前に、あなたが備えられること〜 / Before The Pager Rings
yktakaha4
2
1.1k
副作用と戦う PHP リファクタリング ─ ドメインイベントでビジネスロジックを解きほぐす
kajitack
3
460
Claude Code派?Gemini CLI派? みんなで比較LT会!_20250716
junholee
1
740
テスターからテストエンジニアへ ~新米テストエンジニアが歩んだ9ヶ月振り返り~
non0113
2
240
The Modern View Layer Rails Deserves: A Vision For 2025 And Beyond @ RailsConf 2025, Philadelphia, PA
marcoroth
2
810
Strands Agents で実現する名刺解析アーキテクチャ
omiya0555
1
110
階層化自動テストで開発に機動力を
ickx
1
420
フロントエンドのパフォーマンスチューニング
koukimiura
6
2.3k
What's new in AppKit on macOS 26
1024jp
0
170
Go製CLIツールをnpmで配布するには
syumai
0
300
The Evolution of Enterprise Java with Jakarta EE 11 and Beyond
ivargrimstad
0
490
Claude Code で Astro blog を Pages から Workers へ移行してみた
codehex
0
150
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
72
4.9k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
A better future with KSS
kneath
238
17k
How to train your dragon (web standard)
notwaldorf
96
6.1k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
We Have a Design System, Now What?
morganepeng
53
7.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
850
Producing Creativity
orderedlist
PRO
346
40k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
720
Transcript
ASP.NETアプリケーションの モダナイズインフラ編 FutureOne株式会社 草場 友光 第54回 Jazug Night
自己紹介 • コミュニティ活動を通じて知識を アップデートしています。 • 2022/08-2025 Microsoft MVP (Developer Technologies)
• tomo_kusaba • ドラクエ大好き ドラクエ10のプレイ時間→ 1キャラ目:2629時間 2キャラ目:909時間 3キャラ目:778時間 4キャラ目:190時間(配信用)
注意 • 個人の見解・解釈が多分に入っています。 • 見解の相違・事実誤認などありましたらご指摘ください。
今日の目的 • .NETラボ勉強会2025年4月でASP.NETアプリケーションのモ ダナイゼーションについてということでアプリケーション側のお話 をしました。 • Webアプリケーションにおいてはそれを動作させる基盤側の考慮 が必要不可欠です。 • アプリケーション開発側の立場でどのようにサービスをセレクトし
ていけばいいのか思考過程を交えてお話しできればと思います。
スコープ • 今回は、ASP.NETアプリケーションからASP.NET Coreアプリ ケーションにモダナイゼーションすることとします。 • Blazor Web Apps・Blazor WebAssembly・MVC・
WebAPIに近代化することを想定しています。
.NET Frameworkベースのアプリケーション • 移行が比較的容易なグループ(.NETにも同様のフレームワークが ある) WindowsForm, コンソール, MVC... • 移行が難しいグループ(.NETに同様のフレームワークがない)
WebForms....
なんで、モダナイしなければならないか? • コストの明瞭化(主にクラウドに移行する場合) • 最新の機能を使用したい(AIなど) • セキュリティの問題 • パフォーマンスの問題
.NETのサポート期間について • .NET FrameworkはOSのサポート期間に準じる • .NETはLST(.NET 8など)はリリースより36ヶ月、STSは (.NET 9など)は18ヶ月 •
追加してAzureリソースでのランタイムサポートも考慮 とはいえ、.NETはApp Serviceなどリリースと同時にサポート も
モダナイゼーションとは? • 老朽化した既存システムを現在のニーズに合うように刷新するこ と • ここでは、.NET Frameworkで構築されたシステムを.NETベー スに刷新し必要に応じてUIを刷新します。
とはいえ、開発者にとってAzureって難しい • 勉強しましょう! ISBN:978-4-297-14903-1
Azure CAFを読もう • クラウド導入の動機 • 導入戦略 • 導入準備(ランディングゾーン) • 導入(マイグレーション・モダナイゼーション・イノベーション)
• 管理 • セキュリティ
Cloud Adoption Frameworkを参照 • モダナイズの導入戦略 • プロセスのモダン化 DevOps手法を採用しよう CI/CDを採用して高速なデリバリーを実現しよう •
アプリケーションとデータベースのモダン化 PaaSソリューションを採用しよう
コンピューティングリソースの選択フロー https://learn.microsoft.com/ja-jp/azure/architecture/guide/technology- choices/compute-decision-tree
アーキテクチャーセンターを読もう • どのように設計したらよいか実例を元に明示されている • 例).NETにおける信頼性の高いWebアプリパターン
アプリケーションのモダン化 • ソリューションのコントロールと生産性のバランス コントロールと 生産性のバランス ソリューション 説明 最大のコントロール AKS Azure
Red Hat OpenShift インフラのコントロール 運用はやや大変 バランス Azure App Service Azure Spring Apps Azure Functions コードの開発に重点 インフラの自動化 最大の生産性 Power Apps Power Automate リードタイムを最短化
IaaSかPaaSか • モダナイゼーションという文脈からPaaS中心の選択となるのは 自明 • 基本的にどうしてもPaaSでできないものがIaaS(VM) を使用 することになる。 • 運用にかかるあらゆる面倒から解放を目指すためには便利な
PaaSを選択すべき • また、CAFでもモダナイゼーションという文脈ではPaaSの選択 を明確に謳っている
ステートレスにできるか • 本質的にアプリケーションをステートレスに再設計すべき • アプリケーションに状態を持っているとスケールアウトできない
セッションどうするの? • ASP.NET Core MVCの話 • アプリケーションサーバーに持たせるとスケールアウト不能 →Cache for Redisなどに情報を持たせるようにする
コンピューティングリソースの選択 • とはいえ、第一選択肢はApp Service • 既存のアプリに対して最も最小の変更で最もよい効果が得られる 可能性が高い
Azure App Service • まず、App Serviceが使えないか検討 • コードベース・コンテナーともに第一選択肢として考える • 運用まで考慮すると一番楽
• インスタンス数複数 • Premiumプランを選択する
Azure Static Web Apps • 実質的にAzure Functionと組み合わせて使う前提 • Blazor WebAssemblyの場合に考慮
バックエンドをWebAPIとしたい場合App Serviceを検討
Azure Functions • HTTPトリガーでバックエンドとして構築 • 小規模なWebシステムにおいて最もコスト安となる可能性
Azure Spring Apps • Azure Spring Appsは廃止がアナウンスされているのでこれ からの新規採用はありえない。 • Azure
Container Appsの採用を検討 • VMWare Tanzuへの移行を検討
Azure Kubernetes Service • 大規模なマイクロサービスにおいて検討する。 • 運用には高度な知識を持ったインフラ担当者が必要 • 小規模なシステムでは運用コストの面から見合わない
バッチどうするか問題 • LinuxのWebJobsがGAになって選択肢広がる • とはいえ、柔軟性を考えればAzure Functionsのほうが第一選 択肢
Azure Functions • Azure Functionsをバッチとして使用する際の考慮事項はその 実行時間。 • 長時間かかるタスクは通常の従量課金のFunctionは使えない • Durable
Task SchedulerはやくGAしないかなあ。。。 業務系のバッチはだいたいデータ処理なのでDTSに向いてる
データベースの選択 • データベースにはおおよそ2通りある • RDB • SQL Server • Oracle
• MySQL • PostgreSQL • NoSQL • Cosmos DB
Azure SQL Database • フルマネージドなデータベース • まずはこちらでよいかどうか検討する • Cache for
Radisを使用してキャッシュを使用することを検討 する
Azure Managed Instance • SQL Databaseではカバーできない要件がある場合はこちらを 選択する。 • たとえば、JSTで運用したいなど
Table Storage • Key-Value方式のデータストア • 件数がそれほど多くない • 安い • とはいえ、適用できるようなシステムあまり見たことない
DevOpsツールを導入する DevOpsツール 説明 ツール例 ソース管理 コードリポジトリ GitHub、Azure Repos CI/CDパイプライン 継続的にビルドやテストデプロイ
GitHub Actions、Azure Pipelines タスクボード 作業を計画、追跡、議論 GitHub Projects、Azure Boards、 Redmine パッケージマネージャー パッケージを発行する Azure Artifacts テスト管理 テストと品質保証を実行する Azure Test Plans
CI/CDどうするか問題 • GitHub Copilotの登場のせいでリポジトリーベースはGitHub に寄せたい思い。 →GitHub Actionsを選択したい思い • もともと、CI/CD観点ではできることにそこまで致命的差がない ように思える
GitHub • Azure VNETでのGitHubホストランナー使えるようになった! →セルフホステッドランナーを構築する理由のだいたいがなく なってきた。 • GitHub Copilotが強い →絶対使うでしょ!
使わない選択肢ないでしょ!
クラウドアプリケーションの考慮事項 • 多くのリソースはUTCで動作しています。 JSTを前提にして動作してるアプリケーションは時刻について混 乱します。 App ServiceやManaged Instanceは逃げ道あり • ノンカルチャーで動作します。
日本語カルチャーに依存するメソッドは動作しない・動作が変化す る可能性があります。
タイムゾーンについての設計 • 内部的には日時をUTCで扱う →あらゆるシステムからUTCで日時が取得できるので自然 • 日時を表現する型はDateTimeOffsetを使用する →時差を考慮した表現をしなければいけないので必然 また、TimeProviderから返される型もDateTimeOffsetに なっているので事実上標準 •
表示する時にViewまたはViewに近いところでJSTに変換する
カルチャーについて • stringクラスについては特に要注意 • ローカルの単体テストを単純に実行しただけでは実行結果が変わ ることがある →カルチャーを意識した単体テストの実施が必要
認証・認可における考慮事項 • 古いイントラの中だけで使われていたようなシステムの中には認 証とも言えないようなIDを識別するような仕組みが入っているこ とがままある。
まとめ • ベースラインとしての構成は以下の通り • App Service • SQL Database •
GitHub
おしまい おしまい