Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
de:code 2019 CD01
Windows Containers と Azure による、
既存.NET アプリケーションのモダナイズ日本マイクロソフト株式会社
パートナー事業本部
パートナー ソリューション プロフェッショナル
福原 毅
• Windows Containers の動向
• WindowsのDocker Engineとイメージの種類
本日の内容
Windows Containersの動向
Windows Containers Platform の進化
Windows Containers Platform の進化
Tigera Calico for Windows の一
般提供開始
迅速な変革を実現する方法
LONG-TERM SERVICING CHANNEL (LTSC)
Server Core と Nano Server
Windows のDocker Engineとイメージの種類
Docker コンテナーとは?
ホストOS上に配置されたライトウェートで高速に動作する分離された層
最終的にホストOS上の1プロセスとして実行されているアプリケーション
出典: Docker.inc - https://docs.docker.com/get-started/#images-and-containers
コンテナー化仮想化
Windows コンテナー イメージの構造
Dockerfiles: コンテナー構築のレシピ
最適なベース イメージの選択
イメージ容量 100 Mb 1.49 Gb 3.57 Gb
フレームワーク .NET Core .NET Framework Win32 API Set
ユースケース 新しいアプリ旧来のサーバー
ワークロード
DirectX, print server,
新しいアプリ体験
提供開始バージョンWindows Server
2016
Windows Server
2016
Windows Server
2019
最適なベース イメージの選択
イメージ容量 100 Mb 1.49 Gb 3.57 Gb
フレームワーク .NET Core .NET Framework Win32 API Set
ユースケース 新しいアプリ旧来のサーバー
ワークロード
DirectX, print server,
新しいアプリ体験
提供開始バージョンWindows Server
2016
Windows Server
2016
Windows Server
2019
dotnet/core
microsoft/powershell
dotnet/framework
microsoft/aspnet
microsoft/iis
microsoft/wcf
(open for adoption)
Windows Containersの特徴--isolation=hyperv
Hyper-V分離のLinux コンテナー
Moby の仮想マシンに Linux コンテナー(Docker Desktop for Windowsの場合) HYPER-V 分離 Linux コンテナー
https://docs.microsoft.com/ja-jp/virtualization/windowscontainers/deploy-containers/linux-containers
Hyper-V分離のLinux コンテナー専用カーネルhttps://github.com/linuxkit/lcow
Demo:Linux Containers on Windows
Hyper-V分離とプロセス分離の違いを
Windows Admin Centerのコンテナー拡張機能で確認
• 第4回 Windows Server コンテナーと Windows Subsystem for Linuxの進化https://info.microsoft.com/JA-AzureINFRA-WBNR-FY19-11Nov-27-
WindowsServer2019FullIntroduction-MCW0009200_02OnDemandRegistration-ForminBody.html
https://azure.microsoft.com/ja-jp/overview/webinars/
200以上のオンデマンド
ウェビナーと、随時ライブ
ウェビナーを、提供中
プロセス分離コンテナーの特徴
docker run --isolation=process
--device="class/{interface class GUID}“
mcr.microsoft.com/windows/servercore:1809
Device Type Interface Class GUID
GPIO 916EF1CB-8426-468D-A6F7-9AE8076881B3
I2C Bus A11EE3C6-8421-4202-A3E7-B91FF90188E4
COM Port 86E0D1E0-8089-11D0-9CE4-08003E301F73
SPI Bus DCDE6AF9-6610-4285-828F-CAAF78C424CC
DirectX GPU Acceleration 5B45201D-F2F2-4F3B-85BB-30FF1F953599
https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/hardware-devices-in-containers
プロセス分離コンテナーの特徴
docker run --isolation process--device class/5B45201D-F2F2-4F3B-85BB-30FF1F953599<mcr.microsoft.com/windows:1809 以上をベースにしたコンテナー>
https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/gpu-acceleration
Demo:GPUを有効化したコンテナーでの、WinMLのベンチマークDirectX Container Sample:https://github.com/MicrosoftDocs/Virtualization-
Documentation/tree/live/windows-container-samples/directx
Dxdiag.exe で、ドライバー モデルの確認
docker run --isolation process--device class/5B45201D-F2F2-4F3B-85BB-30FF1F953599winml-runner
Windows Server Coreイメージと、既存 .NET Frameworkアプリケーションのモダナイズ
• Visual Studioでコンテナー化
• Azureへの展開
アプリケーション最適化モデル既存のアプリケーション
(オンプレミス)
クラウド最適化
PaaS
クラウド ネイティブ
PaaS (マイクロサービス とサーバーレス)
クラウド
インフラストラクチャー対応
VMs
マネージド サービス
オンプレミス
移行 / 再ホスト
クラウド向けに設計された新規のコード
Azure
PaaS ( コンテナ化されたマイクロサービス
+ サーバーレス コンピューティング
+ マネージド サービス )+ コンテナー
IaaS (Infrastructure as a Service)
モダナイゼーション
コードの変更は最小限
クラウド環境が基本。検討事項: ネットワーク、ハイブリッド クラウド、IDと認証、コスト コントロールと運用モデル
Azure Azure
.NETアプリのAzureへの移行パターンクラウドインフラ対応 クラウドへ最適化 クラウドへ最適化されたコンテナー
IaaS (Azure Windows Virtual Machine)
PaaS(Azure App Service)
Windows Containers(Service Fabric/mesh, AKS/ACI,
VM with Windows Containers)
✓ 設計変更や、新しいコードは不要
✓ 最小限の工数で迅速に移行
✓ オンプレミスと同様の展開モデル
✓ インフラストラクチャの運用が不要
✓ 高い可用性、スケーリングとセキュリ
ティを提供
✓ 複数バージョンの.NETをサポート
✓ CI/CDによる自動展開可能
✓ 詳細な監視、診断とデバッグ
✓ 再設計(re-architect)は不要で最小
限のコード、もしくは設定の変更のみ
✓ 自己完結のコンテナにより、展開の改
善とDevOpsの俊敏性
✓ CI/CDによる自動展開可能
✓ オーケストレーターにより、高い可用性
とスケーラビリティを提供
✓ Dockerコンテナーにより、アプリケー
ションの可搬性とマルチ クラウド対応
x 更新プログラム適用などは手作業
x スケーリングや可用性の向上も手作業
x 一部サポートされないアプリがある
x リファクタリングが必要な場合がある
x コンテナーに関する学習障壁
適切なAzure ホスティング オプションの選択: https://docs.microsoft.com/ja-jp/dotnet/azure/dotnet-howto-choose-migration
移行先は、Azure App Serviceを推奨
https://docs.microsoft.com/ja-jp/dotnet/azure/dotnet-howto-choose-migration
Azure App Service
for Containers
(Public Preview)
Windows Containers
on Azure Kubernetes Service
(Public Preview)
Azure Container Instances
.NETアプリをApp Serviceへ移行可能か?
.NET Web アプリまたはサービスを Azure App Service に移行する際の考慮事項: https://go.microsoft.com/fwlink/?linkid=862532
互換性チェックリスト
80 (Http) もしくは443 (Https)ポートへのバインドの確認
匿名とフォーム認証サポートの有無。AADもしくはADFS + VPNによるWindows認証か
GAC (Global Assembly Cache) を利用していないこと
1サイト当たり、1アプリケーションプールか
IIS7以降のスキーマに準拠しているか
COM/COM+ コンポーネントを利用していないか
物理ディレクトリ参照の有無。ファイルアクセスの代替はBlobストレージを利用
オンプレミスリソースへのアクセスは、移行や変更が必要の可能性あり
SQL Server, Oracle, MySQL データベース
ISAPI Filters DLL(s)は、web.configを使って登録、ローカルへ展開する
移行シナリオ: 既存ASP.NET Webアプリのコンテナ化ブラウザ上のMVC
アプリ
SQL Server
Windows Container
A. HTTP
Docker ホスト (PC 上の開発環境) Windows 10 以降
Docker Desktop for Windows
Mock data
(*) SQL Serverのコンテナーは、開発/テスト
環境向けです。
本番環境では、Azure SQL Databaseのよ
うな高可用性システムへ移行してください。
eShopProductCatalog database
ブラウザ上のWeb
フォームアプリ
B. HTTP
Mock
data
ASP.NET (.NET Framework)
Windows Server Core Containers
(*)
https://github.com/dotnet-architecture/eShopModernizing
Demo:Visual Studio 2019による.NETアプリのコンテナー化
Visual Studio (Windows)
Visual Studio for Mac
Visual Studio Code (クロスプラットフォーム)
Support for:
- Docker - Windows コンテナー
- Docker - Linux コンテナー
- マルチコンテナーのアプリケーション デバッグ
による、
既存アプリのコンテナ化
Windows Server Coreイメージと、既存 .NET Frameworkアプリケーションのモダナイズ
• Visual Studioでコンテナー化
• Azureへの展開
移行シナリオ: レジストリ経由でAzure VMへ展開
テスト環境用仮想マシンWindows Server 2016 以降の Docker Engine
Docker engine と
Docker CLI
docker pull
PC 上の開発環境Windows 10 以降のDocker for Windows
Windows Server Core Container上の
ASP.NET (.NET Framework)
Windows Server Core Container上の
SQL Server
Docker engine と
Docker CLI
ローカルの
Docker イメージ
レポジトリー
docker push
Container Registry
Docker Hub
もしくは
Azure Container Registry
docker-compose buildor
docker build (*) SQL Serverのコンテナーは、開発/テスト環境向けです。
本番環境では、Azure SQL Databaseのような高可用性システムへ移行してください。
(*)
Docker-compose up
ローカルの
Docker イメージ
レポジトリー
Demo:Visual Studio 2019から、Azure Container Registryへの発行
Windows Containers の展開先
Azure Container Instances (ACI)
Azure Virtual Machine ( Windows Server 2016/2019 )
Docker Engine
Azure App Service(Windows Containers対応はプレビュー)
Azure Kubernetes Service(Windows Containers対応はプレビュー)
Service Fabric (Mesh or cluster)(Service Fabric meshはプレビュー)
移行シナリオ: レジストリ経由でACIへ展開
Azure Container Instances
(ACI)
PC 上の開発環境Windows 10 以降のDocker for Windows
Windows Server Core Container上の
ASP.NET (.NET Framework)
Windows Server Core Container上の
SQL Server
Docker engine and
Docker CLI
ローカルの
Docker イメージ
レポジトリー
docker push
Docker Registry
Docker Hub
もしくは
Azure Container Registry
docker-compose buildor
docker build
パブリックIP
と DNS名
エンドポイント
Azure Cloud Shell と
Azure CLI コマンド
もしくは、Azure Portal
(*) SQL Serverのコンテナーは、開発/テスト環境向けです。
本番環境では、Azure SQL Databaseのような高可用性システムへ移行し
てください。
(*)
Azure Container Registry ( ACR )
使い慣れた、オープンソースの
Docker CLIツール
Azure Container Registryの
geoレプリケーション
すべてのタイプの
コンテナー イメージを管理
Demo:Azure Container Registryから、Azure Container Instancesへの発行
実運用環境での要件
Azure SQL Database
もしくは、
Azure SQL Database Managed Instance
もしくは
オンプレミスのSQL Server クラスター
✓高可用性
✓PaaS サービス
Windows Server Core Container上の
SQL Server
Windows コンテナーのスケールアウトを簡素化するには?かつ、IaaS/VM の運用をなくすには?
DataCompute
✓コンテナー用の
コンピュート サービスの管理
✓スケール アウト
Windows Containers の展開先
Azure Container Instances (ACI)
Azure Virtual Machine ( Windows Server 2016/2019 )
Docker Engine
Azure App Service(Windows Containers対応はプレビュー)
Azure Kubernetes Service(Windows Containers対応はプレビュー)
Service Fabric (Mesh or cluster)(Service Fabric meshはプレビュー)
移行シナリオ: Web App for Containersへの展開
Web App for Containers(Windows Containersサポート)
PC上の開発環境Windows 10
Docker for Windows
Windows Server Core Container上の
ASP.NET (.NET Framework)
Windows Server Core Container上の
SQL Server
Docker engine and
Docker CLI
ローカルの
Docker イメージ
レポジトリー
docker push
Docker Registry
Docker Hub
もしくは
Azure Container Registry
docker-compose buildor
docker build
スケールアウト コンテナーAzure SQL Database
(*) Visual Studio Tooling coming soon for App Service and Windows Containers
https://azure.microsoft.com/en-us/blog/announcing-the-public-preview-of-windows-container-support-in-azure-app-service/
Demo:Azure Container Registryから、Web App for Containerへの発行
Azure App Service でのWindows コンテナーに対するWindows Server 2019 のサポート開始 (2019年4月3日)
https://azure.microsoft.com/ja-jp/blog/windows-server-2019-support-now-available-for-windows-containers-on-azure-app-service/
お試しの際には、バージョンとリージョンにご注意を!
Windows Containers の展開先
Azure Container Instances (ACI)
Azure Virtual Machine ( Windows Server 2016/2019 )
Docker Engine
Azure App Service(Windows Containers対応はプレビュー)
Azure Kubernetes Service(Windows Containers対応はプレビュー)
Service Fabric (Mesh or cluster)(Service Fabric meshはプレビュー)
Azureでのオーケストレーターの選択肢オーケスト
レーター内容 適用領域
一般的な
ワークロード
Service Fabric
Azure Service Fabric は、スケーラブルで、信頼性のあるマイクロサービスのパッケージン
グ、展開、運用を簡素化するための、分散
システム プラットフォームです。
Mesh: PaaS/サーバーレス プラットフォーム
Microsoftの
エコシステムとOSS
高い成熟度:
低い成熟度:
a) コンテナー ベース
のマイクロサービス
b) プレーンなプロセ
スをベースにした
マイクロサービス
c) ステートフルなサー
ビス
Kubernetes
Cluster: クラスターを構成するVMに課金
Kubernetes は、複数ホストのクラスター上
のアプリケーション コンテナーの、自動展開、
自動スケーリング、運用のためのオープン
ソース プラットフォームです。
AKS: クラスターを構成するVMに課金
(AKS Engine: IaaS によるコンテナー イン
フラストラクチャー)
OSS エコシステム
高い成熟度:
低い成熟度:
コンテナー ベースの
マイクロサービス
Azureサービス
Azure
Service Fabric
(Mesh と cluster)
Azure
Kubernetes
Service
(AKS)
シナリオ: Azure Service Fabric Meshへの展開
Azure Service Fabric meshPC上の開発環境
Windows 10
Docker for Windows
Windows Server Core Container上の
ASP.NET (.NET Framework)
Windows Server Core Container上の
SQL Server
Docker engine と
Docker CLI
ローカルの
Docker イメージ
レポジトリー
docker push
Docker Registry
Docker Hub
もしくは
Azure Container Registry
docker-compose buildor
docker build
• Azure CLI in PowerShell or CMD
• Azure Cloud Shell
パブリック IP
パブリック
エンドポイント
(*) SQL Serverのコンテナーは、開発/テスト環境向けです。
本番環境では、Azure SQL Databaseのような高可用性システムへ移行してください。
(*)
Network(Ingress
Reverse
Proxy)
HTTP ポート
その他ポート
スケールアウト コンテナー
> az sbz deployment create
https://azure.microsoft.com/en-us/blog/azure-service-fabric-mesh-is-now-in-public-preview/
Service Fabric コンテナー サポートのロードマップ
Service Fabric Mesh プレビュー
Service Fabric リソース モデル Spring 2019 Refresh リリース
Azure Kubernetes Service でのWindows Serverコンテナー サポートのプレビューのお知らせ (2019年5月17日)
https://azure.microsoft.com/ja-jp/blog/announcing-the-preview-of-windows-server-containers-support-in-azure-kubernetes-service/
AKSのWindowsコンテナー サポート:パブリック プレビュー中
kubectl apply -f sample.yaml
Demo:Azure Kubernetes ServiceでのWindows Server Containers
シナリオ: CI/CDパイプラインで、ビルドと展開を自動化
開発環境
繰り返し
1.
Build, CI
3.
Azure Pipeline
コーディング、
実行、
デバッグ
Application
code repo
(SCC)
Code
Push
2.
git push
Docker Hub もしくはAzure Container RegistryDocker
registry
docker push
Custom
Image
5. 展開先の選択肢
Azure Container
Instances (ACI)
Azure VMWindows Server 2016/2019
Docker Engine
Azure App Service(Windows Containers対応はプレビュー)
Azure Kubernetes
Service(Windows Containers対応はプレビュー)
Azure Service Fabric
(Mesh or cluster)(Service Fabric meshはプレビュー)
CD, deploy
4.
Azure Pipeline
(*) SQL Serverのコンテナーは、開発/テスト環境向けです。
本番環境では、Azure SQL Databaseのような高可用性システムへ移行してください。
(*)
(*)
コンテナー利用時のAzure サービスの選択Azure
Virtual
Machines
Azure
Container
Instances
Azure App
Service for
Container
Azure
Kubernetes
Service
Azure
Service
Fabric
(Mesh)
Azure
Functions
Azure Batch
Webアプリ
(モノリシック
アーキテクチャ)
N階層アプリ
(疎結合な
サービス)
クラウド ネイティブ
(マイクロサービス
アーキテクチャ)
バッチ / ジョブ
(バックグラウンド
タスク)
推奨 可能
アプリケーション
アーキテクチャ
(*) Dev/Test/QAやVirtual Kubeletのような
製品のインフラなど、特定のシナリオのみ
(*)
(*)
(*)
既存.NETアプリをモダナイズする場合のAzureサービス
推奨
Azure
イベントドリブン
を推奨
アプリケーションの
バックグラウンド
タスクで推奨
大規模 バッチで
推奨
推奨
推奨
推奨
コンテナー利用時のAzure サービスの選択
(*)
(*)
(*)
1)レガシーシステム
2)レガシー システムを、クラウドに最適化されたプラットフォームへ移行
3)新しいマイクロサービスやPaaS (サーバーレス) を追加
4)システムをマイクロサービスやPaaS (サーバーレス)へ分割
5)システムがクラウド ネイティブへ移行
クラウドネイティブ ( マイクロサービスとサーバーレス )への道筋
まとめ
Azureは、従来型の.NET Framework アプリケーションを
モダナイズするベストなWindows Containers Platformを提供
適切なWindows Containers ベース イメージとツールを選択し、
小さく始めて、継続的にモダナイズを進める
スケーラビリティと回復性を備えた実行環境を選択可能
明日(5月30日)の関連セッション
5月30日 9:30 – 10:20 / 10:50 – 11:40 @ Room A
DT07 .NETとクラウド ネイティブ
~ 本格化するクラウド移行とそのアーキテクチャ (前編/後編)
5月30日 13:30 – 14:20 @ Room J
DT52 ベテラン技術者に聞く、
「その.NETアプリ、クラウドでどうモダナイズするの!?」
.NET アプリケーション アーキテクチャwww.dot.net/architecture
無償のeBooks
https://aka.ms/azuredevebook https://aka.ms/modernizeappebook https://aka.ms/microservicesebook
Michael Crump
Barry Luijbregts
© 2018 Microsoft Corporation. All rights reserved.
本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。
© 2019 Microsoft Corporation. All rights reserved.
本情報の内容 (添付文書、リンク先などを含む) は、de:code 2019 開催日 (2019年5月29~30日) 時点のものであり、予告なく変更される場合があります。
本コンテンツの著作権、および本コンテンツ中に出てくる商標権、団体名、ロゴ、製品、サービスなどはそれぞれ、各権利保有者に帰属します。