Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

クラウドインフラ構築における.NETとその他IaCの比較

Kento.Yamada
November 23, 2024

 クラウドインフラ構築における.NETとその他IaCの比較

.NETラボ 勉強会 2024年11月の登壇資料です。

スライド内のリンク

Observability as Codeによる設定の自動化
https://newrelic.com/jp/blog/how-to-relic/examples-observability-as-code-part-one

Observability as Code - Engineering Fundamentals Playbook
https://microsoft.github.io/code-with-engineering-playbook/observability/observability-as-code/

Azure Container Apps の .NET Aspire ダッシュボードを使用してリアルタイムのアプリ データを読み取る | Microsoft Learn
https://learn.microsoft.com/ja-jp/azure/container-apps/aspire-dashboard?pivots=azd

CDK for Terraform
https://developer.hashicorp.com/terraform/cdktf

Azure SDK for .NET の概要
https://learn.microsoft.com/ja-jp/dotnet/azure/sdk/azure-sdk-for-dotnet

Azure Export for Terraform の概要 | Microsoft Learn
https://learn.microsoft.com/ja-jp/azure/developer/terraform/azure-export-for-terraform/export-terraform-overview

(雑)Azure SDKで作成したリソースをaztfexportしてみた
https://zenn.dev/ymd65536/articles/azurerm_tf_export

Resource Manager | オラクル | Oracle 日本
https://www.oracle.com/jp/devops/resource-manager/

.NETラボ勉強会 12月
https://dotnetlab.connpass.com/event/333400/

Kento.Yamada

November 23, 2024
Tweet

More Decks by Kento.Yamada

Other Decks in Technology

Transcript

  1. 山田顕人 == Kento.Yamada 自己紹介 2 • 活動・仕事など ◦ .NETラボ運営、Azure PoC部

    ◦ 次世代監視基盤の開発、新しいSaaSの検証 • 受賞歴 ◦ Microsoft MVP for Developer Technologies ◦ LINE Expert ◦ Google Cloud Partner Top Engineer 2025 DataAnalytics ◦ Google Cloud Partner Tech Blog Challenge 2023 Cloud AI/ML部門 ◦ LAPRAS OUTPUT AWARD 2024 01 • 最近のトピック ◦ Google Cloud Partner Top Engineer 2025を取得(去年のリベンジ) ◦ サーバアーキテクチャをサーバレスにできてホッとしてる
  2. 今日お伝えする内容 3 導入 • .NET Conf 2024が開催された。個人的には.NET Aspireに注目 • .NET

    Aspireって.NET/C#によるオブザーバビリティのIaC(OaC)だよね • IaCってなんだっけ?課題にはどんなものがある? 本編 • 問題提起 • 技術選定 • .NET/C#でインフラを定義できないか検証した • 他のクラウドにおけるIaCについて
  3. 補足:OaC(Observability as Code)とは 9 “Observability as Code は、オブザーバビリティツールの設定をコーディングすること によって自動化するプロセスです” 引用:Observability

    as Codeによる設定の自動化 - NewRelic オブザーバビリティを自動化するための概念 (インフラのコード化にオブザーバビリティを足したもの)
  4. ちなみにMicrosoftのサイトにも記載あり 11 “As much as possible, configuration and management of

    observability assets such as cloud resource provisioning, monitoring alerts and dashboards must be managed as code. Observability as Code is achieved using any one of Terraform / Ansible / ARM Templates” 引用:Observability as Code - Engineering Fundamentals Playbook
  5. .NET/C#じゃなくてもIaCが実現できているのはなぜか 19 • Terraform / ARM Templates / Bicepがあるだろ •

    azd(Azure Developer CLI)があるだろ • CDK for Terraformがあるだろ ◦ これが一番理想に近い。(なお、Terraformが必要) ※ちなみに.NET AspireのAspire Dashboardはdotnet newしてazd upしたら完成 参考:Azure Container Apps の .NET Aspire ダッシュボードを使用してリアルタイム のアプリ データを読み取る | Microsoft Learn
  6. 補足:aztfexportとは 26 AzureリソースをTerraformとしてエクスポートできる 引用:Azure Export for Terraform の概要 | Microsoft

    Learn どのような方法で作ったとしてもエクスポートできる。 今回はSDKで構築したリソースをエクスポート
  7. Azure SDKとaztfexportの課題 29 • Azure SDKによる実装方法を理解しないといけない ◦ なお、サンプルはたくさんある。C#は古い文法 • コンストラクト/スタックという概念がない

    ◦ SDKを使ったソフトウェアの設計が重要 • aztfexportのインストールが必要 でも、C#でインフラを展開できるようになるのでGood(Terraformレス) ※C#による行数 > Terraformの行数
  8. AWS: Cloud Formation / AWS CDK 32 • Cloud Formation

    ◦ AzureでいうARMテンプレートのポジション ◦ とりあえずたくさん書いてインフラを定義するパワースタイル ◦ YAML or JSON • AWS CDK ◦ プログラミング言語でインフラを定義する(サンプルはTypeScriptが多い) ◦ でも、実際はCloud FormationのAPIを実行しているだけ
  9. Google Cloud: Jinja2 33 • Jinja2 ◦ Pythonで使えるテンプレートエンジンを使ってインフラを定義する ◦ 実態はPythonによるGoogle

    Cloud APIの実行 実際のところ、Jinja2を使うよりCloud SDKやgcloudコマンドで構築することが多い。 ※本番だとTerraformによるデプロイが多めには見える。
  10. Oracle Cloud Infrastructure: Terraform 34 引用:Resource Manager | オラクル |

    Oracle 日本 https://www.oracle.com/jp/devops/resource-manager/
  11. Azure: ARM Templates / Bicep 35 • ARM Templates ◦

    記述量は多め、Azureポータル上で確認できる • Bicep ◦ よく使われる方法 いろいろ書いてはいるけどもAzureにおいてはデプロイツールがたくさんあるので デプロイツールとうまいことコラボしましょう。