Azure Functions 런타임 버전 개요Azure Functions runtime versions overview

Azure Functions 런타임의 두 주요 버전이 있습니다. 1.x 및 2.x입니다.There are two major versions of the Azure Functions runtime: 1.x and 2.x. 새로운 기능이 추가되고 개선이 적용되고 있는 현재 버전은 2.x이지만 두 가지 모두 프로덕션 시나리오에서 지원됩니다.The current version where new feature work and improvements are being made is 2.x, though both are supported for production scenarios. 여기에서는 두 버전의 차이점, 각 버전을 만드는 방법, 1.x에서 2.x로 업그레이드하는 방법에 대해 자세히 설명합니다.The following details some of the differences between the two, how you can create each version, and upgrade from 1.x to 2.x.

참고

이 문서에서는 클라우드 서비스 Azure Functions를 참조합니다.This article refers to the cloud service Azure Functions. 온-프레미스에서 Azure Functions를 실행할 수 있는 미리 보기 제품에 대한 자세한 내용은 Azure Functions 런타임 개요를 참조하세요.For information about the preview product that lets you run Azure Functions on-premises, see the Azure Functions Runtime Overview.

교차 플랫폼 개발Cross-platform development

버전 2.x 런타임은 .NET Core 2에서 실행되며, macOS 및 Linux를 포함하여 .NET Core에서 지원하는 모든 플랫폼에서 실행할 수 있습니다.The version 2.x runtime runs on .NET Core 2, which enables it to run on all platforms supported by .NET Core, including macOS and Linux. .NET Core에서 실행하면 플랫폼 간 개발 및 호스팅 시나리오가 가능합니다.Running on .NET Core enables cross-platform development and hosting scenarios.

비교해보면 버전 1.x 런타임은 Azure Portal 또는 Windows 컴퓨터의 개발 및 호스팅만 지원합니다.By comparison, the version 1.x runtime only supports development and hosting in the Azure portal or on Windows computers.

LanguagesLanguages

버전 2.x 런타임은 새 언어 확장성 모델을 사용합니다.The version 2.x runtime uses a new language extensibility model. 버전 2.x에서는 함수 앱의 모든 함수가 동일한 언어를 공유해야 합니다.In version 2.x, all functions in a function app must share the same language. 함수 앱의 함수 언어는 앱을 만들 때 선택합니다.The language of functions in a function app is chosen when creating the app.

Azure Functions 1.x 실험 언어는 새 모델을 사용하도록 업데이트되지 않을 예정이므로 2.x에서 지원되지 않습니다.Azure Functions 1.x experimental languages won't be updated to use the new model, so they aren't supported in 2.x. 다음 표는 각 런타임 버전에서 현재 지원되는 프로그래밍 언어를 나타냅니다.The following table indicates which programming languages are currently supported in each runtime version.

언어Language 1.x1.x 2.x2.x
C#C# GA(.NET Framework 4.7)GA (.NET Framework 4.7) GA (.NET Core 2.2)GA (.NET Core 2.2)
JavaScriptJavaScript GA(Node 6)GA (Node 6) GA(Node 8 & 10)GA (Node 8 & 10)
F#F# GA(.NET Framework 4.7)GA (.NET Framework 4.7) GA (.NET Core 2.2)GA (.NET Core 2.2)
JavaJava N/AN/A GA (Java 8)GA (Java 8)
PowerShellPowerShell 실험적Experimental Preview (PowerShell Core 6)Preview (PowerShell Core 6)
PythonPython 실험적Experimental GA (Python 3.6. x)GA (Python 3.6.x)
TypeScriptTypeScript 실험적Experimental GA (트랜스 파일 하려면에서 JavaScript로 지원 됨)GA (supported through transpiling to JavaScript)
BashBash 실험적Experimental 해당 사항 없음N/A
일괄 처리(.cmd, .bat)Batch (.cmd, .bat) 실험적Experimental N/AN/A
PHPPHP 실험적Experimental N/AN/A

언어 지원 변경 계획에 대한 정보는 Azure 로드맵을 참조하세요.For information about planned changes to language support, see Azure roadmap.

자세한 내용은 지원 언어를 참조하세요.For more information, see Supported languages.

버전 1.x에서 실행Run on version 1.x

기본적으로 Azure Portal에서 만든 함수 앱은 버전 2.x로 설정됩니다.By default, function apps created in the Azure portal are set to version 2.x. 가능한 경우 새 기능을 위한 투자가 진행될 이 런타임 버전을 사용하는 것이 좋습니다.When possible, you should use this runtime version, where new feature investments are being made. 필요한 경우 버전 1.x 런타임에서 함수 앱을 계속 실행할 수 있습니다.If you need to, you can still run a function app on the version 1.x runtime. 함수 앱을 만든 후, 함수를 추가하기 전에만 런타임 버전을 변경할 수 있습니다.You can only change the runtime version after you create your function app but before you add any functions. 런타임 버전을 1.x로 고정하는 방법을 알아보려면 현재 런타임 버전 확인 및 업데이트를 참조하세요.To learn how to pin the runtime version to 1.x, see View and update the current runtime version.

1.x에서 2.x로 마이그레이션Migrating from 1.x to 2.x

버전 1.x 런타임 사용하도록 작성된 기존 앱을 버전 2.x를 대신 사용하도록 마이그레이션할 수 있습니다.You may choose to migrate an existing app written to use the version 1.x runtime to instead use version 2.x. 수행해야 하는 대부분의 변경은 .NET Framework 4.7과 .NET Core 2 간의 C# API 변경과 같은 언어 런타임의 변경과 관련되어 있습니다.Most of the changes you need to make are related to changes in the language runtime, such as C# API changes between .NET Framework 4.7 and .NET Core 2. 또한 선택한 언어 런타임과 코드 및 라이브러리가 호환되는지 확인해야 합니다.You'll also need to make sure your code and libraries are compatible with the language runtime you choose. 마지막으로 아래에 강조 표시된 트리거, 바인딩 및 기능의 변경 내용을 기록해 두어야 합니다.Finally, be sure to note any changes in trigger, bindings, and features highlighted below. 최상의 마이그레이션 결과를 얻으려면 버전 2.x에 대한 새 함수 앱을 만들고 기존 버전 1.x 함수 코드를 새 앱으로 이식해야 합니다.For the best migration results, you should create a new function app for version 2.x and port your existing version 1.x function code to the new app.

트리거 및 바인딩의 변경 내용Changes in triggers and bindings

버전 2.x를 사용하려면 앱의 함수에 사용되는 특정 트리거 및 바인딩의 확장을 설치해야 합니다.Version 2.x requires you to install the extensions for specific triggers and bindings used by the functions in your app. 유일한 예외는 확장이 필요 없는 이 HTTP 및 타이머 트리거입니다.The only exception for this HTTP and timer triggers, which don't require an extension. 자세한 내용은 바인딩 확장 등록 및 설치를 참조하세요.For more information, see Register and install binding extensions.

버전 간에 function.json 또는 함수의 특성도 일부 변경되었습니다.There have also been a few changes in the function.json or attributes of the function between versions. 예를 들어, 이벤트 허브 path 속성은 이제 eventHubName입니다.For example, the Event Hub path property is now eventHubName. 각 바인딩의 설명서에 대한 링크는 기존 바인딩 테이블을 참조하세요.See the existing binding table for links to documentation for each binding.

기능 변경Changes in features and functionality

새 버전에서 제거, 업데이트 또는 대체된 일부 기능입니다.A few features that have also been removed, updated, or replaced in the new version. 이 섹션에서는 버전 1.x를 사용한 후에 버전 2.x에서 확인된 변경 내용을 자세히 설명합니다.This section details the changes you see in version 2.x after having used version 1.x.

버전 2.x에서 다음과 같은 사항이 변경되었습니다.In version 2.x, the following changes were made:

  • HTTP 엔드포인트를 호출하기 위한 키는 항상 Azure Blob Storage에 암호화된 상태로 저장됩니다.Keys for calling HTTP endpoints are always stored encrypted in Azure Blob storage. 버전 1.x에서 키는 기본적으로 Azure File Storage에 저장되었습니다.In version 1.x, keys were stored in Azure File storage be default. 앱을 버전 1.x에서 버전 2.x로 업그레이드할 때 파일 스토리지에 있는 기존 암호가 다시 설정됩니다.When upgrading an app from version 1.x to version 2.x, existing secrets that are in file storage are reset.

  • 버전 2.x 런타임에서는 웹후크 공급자가 기본적으로 지원되지 않습니다.The version 2.x runtime doesn't include built-in support for webhook providers. 성능 향상을 위해 이렇게 변경되었습니다.This change was made to improve performance. HTTP 트리거를 여전히 웹후크에 대한 엔드포인트로 사용할 수 있습니다.You can still use HTTP triggers as endpoints for webhooks.

  • 호스트 구성 파일(host.json)은 비워 두거나 문자열 "version": "2.0"을 포함해야 합니다.The host configuration file (host.json) should be empty or have the string "version": "2.0".

  • 모니터링을 향상시키기 위해 AzureWebJobsDashboard 설정을 사용하는 포털의 WebJobs 대시보드가 APPINSIGHTS_INSTRUMENTATIONKEY 설정을 사용하는 Azure Application Insights로 바뀌었습니다.To improve monitoring, the WebJobs dashboard in the portal, which used the AzureWebJobsDashboard setting is replaced with Azure Application Insights, which uses the APPINSIGHTS_INSTRUMENTATIONKEY setting. 자세한 내용은 Azure Functions 모니터링을 참조하세요.For more information, see Monitor Azure Functions.

  • 함수 앱의 모든 함수가 동일한 언어를 공유해야 합니다.All functions in a function app must share the same language. 함수 앱을 만들 때 앱의 런타임 스택을 선택해야 합니다.When you create a function app, you must choose a runtime stack for the app. 런타임 스택은 애플리케이션 설정의 FUNCTIONS_WORKER_RUNTIME 값으로 지정됩니다.The runtime stack is specified by the FUNCTIONS_WORKER_RUNTIME value in application settings. 이 요구 사항은 공간 효율성 및 시작 시간을 개선하기 위해 추가되었습니다.This requirement was added to improve footprint and startup time. 로컬로 개발하는 경우 local.settings.json 파일에 이 설정을 포함해야 합니다.When developing locally, you must also include this setting in the local.settings.json file.

  • App Service 계획의 함수에 대한 기본 시간 제한은 30분으로 변경되었습니다.The default timeout for functions in an App Service plan is changed to 30 minutes. host.json에서 functionTimeout 설정을 사용하여 수동으로 제한 시간을 다시 무제한으로 변경할 수 있습니다.You can manually change the timeout back to unlimited by using the functionTimeout setting in host.json.

  • HTTP 동시성 제한은 기본값으로 인스턴스당 동시 요청 수 100개를 갖는 사용 계획 함수에 대해 기본적으로 구현됩니다.HTTP concurrency throttles are implemented by default for consumption plan functions, with a default of 100 concurrent requests per instance. 이 설정은 host.json 파일의 maxConcurrentRequests 설정에서 변경할 수 있습니다.You can change this in the maxConcurrentRequests setting in the host.json file.

  • .NET core 제한때문에 F # 스크립트(.fsx) 함수에 대한 지원이 제거되었습니다.Because of .NET core limitations, support for F# script (.fsx) functions has been removed. 컴파일된 F# 함수(.fs)는 계속 지원됩니다.Compiled F# functions (.fs) are still supported.

  • Event Grid 트리거 웹후크의 URL 형식은 https://{app}/runtime/webhooks/{triggerName}으로 변경되었습니다.The URL format of Event Grid trigger webhooks has been changed to https://{app}/runtime/webhooks/{triggerName}.

로컬에서 개발한 애플리케이션 마이그레이션Migrating a locally developed application

버전 1.x 런타임을 사용하여 로컬로 개발한 기존 함수 앱 프로젝트가 있을 수 있습니다.You may have existing function app projects that you developed locally using the version 1.x runtime. 버전 2.x로 업그레이드하려면 버전 2.x용 로컬 함수 앱 프로젝트를 만든 후 기존 코드를 새 앱으로 이식해야 합니다.To upgrade to version 2.x, you should create a local function app project against version 2.x and port your existing code into the new app. 기존 프로젝트 및 코드를 수동으로 업데이트할 수 있습니다(일종의 "전체" 업그레이드).You could manually update the existing project and code, a sort of "in-place" upgrade. 그러나 버전 1.x와 버전 2.x 간에는 아직도 많은 기능 개선이 필요합니다.However, there are a number of other improvements between version 1.x and version 2.x that you may still need to make. 예를 들어 C#의 디버깅 개체가 TraceWriter에서 ILogger로 변경되었습니다.For example, in C# the debugging object was changed from TraceWriter to ILogger. 새 버전 2.x 프로젝트를 만들어 최신 버전 2.x 템플릿을 기준으로 하는 업데이트된 함수로 시작합니다.By creating a new version 2.x project, you start off with updated functions based on the latest version 2.x templates.

Visual Studio 런타임 버전Visual Studio runtime versions

Visual Studio에서 프로젝트를 만들 때 런타임 버전을 선택합니다.In Visual Studio, you select the runtime version when you create a project. Visual Studio용 Azure Functions 도구는 둘 다 주 런타임 버전을 지원합니다.Azure Functions tools for Visual Studio supports both major runtime versions. 디버깅 및 게시를 수행할 때 프로젝트 설정에 따라 올바른 버전이 사용됩니다.The correct version is used when debugging and publishing based on project settings. 버전 설정은 .csproj 파일의 다음 속성에 정의됩니다.The version settings are defined in the .csproj file in the following properties:

버전 1.xVersion 1.x
<TargetFramework>net461</TargetFramework>
<AzureFunctionsVersion>v1</AzureFunctionsVersion>
버전 2.xVersion 2.x
<TargetFramework>netcoreapp2.2</TargetFramework>
<AzureFunctionsVersion>v2</AzureFunctionsVersion>

프로젝트를 디버그하거나 게시하는 경우 올바른 버전의 런타임이 사용됩니다.When you debug or publish your project, the correct version of the runtime is used.

VS Code 및 Azure Functions 핵심 도구VS Code and Azure Functions Core Tools

Azure Functions Core Tools는 명령줄 개발에 사용되며 Visual Studio Code용 Azure Functions 확장에서도 사용됩니다.Azure Functions Core Tools is used for command line development and also by the Azure Functions extension for Visual Studio Code. 버전 2.x에 대해 개발하려면 Core Tools 버전 2.x를 설치합니다.To develop against version 2.x, install version 2.x of the Core Tools. 버전 1.x 개발에는 Core Tools 버전 1.x가 필요합니다.Version 1.x development requires version 1.x of the Core Tools. 자세한 내용은 Azure Functions Core Tools 설치를 참조하세요.For more information, see Install the Azure Functions Core Tools.

Visual Studio Code 개발의 경우 설치된 도구의 버전과 일치하도록 azureFunctions.projectRuntime에 대한 사용자 설정을 업데이트해야 할 수도 있습니다.For Visual Studio Code development, you may also need to update the user setting for the azureFunctions.projectRuntime to match the version of the tools installed. 이 설정은 함수 앱을 만드는 동안 사용되는 템플릿 및 언어도 업데이트합니다.This setting also updates the templates and languages used during function app creation.

Azure에서 앱 버전 변경Changing version of apps in Azure

Azure에 게시된 앱에서 사용하는 Functions 런타임 버전은 FUNCTIONS_EXTENSION_VERSION 애플리케이션 설정에 따라 결정됩니다.The version of the Functions runtime used by published apps in Azure is dictated by the FUNCTIONS_EXTENSION_VERSION application setting. ~2 값은 버전 2.x 런타임을 대상으로 하고 ~1은 버전 1.x 런타임을 대상으로 합니다.A value of ~2 targets the version 2.x runtime and ~1 targets the version 1.x runtime. 이 설정을 임의로 변경하지 않도록 합니다. 함수의 다른 앱 설정 및 코드도 변경해야 할 수 있기 때문입니다.Don't arbitrarily change this setting, because other app setting changes and code changes in your functions are likely required. 함수 앱을 다른 런타임 버전으로 마이그레이션하기 위한 권장 방법에 대한 자세한 내용은 Azure Functions 런타임 버전을 대상으로 지정하는 방법을 참조하세요.To learn about the recommended way to migrate your function app to a different runtime version, see How to target Azure Functions runtime versions.

바인딩Bindings

버전 2.x 런타임은 다음과 같은 장점이 있는 새 바인딩 확장성 모델을 사용합니다.The version 2.x runtime uses a new binding extensibility model that offers these advantages:

  • 타사 바인딩 확장 지원.Support for third-party binding extensions.

  • 런타임과 바인딩을 분리.Decoupling of runtime and bindings. 이렇게 변경하면 바인딩 확장의 버전을 지정하고 독립적으로 릴리스할 수 있습니다.This change allows binding extensions to be versioned and released independently. 예를 들어 기본 SDK의 최신 버전을 사용하는 확장 버전으로 업그레이드하도록 선택할 수 있습니다.You can, for example, opt to upgrade to a version of an extension that relies on a newer version of an underlying SDK.

  • 사용 중인 바인딩만 런타임에 알려지고 로드되는 가벼운 실행 환경.A lighter execution environment, where only the bindings in use are known and loaded by the runtime.

HTTP 및 타이머 트리거를 제외하고 모든 바인딩은 명시적으로 함수 앱 프로젝트에 추가하거나 포털에 등록해야 합니다.With the exception of HTTP and timer triggers, all bindings must be explicitly added to the function app project, or registered in the portal. 자세한 내용은 바인딩 확장 등록을 참조하세요.For more information, see Register binding extensions.

다음 표에는 각 런타임 버전에서 지원되는 바인딩이 나와 있습니다.The following table shows which bindings are supported in each runtime version.

다음 표에서는 Azure Functions 런타임의 두 가지 주요 버전에서 지원 되는 바인딩을 보여 줍니다.This table shows the bindings that are supported in the two major versions of the Azure Functions runtime:

typeType 1.x1.x 2.x12.x1 트리거Trigger 입력Input 출력Output
Blob StorageBlob storage
Cosmos DBCosmos DB
Event GridEvent Grid
Event HubsEvent Hubs
HTTP & 웹 후크HTTP & webhooks
IoT HubIoT Hub
Microsoft Graph
Excel 테이블
Microsoft Graph
Excel tables
Microsoft Graph
OneDrive 파일
Microsoft Graph
OneDrive files
Microsoft Graph
Outlook 이메일
Microsoft Graph
Outlook email
Microsoft Graph
이벤트
Microsoft Graph
events
Microsoft Graph
인증 토큰
Microsoft Graph
Auth tokens
Mobile AppsMobile Apps
Notification HubsNotification Hubs
Queue StorageQueue storage
SendGridSendGrid
Service BusService Bus
SignalRSignalR
Table StorageTable storage
타이머Timer
TwilioTwilio

1 2.x에서 HTTP 및 Timer를 제외한 모든 바인딩이 등록되어야 합니다.1 In 2.x, all bindings except HTTP and Timer must be registered. 바인딩 확장 등록을 참조하세요.See Register binding extensions.

함수 앱 시간 제한 기간Function app timeout duration

함수 앱의 제한 시간은 호스트 json 프로젝트 파일의 functiontimeout 속성에 의해 정의 됩니다.The timeout duration of a function app is defined by the functionTimeout property in the host.json project file. 다음 표에서는 두 계획 모두에 대 한 기본 및 최대 값 (분) 및 두 런타임 버전을 보여 줍니다.The following table shows the default and maximum values in minutes for both plans and in both runtime versions:

계획Plan 런타임 버전Runtime Version 기본값Default 최대값Maximum
소비Consumption 1.x1.x 55 1010
소비Consumption 2.x2.x 55 1010
App ServiceApp Service 1.x1.x 제한 없음Unlimited 제한 없음Unlimited
App ServiceApp Service 2.x2.x 3030 제한 없음Unlimited

참고

함수 앱 제한 시간 설정에 관계 없이, 230 초는 HTTP 트리거된 함수가 요청에 응답 하는 데 사용할 수 있는 최대 시간입니다.Regardless of the function app timeout setting, 230 seconds is the maximum amount of time that an HTTP triggered function can take to respond to a request. 이는 Azure Load Balancer의 기본 유휴 시간 제한으로 인해 발생 합니다.This is because of the default idle timeout of Azure Load Balancer. 처리 시간이 길면 비동기 Durable Functions 패턴 을 사용 하거나 실제 작업을 지연 시키고 즉각적인 응답을 반환하는 것이 좋습니다.For longer processing times, consider using the Durable Functions async pattern or defer the actual work and return an immediate response.

다음 단계Next steps

자세한 내용은 다음 리소스를 참조하세요.For more information, see the following resources: