Azureのコアサーバーレス Azure Functions
by
Yuta Matsumura
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
#serverlessfukuoka Azureのコアサーバーレス Azure Functions 2024/02/17 Serverless Meetup Fukuoka Yuta Matsumura © 2024 Yuta Matsumura.
Slide 2
Slide 2 text
#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
Slide 3
Slide 3 text
#serverlessfukuoka © 2024 Yuta Matsumura.
Slide 4
Slide 4 text
#serverlessfukuoka Microsoft Azure • Microsoft が提供するパブリッククラウドサービスです • https://azure.microsoft.com/ • 商用提供は 2010年2月 で、今年で14周年になります • 日本国内リージョンは 2014年2月 に開設しました • 200以上のサービスが提供されています © 2024 Yuta Matsumura.
Slide 5
Slide 5 text
#serverlessfukuoka オンプレミス ネットワーク ストレージ サーバー 仮想化 OS ミドルウェア ランタイム データ アプリケーション ユ ー ザ ー 管 理 IaaS ネットワーク ストレージ サーバー 仮想化 OS ミドルウェア ランタイム データ アプリケーション ユ ー ザ ー 管 理 ベ ン ダ ー 管 理 PaaS ネットワーク ストレージ サーバー 仮想化 OS ミドルウェア ランタイム データ アプリケーション ユ ー ザ ー 管 理 ベ ン ダ ー 管 理 SaaS ネットワーク ストレージ サーバー 仮想化 OS ミドルウェア ランタイム データ アプリケーション ベ ン ダ ー 管 理 © 2024 Yuta Matsumura.
Slide 6
Slide 6 text
#serverlessfukuoka 1. フルマネージドサービス • サーバーの“管理”が不要 2. 柔軟なスケーラビリティ • ゼロ~数万のスケール 3. 従量課金モデル • 実行に要した時間やリソースに対する課金 PaaS ネットワーク ストレージ サーバー 仮想化 OS ミドルウェア ランタイム データ アプリケーション ユ ー ザ ー 管 理 ベ ン ダ ー 管 理 © 2024 Yuta Matsumura.
Slide 7
Slide 7 text
#serverlessfukuoka Azure Serverless © 2023 Yuta Matsumura. Azure Kubernetes Service Azure Functions Azure Logic Apps Azure App Services Azure Container Apps © 2024 Yuta Matsumura.
Slide 8
Slide 8 text
#serverlessfukuoka © 2024 Yuta Matsumura.
Slide 9
Slide 9 text
#serverlessfukuoka © 2024 Yuta Matsumura. • 標準ランタイム • C#, Java, JavaScript, Python, PowerShell, TypeScript • カスタムハンドラー • Go, Rust, Deno など
Slide 10
Slide 10 text
#serverlessfukuoka イベントドリブン トリガー • 関数を実行する起点となる イベント バインド • 関数に別のリソースを接続する 方法 • データの出力先とすることも できる(複数可) © 2024 Yuta Matsumura.
Slide 11
Slide 11 text
#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
Slide 12
Slide 12 text
#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
Slide 13
Slide 13 text
#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
Slide 14
Slide 14 text
#serverlessfukuoka Deployment © 2024 Yuta Matsumura. GitHub Actions Azure Pipelines Visual Studio Visual Studio Code CLI
Slide 15
Slide 15 text
#serverlessfukuoka Patterns © 2024 Yuta Matsumura. https://learn.microsoft.com/ja-jp/azure/architecture/serverless-quest/reference-architectures
Slide 16
Slide 16 text
#serverlessfukuoka Durable Functions Azure Functions にステートフルな関数を実装することがで きる拡張機能 © 2024 Yuta Matsumura. https://learn.microsoft.com/ja-jp/azure/azure-functions/durable/
Slide 17
Slide 17 text
#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
Slide 18
Slide 18 text
#serverlessfukuoka Azure Cosmos DB Change Feed © 2024 Yuta Matsumura.
Slide 19
Slide 19 text
#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
Slide 20
Slide 20 text
#serverlessfukuoka [Function("Feed")] public void Run( [CosmosDBTrigger( databaseName: "ToDoList", containerName: "Items", Connection = "CosmosDbConnectionString", LeaseContainerName = "leases", CreateLeaseContainerIfNotExists = true)] IReadOnlyList input) { if (input != null && input.Count > 0) { _logger.LogInformation(input[0].id); _logger.LogInformation(input[0].description); } } © 2024 Yuta Matsumura. Cosmos DB binding 変更アイテムの情報
Slide 21
Slide 21 text
#serverlessfukuoka © 2024 Yuta Matsumura. https://learn.microsoft.com/ja-jp/azure/architecture/databases/idea/serverless-apps-using-cosmos-db
Slide 22
Slide 22 text
#serverlessfukuoka Azure Functions x OpenAI © 2024 Yuta Matsumura. New
Slide 23
Slide 23 text
#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
Slide 24
Slide 24 text
#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の回答
Slide 25
Slide 25 text
#serverlessfukuoka © 2024 Yuta Matsumura. 大谷翔平は、メジャーリーグベースボール(MLB)のロサンゼルス・エンゼル スでプレーする日本のプロ野球投手、指名打者です。MLB史上、先発投手と レギュラーを兼任したのは1919年のベーブ・ルース以来となる。
Slide 26
Slide 26 text
#serverlessfukuoka © 2024 Yuta Matsumura. こんな構成をデプロイしたい
Slide 27
Slide 27 text
#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
Slide 28
Slide 28 text
#serverlessfukuoka © 2024 Yuta Matsumura. https://azure.github.io/awesome-azd/
Slide 29
Slide 29 text
#serverlessfukuoka ご清聴ありがとうございました © 2024 Yuta Matsumura.