Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Azureのコアサーバーレス Azure Functions

Azureのコアサーバーレス Azure Functions

Serverless Meetup Fukuoka Re:bootの資料です
https://serverless.connpass.com/event/305300/

Yuta Matsumura

February 16, 2024
Tweet

More Decks by Yuta Matsumura

Other Decks in Technology

Transcript

  1. #serverlessfukuoka 松村 優大 (MLBお兄さん) Currently working for © 2024 Yuta

    Matsumura. 株式会社オルターブース Chief Technical Architect Microsoft MVP for Developer Technologies Microsoft Top Partner Engineer Award C#, PHP, Azure, GitHub が好き #fukuten #devblogradio の中の人 @tsubakimoto_s
  2. #serverlessfukuoka Microsoft Azure • Microsoft が提供するパブリッククラウドサービスです • https://azure.microsoft.com/ • 商用提供は

    2010年2月 で、今年で14周年になります • 日本国内リージョンは 2014年2月 に開設しました • 200以上のサービスが提供されています © 2024 Yuta Matsumura.
  3. #serverlessfukuoka オンプレミス ネットワーク ストレージ サーバー 仮想化 OS ミドルウェア ランタイム データ

    アプリケーション ユ ー ザ ー 管 理 IaaS ネットワーク ストレージ サーバー 仮想化 OS ミドルウェア ランタイム データ アプリケーション ユ ー ザ ー 管 理 ベ ン ダ ー 管 理 PaaS ネットワーク ストレージ サーバー 仮想化 OS ミドルウェア ランタイム データ アプリケーション ユ ー ザ ー 管 理 ベ ン ダ ー 管 理 SaaS ネットワーク ストレージ サーバー 仮想化 OS ミドルウェア ランタイム データ アプリケーション ベ ン ダ ー 管 理 © 2024 Yuta Matsumura.
  4. #serverlessfukuoka 1. フルマネージドサービス • サーバーの“管理”が不要 2. 柔軟なスケーラビリティ • ゼロ~数万のスケール 3.

    従量課金モデル • 実行に要した時間やリソースに対する課金 PaaS ネットワーク ストレージ サーバー 仮想化 OS ミドルウェア ランタイム データ アプリケーション ユ ー ザ ー 管 理 ベ ン ダ ー 管 理 © 2024 Yuta Matsumura.
  5. #serverlessfukuoka Azure Serverless © 2023 Yuta Matsumura. Azure Kubernetes Service

    Azure Functions Azure Logic Apps Azure App Services Azure Container Apps © 2024 Yuta Matsumura.
  6. #serverlessfukuoka © 2024 Yuta Matsumura. • 標準ランタイム • C#, Java,

    JavaScript, Python, PowerShell, TypeScript • カスタムハンドラー • Go, Rust, Deno など
  7. #serverlessfukuoka public static class BlobFunction { [Function(nameof(BlobFunction))] [BlobOutput("sample/{name}-output.txt")] public static

    string Run( [BlobTrigger("sample/{name}")] string myTriggerItem, [BlobInput("sample/sample1.txt")] string myBlob, FunctionContext context) { return "blob-output content"; } } © 2024 Yuta Matsumura. Trigger Input binding Output binding 出力されるBlob
  8. #serverlessfukuoka Architecture © 2024 Yuta Matsumura. App Service Front End

    ロードバ ランサー App Service Plan: Workerインスタンス Function App Function Host Language Worker 関数コード Request https://azure.github.io/jpazpaas/2023/08/24/azure-functions-words-relative-management.html
  9. #serverlessfukuoka Azure Functions Core Tools • Azure Functions のローカル開発用 CLI

    • 関数作成、実行、テスト、デプロイなどを支援 • 現在は v4 の使用を推奨 © 2024 Yuta Matsumura. # via npm npm i -g azure-functions-core-tools@4 --unsafe-perm true # via winget winget install Microsoft.AzureFunctionsCoreTools # via homebrew brew tap azure/functions brew install azure-functions-core-tools@4
  10. #serverlessfukuoka Flex Consumption plan • Azure Functionsの「痒い所に手が届く」新プラン • プライベートプレビュー中なので申込制です •

    基本的にこのプランで いいんじゃない? © 2024 Yuta Matsumura. https://techcommunity.microsoft.com/t5/apps-on-azure-blog/announcing-azure-functions-flex-consumption-sign-up-for-the/ba-p/3983621
  11. #serverlessfukuoka Azure Cosmos DB Change feed • Azure Cosmos DB

    • グローバル分散型のマルチモデルデータベース • JSON Doc, PostgreSQL, Mongo DB, Cassandra, Gremlin, Table • Azure Cosmos DB のコンテナー(≒テーブル)に対する 変更をトリガーにして関数を実行する仕組み • 検知:アイテムの作成、アイテムの更新 © 2024 Yuta Matsumura. https://azure.microsoft.com/ja-jp/products/cosmos-db https://learn.microsoft.com/ja-jp/azure/cosmos-db/change-feed
  12. #serverlessfukuoka [Function("Feed")] public void Run( [CosmosDBTrigger( databaseName: "ToDoList", containerName: "Items",

    Connection = "CosmosDbConnectionString", LeaseContainerName = "leases", CreateLeaseContainerIfNotExists = true)] IReadOnlyList<TodoItem> input) { if (input != null && input.Count > 0) { _logger.LogInformation(input[0].id); _logger.LogInformation(input[0].description); } } © 2024 Yuta Matsumura. Cosmos DB binding 変更アイテムの情報
  13. #serverlessfukuoka Microsoft.Azure.WebJobs.Extensions.OpenAI • Azure Functions に OpenAI や Azure OpenAI

    Service のバイ ンドを実装する拡張機能 • バインドを通じて以下の機能を利用可能 • Text completions, Chat bots, Assistants • Embeddings generators, Semantic search • 実験的な(experimental)プロジェクト © 2024 Yuta Matsumura. https://github.com/Azure/azure-functions-openai-extension/ https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.OpenAI
  14. #serverlessfukuoka public class WhoIs { [FunctionName(nameof(WhoIs))] public static IActionResult Run(

    [HttpTrigger( AuthorizationLevel.Function, Route = "whois/{name}")] HttpRequest req, [TextCompletion("Who is {name}?")] TextCompletionResponse response) { var content = response.Content; return new OkObjectResult(content); } } © 2024 Yuta Matsumura. OpenAI binding OpenAIの回答
  15. #serverlessfukuoka Azure Developer CLI (azd) • Azure 向けに構成された IaC (bicep)

    やアプリケーションに 関するワークフローを実行するためのコマンドライン • 「よくある構成」はテンプレート化されている © 2024 Yuta Matsumura. https://learn.microsoft.com/ja-jp/azure/developer/azure-developer-cli/overview コマンド 内容 azd init アプリケーションの初期化 azd provision Azure リソースのプロビジョニング (構成) azd deploy アプリケーションのデプロイ azd up azd provision & azd deploy