# Functions Instances

import DocButton from '~/components/webkit/DocButton.vue';

**Functions** for **Applications** enables you to instantiate serverless functions within your Azion application, while also configuring execution conditions. These functions are processed close to your users, responding to events with remarkable speed, thus ensuring superior scalability and availability.

> Functions are also available for [Firewall](/en/documentation/products/secure/firewall/functions-instances/).

## Implementation

| Scope | Resource |
| --- | --- |
| Applications first steps | [First steps](/en/documentation/products/build/applications/first-steps/) |
| Instantiating a function | [How to run serverless functions on Azion Console](/en/documentation/products/guides/serverless-functions/) |

---

## Function instance

To instantiate an function in your application, you must first create one using **Functions**. Once the function is saved, you can proceed with the instantiation for your applications.

During the instantiation process, the function's code can't be modified. Instead, the arguments, or **Args**, that will be passed to the context of the function's execution in JSON format must be informed.

<DocButton href="/en/documentation/products/build/applications/functions/" label="Learn more about Functions" size="medium" />

---

## Run Function

You can create a rule using **Rules Engine** and, with the **Run Function** behavior, select the execution phase and the criteria that will trigger the rule. When a request meets the defined criteria in the rule, the function will be invoked and executed directly in Azion's edge nodes.

<DocButton href="/en/documentation/products/build/applications/rules-engine/#run-function" label="Learn more about the Run Function behavior" size="medium" />

For further information on implementing functions, explore the [guides page](/en/documentation/products/guides/).

---

## Limits

The **Args** field supports a maximum of 100KB of arguments.