Deploying Mule Apps to Runtime Fabric | MuleSoft Documentation
# Deploying Mule Apps to Runtime Fabric
Anypoint Runtime Fabric enables you to deploy Mule applications and API Proxies to a Mule runtime engine that is managed on Runtime Fabric.
## Supported Mule Runtime Server Versions
See Anypoint Runtime Fabric Runtimes Release Notes for information on supported versions of Mule runtime server.
## Before You Begin Deploying Mule Apps
Before you deploy a Mule app or API proxy to Runtime Fabric:
  * Install and configure a Runtime Fabric.
  * Ensure that you understand how resources are allocated as described in Allocating resources for Application Deployment.
  * Publish your Mule app or API proxy to Exchange.
Before you deploy Mule apps and API proxies to Runtime Fabric, you must first publish them to Exchange. When you deploy Mule apps and API proxies from Runtime Manager, they are published to Exchange automatically.   
---  


## Deployment Options
Use one of the following options to deploy Mule apps to Runtime Fabric:
  * Deploying a Mule App Using Runtime Manager Use Runtime Manager to manually deploy Mule apps and API proxies.
  * Deploying Mule Apps to Runtime Fabric using Maven Use Maven for managing and deploying a Mule application or API proxy.
  * Deploying and Managing Apps in Runtime Fabric Using the CLI Use the Anypoint Platform CLI to deploy Mule applications


## Deployment Considerations
### Eventual consistency
Runtime Fabric is a self healing, eventually consistent platform. When building a CI pipeline for Runtime Fabric deployment, you must take eventual consistency into consideration. After triggering a deployment, the application status should become `RUNNING`. If the application status never indicates `RUNNING`, the replicas contain a `state` and `reason` to indicate why the application is not `RUNNING`.
### Application Deployment
When an application is deployed, the following events occur:
  * The expected state of your application is stored, including application bundle and number of replicas.
  * The application replica status shows as `PENDING`.
  * When adequate compute and memory resources are available, each replica is attached to a node.
  * If not already present, a Docker image corresponding to the Mule Runtime version is downloaded.
  * The replica status shows as `STARTING`.
  * The replica finishes loading the application.
  * The replica status shows as `STARTED` and is able to perform work.


### Application Failure
If an application fails, for example, due to running of out memory, the following events occur:
  * The replica status shows as `TERMINATED`.
  * Runtime Fabric immediately attempts to restart the replica.
  * The replica status shows as `RECOVERING`.
  * If the replica is able to restart:
    * The replica finishes loading the application.
    * The replica status shows as `STARTED` and is able to perform work.
  * If the replica is initially unable to restart, for example, it relies on a network resource which temporarily unavailable, the following events occur:
    * The replica status shows as `PENDING`, with a message indicating "CrashLoopBackoff". Runtime Fabric attempts to restart the replica, using exponential backoff to avoid an excessive number of restart attempts.
    * The replica status alternates between `RECOVERING` and `PENDING` until the issue preventing a successful restart is resolved.
    * The replica loads the application.
    * After a successful restart, the replica shows as `STARTED` and is able to perform work.


## See Also
  * Managing Mule Apps Deployed to Runtime Fabric
  * Hardening Mule Apps Deployed to Runtime Fabric