Slide 1

Slide 1 text

Azure以外のクラウドではじめる .NET 1

Slide 2

Slide 2 text

● 自己紹介 ● .NETとは? ● 現在における.NET ● どうやったら動く? ● 今回扱う技術の紹介 ● アプリケーションのデモ(localhostで実行) ● GitHub Codespaces ○ GitHub CodespacesでBlazorを動かす ● Google CloudやAWSで.NETを動かすためには ● 新しいランタイムが登場すると。。。 話すこと 2 ● Google Cloud ○ 基本 ○ サービス紹介 ○ 構成図 ● AWS ○ 基本 ○ サービス紹介 ○ 構成図 ● New Relicでパフォーマンスをチェックする ○ Google Cloud ○ AWS ● まとめ

Slide 3

Slide 3 text

自己紹介 3 Kento.Yamada マルチクラウドでエンジニアをやっているDeveloper 携わっていること: ● クラウドの運用分析・MSP向けのシステム開発 ● 新しいクラウドサービスの検証 ● 他 ● Google Cloud Partner Tech Blog Challenge 2023 Cloud AI/ML 部門受賞 ● Kindle本の執筆(ベストセラー獲得) github,zenn,Qiita,X(旧Twitter),LinkedIn@ymd65536

Slide 4

Slide 4 text

.NETとは? 特徴 ● Microsoftが開発したオープンソースアプリケーションプラットフォーム ● クロスプラットフォーム .NETには種類がある ● .NET Framework ● .NET(.NET Core) ● Mono 4

Slide 5

Slide 5 text

現在における.NET 結構前に.NET Core 5から統合が発表され、現在は.NET8 以前までは .NET Frameworkとして提供されていた。 ※.NET9は2024年後半にリリース(予定) 5

Slide 6

Slide 6 text

どうやったら動く? 6 ランタイム 実行可能形式 Web ※実行可能形式:exe、apkなど

Slide 7

Slide 7 text

どうやったら動く? 7 ランタイム 実行可能形式 Web ※実行可能形式:exe、apkなど 今回はWebでデプロイ

Slide 8

Slide 8 text

今回扱う技術の紹介 ● 言語:C# ● ランタイム:.NET6 ● フロントエンドフレームワーク:Blazor Server ● バックエンド:Docker ● キャッシュ:Momento Cache ● E2Eテスト:mabl ● APM:NewRelic Website Performance Monitoring ※AWS App Runnerが.NET6までの対応なので.NET6を利用 8

Slide 9

Slide 9 text

補足:Momento Cacheとは サーバレスのキャッシュサービス 特徴 ● サーバレスでキャッシュを管理できる ● クラスター管理が不要 ● Pay As You Go、月間5GBまで無料! 9 Momento Cache:https://jp.gomomento.com/services/momento-cache/

Slide 10

Slide 10 text

補足:mablとは 10 引用:https://www.mabl.com/ja/

Slide 11

Slide 11 text

補足:New Relicとは アプリケーションパフォーマンスモニタリング(APM) 特徴 ● すべての機能を備えたオブザーバビリティ 今回はWebsite Performance Monitoringを使いま す。 11 New Relic:https://newrelic.com/jp

Slide 12

Slide 12 text

開発環境 GitHub Codespaces:超高速で構築できるクラウド開発環境を使って開発します! 12 引用:https://github.co.jp/features/codespaces

Slide 13

Slide 13 text

GitHub CodespacesでBlazorを動かす 13

Slide 14

Slide 14 text

Google CloudやAWSでC#を動かすためには 14 リポジトリ渡す からよしなに やって! はいよ。 仮想マシンで 動かすぜ! セルフホスト サービス利用 楽 苦

Slide 15

Slide 15 text

新しいランタイムが登場すると。。。 15 .NET9でやって よ 対応してないで す。 セルフホスト 強靭無敵最強 (でも大変) セルフホスト サービス利用 い け な い い け る

Slide 16

Slide 16 text

ということで Google CloudやAWSでC#を動かすと どうなるか見ていきましょう! 16

Slide 17

Slide 17 text

Google Cloudの基本 ● リソースや請求管理は「プロジェクト単位」 ● IAM ○ サービス同士の認証にはサービスアカウントを用いる ● インフラを運用しない(ほぼ) ○ Google Cloudのサービスはほとんどは運用しないことが前提 ポイント コンテナやKubernetesが使える方に向いているサービスとも言える。(個人の見解) 17

Slide 18

Slide 18 text

基本を見たところで。。。 Google CloudにBlazorアプリケーションを デプロイして動かしてみよう! 18

Slide 19

Slide 19 text

19 デモ

Slide 20

Slide 20 text

Google Cloudのサービス紹介 ● Cloud Run ● Artifact Registry ● Secret Manager ● Cloud Monitoring(モニタリングサービスなので紹介を割愛) 20

Slide 21

Slide 21 text

CloudRunとは コンテナを実行できるマネージドサービス 特徴 ● サーバレスコンピューティング ● 受信リクエストに合わせて、コンテナが自動的にスケール ● GitHubと連携 今回はジョブではなく、サービスとしてコンテナを実行 21 CloudRunの料金:https://cloud.google.com/run/pricing?hl=ja

Slide 22

Slide 22 text

Artifact Registryとは 22 次世代の Container Registry 特徴 ● ソフトウェアパッケージと Docker コンテナイメージを1 か所で保管 し、管理できる Caution 以前までContainer Registryが推奨されていましたが 現在ではArtifact Registryが推奨されています! 今回はCloudRunに使うコンテナのイメージを保存するために利用 Artifact Registryの料金:https://cloud.google.com/artifact-registry/pricing?hl=ja

Slide 23

Slide 23 text

Secret Managerとは 23 クラウド上でシークレットを管理するサービス 特徴 ● シークレットのバージョン管理:タグで特定のシークレットを呼び出す ● デフォルト暗号化 ● CloudRunと統合されている

Slide 24

Slide 24 text

構成図 24 Artifact Registry Cloud Run Secret Manager Blazor Server Momento Cache Cloud Monitoring

Slide 25

Slide 25 text

同じアプリケーションをAWSにデプロイします! 25

Slide 26

Slide 26 text

AWSの基本 ● リソースや請求管理は「アカウント単位」または「組織単位」 ○ ControlTowerを使うと利用サービスを組織単位でDenyできる ● IAM ○ ユーザー ○ ロール ○ グループ ● 責任共有モデル(システム全体をみた時にどのレイヤーまで誰が運用するか責任を持つか) 26

Slide 27

Slide 27 text

基本を見たところで。。。 AWSにBlazorアプリケーションを デプロイして動かしてみよう! 27

Slide 28

Slide 28 text

28 デモ

Slide 29

Slide 29 text

AWSのサービス紹介 ● AWS App Runner ● AWS Secret Manager ● Amazon CloudWatch(モニタリングサービスなので紹介を割愛) 29

Slide 30

Slide 30 text

AWS App Runnerとは コンテナを実行できるマネージドサービス 特徴 ● サーバレスコンピューティング ● 受信リクエストに合わせて、コンテナが自動的にスケール ● GitHub リポジトリと連携 30 AWS App Runnerの料金:https://aws.amazon.com/jp/apprunner/pricing/

Slide 31

Slide 31 text

AWS Secrets Managerとは クラウド上でシークレットを管理するサービス 特徴 ● App Runnerとの統合 ● AWS App Runnerの環境変数と統合されている 31 AWS Secrets Managerの料金:https://aws.amazon.com/jp/secrets-manager/pricing/

Slide 32

Slide 32 text

構成図 32 AWS Cloud AWS App Runner AWS Secrets Manager Amazon CloudWatch Momento Cache

Slide 33

Slide 33 text

余談:AWSにはAWS Deploy Tool for .NETというものがあります! 33 AWS Deploy Tool for .NET:https://aws.github.io/aws-dotnet-deploy/

Slide 34

Slide 34 text

余談:その他のデプロイ方法もAWS公式にあります! 34 AWSへのアプリケーションデプロイ:https://docs.aws.amazon.com/ja_jp/sdk-for-net/v3/developer-guide/deploying.html

Slide 35

Slide 35 text

New Relicでパフォーマンスをチェックする 35

Slide 36

Slide 36 text

Website Performance Monitoringとは URLさえあれば、Core Web Vitalsをチェックできる機能 36 Core Web Vitals:https://web.dev/articles/vitals?hl=ja#core-web-vitals

Slide 37

Slide 37 text

Cloud Run Google Cloudで実行されているBlazor Server 37

Slide 38

Slide 38 text

AWS App Runner AWSで実行されているBlazor Server 38

Slide 39

Slide 39 text

まとめ ● .NETと呼ばれるものには種類がある ● Google CloudとAWSの基本をおさらいしながらアプリケーションを実行 ○ Cloud RunとApp Runnerそれぞれでアプリを実行 ● Webベースならどこのクラウドにデプロイしても大して変わらない ○ しかしやはり、C#でWebアプリケーションを作るならAzureが一番良い ● 開発するときはGitHub Codespaces ● E2Eテストはmabl、APMならNew Relicが良いかも 39

Slide 40

Slide 40 text

40 Amazon Bedrock、Stability AIが考える Blazor Server (擬人化)