>100 Views
July 22, 25
スライド概要
Azure Functionsの内部構造とコード(コード、トリガー、バインディング)の構造を理解することでサービスの動きや特徴を理解することを目的としたスライドです。
おまけで当日行った2つ目のLT、Local Foundryを動かしてみたのスライドも付属しております。
初心者向けの内容となっております。
イベント:
2025/07/18 クラスメソッド札幌オフィス10F
https://jazug.connpass.com/event/358553/
ゆるいAzure Functions 構造を知るとわかりやすいAzure Functions 株式会社 エーピーコミュニケーションズ 大久保直紀 1
大久保直紀 ‣ ロール:バックエンド寄りの何でも屋 ‣ 最近の業務:エージェントアプリケーションの企画、設 計、開発 ‣ 好きな技術:LangChainバンザイ! ‣ 趣味:自転車、食べ歩き ‣ 年齢:38歳 ‣ 所属:株式会社エーピーコミュニケーションズ メッセージ
今日のテーマは? Azure Functions イベント駆動型サーバレスサービス 言語:C#, Java, JS/TS, Python, PowerShellにネ イティブ対応 実行環境:Linux、Windows 好きなポイント:宣言的イベントトリガー 3
Azure Functionsのアーキテクチャ レイヤー別に見るAzure Functions
Azure Functionsのレイヤ ‣ サービスレイヤー ‣ スケールユニットレイヤー ‣ コンポーネントレイヤー ‣ プロセスレイヤー Azure Functionsのシステムとしてのレイヤーは 主に上記4つに分類して理解すると頭に入りや すいです。 あるレイヤーは下位のレイヤーを構成要素とし て持っており一層ずつ説明していきます。 5
サービスレイヤーの構造 ‣ App Service(ベース) ‣ FrontEnd(ロードバランサー) ‣ Worker Instance(アプリケーショ ン) Azure Functions は App Serviceの上に成り立ってる 6
スケールユニットレイヤーの構造 ‣ フロントエンド(ロードバランサ) ‣ サーバー:Kester ‣ リバースプロキシ:Yard ‣ Worker Instance ‣ Hostプロセス(共通処理) ‣ Workerプロセス(ロジック部 分) ※.NET8からisolated processに統一、 以前のものはin-process(host/worker が同一プロセス) 7
スケールユニットレイヤーの構造:拡大図 8
コンポーネントレイヤーの構造 ‣ Host ‣ サーバー:Kester ‣ リバースプロキシ:Yard ‣ Worker ‣ Docker(カスタムイメージ) ‣ Kudu(公式イメージ) ‣ Windows Web App(カスタムイ メージ) ※KestrelはAzure Learnではチョウゲンポウと 呼ばれてます 9
プロセスレイヤーの構造 ‣ Hostプロセス ‣ httpサーバープロセス ‣ WebJobSDKによるトリガー管理、バイン ディングを行うプロセス ‣ スケーリング&ライフサイクル管理プロセス ‣ Workerプロセス ‣ 関数コードの実行プロセス ‣ プロセス管理プロセス ‣ その他実行環境プロセス 10
Azure Functionsのコードの構造 従量課金プラン(コンサンプションプラン)で流れを確認
Azure Functions開発の流れ ‣ 準備 ‣ イベントを起こすリソースを作る ‣ Azure Functions作成 ‣ 開発作業 ‣ プロジェクト作成 ‣ 関数の追加と実装 ‣ コードの実装 ‣ テストする ‣ Azure Functionsにデプロイする 12
開発環境(代表例) ‣ IDE: VSCode ‣ SDK:Azure Functions Core Tool ‣ 言語:Azure Functionsのランタイム に対応したバージョンの言語 ‣ ストレージ:Azurite(コンテナ) ※注1 ‣ クライアント:Podmanなどお好み ‣ ローカルホスト:Docker+Azure Functions Image ※注1 Azure Storage Emulatorは非推奨 13
Azure Functions作成 ‣ 作成方法 ‣ IaC(bicep or terraform) ‣ az command ‣ ポータル操作 ‣ 作成物 ‣ App Service Plan ‣ Storage Account(コードの保存先) ‣ Blob: host, secret, scm周りのファイル ‣ Azure Files:コードの置き先、SMB ‣ Function App(関数サービスの定義) ‣ その他:Application Insight、GitHub Actionsなど 14
プロジェクトを立ち上げ ‣ 作成方法 ‣ pluginからcreate project ‣ 作成物 ‣ main関数 ‣ host.json ‣ local.settings.jsonその他 (.gitignore, depe ‣ ndencyなど) 15
出力したてのAzure Functions 16
関数の作成 ‣ 関数定義(VSCode pluginやコマンド) ‣ トリガー(必須):イベントを起こすAzureリソースと接続URLを 指定(コマンドかプラグイン操作で生成) ‣ 入力バインド(任意):イベントデータと一緒にデータを受け取る ときは関数にアノテーション ‣ 出力バインド(任意):関数の出力を指定したリソースに渡すため のアノテーション ‣ 関数の処理 ‣ 入力 ‣ イベント:入力元の定義による ‣ データ:入力バインドで指定したデータ(Cosmosのドキュメ ントやSQLレコード、Blobのファイルなど) ‣ ロジック:普通のアプリケーションロジック ‣ 出力 ‣ 出力バインドを行う場合は遷移先に合わせて、jsonやキューオ ブジェクトなどを返す ‣ 何も返さないと成功 17
バインディングパターン あくまでバインディングはオプショナル 18
関数の構造:イベントデータの分類 ‣ EventGrid ‣ Cloud Event v1.0 ‣ Event Grid Trigger ‣ サービス固有 ‣ 実装するもの ‣ Service Busトリガー ‣ Event Hubトリガー ‣ Httpトリガー ポイント:Event Grid経由で発火すると噛ませるとインターフェースが揃いやすい 19
Azure Functionsのゆるポイント 構造から見るゆるいところ
ゆるポイント ‣ トリガーとバインディングを定義する だけでパイプラインが成立するところ ‣ ロジックだけで書けばいい ‣ グルーコードがいらない ‣ Consumption Plan ‣ Azure Filesを使っているので、そこ にツールを置けてしまう 開発者体験が良い! 21
おまけ:Foundry Localを動か してみる Azure製ローカルLLM管理ツールの現状と将来について 株式会社 エーピーコミュニケーションズ 大久保直紀 22
Foundry Localとは? ‣ オンデバイスでLLMを動かすため のツール ‣ モデル管理 ‣ Azure AI Foundryのカタログ と同期 ‣ 審査済みのモデル ‣ Hugging Face model ‣ OpenAIのAPI互換でモデル公開 ローカル環境をLLM PaaS化するツール 23
24
動かしてみます
現時点では? ‣ 開発者目線だとOllamaと変わらな い ‣ 運用やML目線だとAzure AI Foundry上ですでにカタログ管理 していて尚且つ、それをGPUクラ スターに直ぐに載せたいニーズに は刺さりそう 26
噂話 Model Catalog Integrations A closer examination of the Foundry’s catalog access reveals several notable highlights: • Foundry Local: Microsoft’s own curated set of foundational and task-speci c models, including some tightly integrated with Microsoft Graph and OS-level services. • Ollama: A third-party catalog, with special emphasis on on-device LLMs for language, vision, and multimodal tasks. • NVIDIA NIMs: NVIDIA’s microservice-style inference endpoints, ideal for deploying state-of-the-art models with GPU backing for enterprise-scale tasks. The interoperability between catalogs makes Foundry adaptable. Whether sourcing a foundation model on-device or deploying a massive LLM with GPU acceleration, the path is smoother than ever. 27
‣ Japan PaaS Support Team Blog ‣ Azure Functions(関数アプリ)の内部アーキテクチャ概要や関連する用 語について ‣ App Service を構成する主要な要素とそれぞれの役割 ‣ Windows Forum ‣ The Visions Behind AI Foundry 28