Azure Functions を Azure Container Apps にデプロイする 2 つの方法の比較
昨日、「Azure Container Apps に Java Azure 関数をデプロイする」というタイトルの記事を書きました。
そのエントリでは、Azure の統合管理機能の使用について言及しましたが、それが何を意味するのか、そしてそれがこの記事で以前の方法とどのように異なるのかを明確にしたいと思います。
古い方法: az contextapp create を使用して作成する
Azure Container Apps は、Azure のコンテナー実行環境の 1 つであり、コンテナー化されたサービスを実行できます。以前は、Azure Container Apps で Azure Functions を実行する場合は、次のコマンドを使用してインスタンスを作成していました。
az containerapp create \ --name general-container-app \ --resource-group $RESOURCE_GROUP_NAME \ --environment $CONTAINER_ENVIRONMENT \ --registry-server $CONTAINER_REGISTRY_SERVER \ --image $CONTAINER_REGISTRY_SERVER/$C_IMAGE_NAME:$C_IMAGE_TAG \ --target-port 80 \ --ingress external \ --query properties.configuration.ingress.fqdn
コマンドを実行すると、次のようなメッセージが表示されます。
Container app created. Access your app at https://general-container-app.niceocean-********.eastus.azurecontainerapps.io/
その後、curl コマンドを使用して Azure Functions サービスに接続できます。
curl https://general-container-app.niceocean-********.eastus.azurecontainerapps.io/api/httpexample?name=World
Azure Container Apps 環境にアクセスすると、general-container-app がコンテナ アプリとして作成され、この管理インターフェイスはデプロイされたコンテナ化されたアプリケーションで利用できることがわかります。
https://raw.githubusercontent.com/yoshioterada/Azure-Functions-Deploy-To-Azure-Container-Apps/main/images/ACA-Instance-for-Azure-Functions.png
新しいメソッド: az functionapp create を使用して作成する
新しい方法では、az contextapp create の代わりに az functionapp create コマンドを使用して、Azure Container Apps で Azure Functions を作成できます。
az functionapp create \ --name $AZURE_FUNCTION_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --environment $CONTAINER_ENVIRONMENT \ --storage-account $STORAGE_NAME \ --workload-profile-name "Consumption" \ --max-replicas 15 \ --min-replicas 1 \ --functions-version 4 \ --runtime java \ --image $CONTAINER_REGISTRY_SERVER/$C_IMAGE_NAME:$C_IMAGE_TAG \ --assign-identity
このコマンドを使用すると、Azure Functions が Azure Container Apps に作成され、管理インターフェイスにはそれが Function App であることが明確に表示されます。
これは、Azure Functions が専用の Azure Functions 管理インターフェイスを通じて管理できるようになり、他のコンテナー アプリケーションとは異なることを意味します。
ただし、Azure App Service で提供される管理機能と、コンテナ アプリ上の Azure Functions で利用できる管理機能の間には、いくつかの違いがあります。たとえば、診断ツール、展開機能などの特定の機能が利用できない場合があります。
参考: App Service 上の Azure Functions (ポータル)
比較のために、Azure App Service にデプロイされた Azure Functions の管理インターフェイスを次に示します。
App Service と Azure Container Apps の管理機能には次のような違いがあります。
- ピックアップ:
- Diagnose and solve problems - Microsoft Defender for Cloud - Events (preview) - Log stream - Deployment - App Service plan - Development Tools - Monitoring - Support + troubleshooting
特定の機能がないということは、機能が欠落していることを示唆していると考える人もいるかもしれません。
ただし、Azure Container Apps にデプロイすると、オペレーティング環境はコンテナベースになるため、デプロイと管理の方法が変わります。 Azure Functions 管理インターフェイスに含まれていない機能は、Azure Container Apps インターフェイスを通じて個別に管理する必要があります。
Azure Container Apps でのコンテナーの管理
az functionapp create コマンドを使用して Azure Container Apps 上に Azure Functions インスタンスを作成すると、コンテナー インスタンスを収容する新しいリソース グループが自動的に作成されます。
私の環境では、リソース グループ名は次の規則に従います:
$CONTAINER_ENVIRONMENT_FunctionApps_$UUID
指定した $AZURE_FUNCTION_NAME にちなんで名付けられた Azure Container Apps インスタンスが生成されたことがわかります。
このインスタンスをクリックすると、Azure Container Apps に固有の管理インターフェイスに移動し、そこで Azure Functions がコンテナー インスタンスとして実行されます。
Azure Container Apps は、Azure App Service とは異なる CI/CD およびデプロイ方法を提供します。また、Dapr や Service Connector など、コンテナー レベルで提供される機能を利用できるようになります。
Conclusion
Previously, it was possible to run Azure Functions by containerizing them in a container execution environment, but there was no dedicated management interface for Azure Functions.
With this new method, Azure Functions and Azure Container Apps have integrated, offering a container environment with an associated Azure Functions management interface.
I know some customers operate Azure Functions Container on Azure Kubernetes Service (AKS). Previously, they lacked a dedicated management interface. However, by deploying to Azure Container Apps, they can now use Azure Functions management while enjoying the simplicity of managing Azure Container Apps compared to managing operations on AKS.
The methods for deploying Azure Functions to Azure Container Apps are likely to evolve further. I look forward to seeing how this develops.
以上がAzure Functions を Azure Container Apps にデプロイする 2 つの方法の比較の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undress AI Tool
脱衣画像を無料で

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

JDBCトランザクションを正しく処理するには、最初に自動コミットモードをオフにし、次に複数の操作を実行し、結果に応じて最終的にコミットまたはロールバックする必要があります。 1。CONN.SETAUTOCOMMIT(FALSE)を呼び出して、トランザクションを開始します。 2。挿入や更新など、複数のSQL操作を実行します。 3。すべての操作が成功した場合はconn.commit()を呼び出し、データの一貫性を確保するために例外が発生した場合はconn.rollback()を呼び出します。同時に、リソースを使用してリソースを管理し、例外を適切に処理し、接続を密接に接続するために、接続の漏れを避けるために使用する必要があります。さらに、接続プールを使用してセーブポイントを設定して部分的なロールバックを達成し、パフォーマンスを改善するためにトランザクションを可能な限り短く保つことをお勧めします。

setupamaven/gradleprojectwithjax-rsdependencieslikejersey; 2.createarestresourceingnotationssuchas@pathand@get; 3.configuretheapplicationviaapplicationubclassorweb.xml;

Java.Timeパッケージのクラスを使用して、古い日付とカレンダーのクラスを置き換えます。 2。LocalDate、LocalDateTime、LocalTimeを通じて現在の日付と時刻を取得します。 3。of()メソッドを使用して特定の日付と時刻を作成します。 4.プラス/マイナスメソッドを使用して、時間を不正に増加させて短縮します。 5. ZonedDateTimeとZoneIDを使用して、タイムゾーンを処理します。 6。DateTimeFormatterを介したフォーマットおよび解析の文字列。 7.インスタントを使用して、必要に応じて古い日付型と互換性があります。現代のJavaでの日付処理は、java.timeapiを使用することを優先する必要があります。

Pre-formanceTartuptimeMemoryusage、quarkusandmicronautleadduetocopile-timeprocessingingandgraalvsupport、withquarkusoftentylightbetterine serverlessシナリオ。

依存関係の指示(di)isadesignpatternwhere objectsreceivedenciesiesedternally、setter、orfieldinoffiction.2.springframeworkusessaNnotationslike@component、@service、@autowiredwithjava Basedconfi

パフォーマンス分析ツールを使用してボトルネックを見つけ、開発とテスト段階でVisualVMまたはJProfilerを使用し、生産環境で非同期財産を優先します。 2。オブジェクトの作成を削減し、オブジェクトを再利用し、StringBuilderを使用して文字列のスプライシングを置き換え、適切なGC戦略を選択します。 3.コレクションの使用を最適化し、シーンに応じて初期容量を選択し、プリセットします。 4.同時性を最適化し、同時コレクションを使用し、ロックの粒度を低減し、スレッドプールを合理的に設定します。 5. JVMパラメーターを調整し、合理的なヒープサイズと低遅延のゴミコレクターを設定し、GCログを有効にします。 6.コードレベルでの反射を避け、ラッパークラスを基本タイプに置き換え、初期化を遅延させ、最終と静的を使用します。 7。JMHと組み合わせた連続性能テストと監視

Mavenは、Javaプロジェクト管理と建設の標準ツールです。答えは、POM.xmlを使用してプロジェクト構造、依存関係管理、建設ライフサイクルの自動化、プラグイン拡張機能を標準化するという事実にあります。 1. pom.xmlを使用して、GroupID、artifactid、バージョン、依存関係を定義します。 2。MVNCLEAN、コンパイル、テスト、パッケージ、インストール、展開などのマスターコアコマンド。 3.依存関係管理と除外を使用して、依存関係バージョンと競合を管理します。 4.マルチモジュールプロジェクト構造を通じて大規模なアプリケーションを整理し、親POMによって均一に管理されます。 5。

thejvmenablesjavaの「writeonce、runany where "capabilitybyexcuting byteCodeThethermainComponents:1。theClassLoaderSubSystemloads、links、andinitializes.classfilesusingbootStrap、拡張、およびアプリケーションクラスローロー、
