## 4.1.8.1 Multitarget Applications in the Cloud Foundry Environment
A Multitarget application (MTA) is essentially a single application that consists of multiple parts. These parts are created using various technologies and share the same lifecycle.
The MTA developers outline the intended outcomes using the MTA model. This model consists of MTA modules, MTA resources, and the interdependencies between them. Afterward, the SAP Cloud Deployment service validates it, orchestrates the necessary actions, and automates the MTA deployment. The outcome is the formation of Cloud Foundry applications, services, and the generation of SAP specific content. For more information about the Multitarget Application model, see the official specification documents The Multitarget Application Model v.2 and The Multitarget Application Model v.3.
You can create and deploy a Multitarget Application in the Cloud Foundry environment as described below by following different approaches that can yield the same result:
- Using SAP Web IDE Full-Stack as described in Developing Multitarget Applications - both the development descriptor mta.yaml and the deployment descriptor mtad.yaml are created automatically. The mta.yaml is generated when you create the application project, and the mtad.yaml file is created when you build the project.
<!-- image -->
Development descriptors are used to generate MTA deployment descriptors, which define the required deployment data. That is, the MTA development descriptor data specifies what you want to build, how to build it, while the deployment descriptor data specifies as what and how to deploy it.
<!-- image -->
- https:/ /help.sap.com/viewer/825270ffffe74d9f988a0f0066ad59f0/CF/en-US/ a71bf8281254489ea8be6e323199b304.html [https:/ /help.sap.com/viewer/ 825270ffffe74d9f988a0f0066ad59f0/CF/en-US/a71bf8281254489ea8be6e323199b304.html]
- https:/ /help.sap.com/viewer/825270ffffe74d9f988a0f0066ad59f0/CF/en-US/ 3b533e3723674fad90f94510b92f10af.html [https:/ /help.sap.com/viewer/ 825270ffffe74d9f988a0f0066ad59f0/CF/en-US/3b533e3723674fad90f94510b92f10af.html]
- https:/ /help.sap.com/viewer/825270ffffe74d9f988a0f0066ad59f0/CF/en-US/ 1b0a7a0938944c7fac978d4b8e23a63f.html [https:/ /help.sap.com/viewer/ 825270ffffe74d9f988a0f0066ad59f0/CF/en-US/1b0a7a0938944c7fac978d4b8e23a63f.html]
- Using Business Application Studio - the flow is similar to WebIDE but the development is done from BAS.
- https:/ /help.sap.com/docs/bas/sap-business-application-studio/mta-development/ [https:/ / help.sap.com/docs/bas/sap-business-application-studio/mta-development/]
- https:/ /help.sap.com/docs/bas/sap-business-application-studio/building-and-deploying-multitargetapplications [https:/ /help.sap.com/docs/bas/sap-business-application-studio/building-anddeploying-multitarget-applications]
- https:/ /help.sap.com/docs/bas/sap-business-application-studio/building-and-deploying-multitargetapplications [https:/ /help.sap.com/docs/bas/sap-business-application-studio/building-anddeploying-multitarget-applications]
- Using the Cloud MTA Build Tool . Afterward, you deploy the MTA using the Cloud Foundry Command Line Interface.
<!-- image -->
<!-- image -->
<!-- image -->
- https:/ /sap.github.io/cloud-mta-build-tool/ [https:/ /sap.github.io/cloud-mta-build-tool/]
- https:/ /help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/ 65ddb1b51a0642148c6b468a759a8a2e.html [https:/ /help.sap.com/viewer/ 65de2977205c403bbc107264b8eccf4b/Cloud/en-US/65ddb1b51a0642148c6b468a759a8a2e.html]
- https:/ /help.sap.com/viewer/65de2977205c403bbc107264b8eccf4b/Cloud/en-US/ c2d31e70a86440a19e47ead0cb349fdb.html [https:/ /help.sap.com/viewer/ 65de2977205c403bbc107264b8eccf4b/Cloud/en-US/c2d31e70a86440a19e47ead0cb349fdb.html]
- Manually - create the required files manually and deploy them using the Cloud Foundry Command Line Interface
##  Note
An MTA development descriptor mta.yaml is not explicitly required. In this case, a deployment descriptor is maintained instead.
1. Create the required files using an IDE of your choice.
2. To produce your custom artifacts, use a build technology of your choice.
3. Maintain your deployment descriptor document ( mtad.yaml ).
1. (Optional) If you want to have an MTA archive package, use the mbt assemble . For more information, see Cloud MTA Build Tool (MBT) .
2. Use the cf deploy command to deploy the MTA package or directly from the build result directory.
| To learn more about                           | See                                                                                  |
|-----------------------------------------------|--------------------------------------------------------------------------------------|
| Multitarget Application deployment descriptor | Defining Multitarget Application Deployment Descriptors for Cloud Foundry [page 606] |
| Multitarget Application archive               | Defining Multitarget Application Archives [page 604]                                 |
| Multitarget Application extension descriptor  | Defining MTAExtension Descriptors [page 666]                                         |
| Multitarget Application structure             | Multitarget Application Structure [page 612]                                         |
| How to deploy the Multitarget Application     | Multitarget Application Plugin for Cloud FoundryCommand Line Interface [page 2552]   |
## Terms and Concepts
Terms and Concepts
| Term                          | Description                                                                                                                              |
|-------------------------------|------------------------------------------------------------------------------------------------------------------------------------------|
| Multitarget application (MTA) | An application comprised of multiple software modules, which are created with different technologies and deployed to different runtimes. |
| Term                   | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
|------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Development descriptor | A YAML file named mta.yaml that contains a list of all entities, such as modules, resources, and properties that belong to an application or are used by it at runtime, and the dependencies between them. It is automatically gener- ated when an MTAproject is created or modified, or when a module is added or removed. The developer needs to edit the descriptor manually to define resources, properties, and dependencies, as well as fill in missing information. |
| Deployment descriptor  | A YAML file named mtad.yaml that contains a list of all entities which is created from either SAP Web IDE Full-Stack, SAP Business Application Studio, Cloud MTABuild Tool or manually. This file is similar to Development Descriptor but is used from the SAP Cloud Deployment service.                                                                                                                                                                                  |
| Module                 | A self-contained application of a certain type, which is devel- oped, packaged and deployed.                                                                                                                                                                                                                                                                                                                                                                               |
| Module type            | A type that defines the structure and the development tech- nology of a module. You can see a list of the module types at Modules [page 625].                                                                                                                                                                                                                                                                                                                              |
| Resource               | Any resource, such as an external service that is required by a module at runtime but not provided by the module itself.                                                                                                                                                                                                                                                                                                                                                   |
| Property               | A property (key-value pair) of an application, module, or re- source, that is used during deployment or at runtime.                                                                                                                                                                                                                                                                                                                                                        |
| Parameter              | A reserved variable belonging to a module or resource, whose value is used during deployment or at runtime.                                                                                                                                                                                                                                                                                                                                                                |
| Dependency             | A relationship between a module and another module, re- source, or property, such as provides and requires. • provides : indicates the properties or parameters that are provided by a module or resource to other mod- ules. • requires : indicates other modules or resources that are required by a module in order to run.                                                                                                                                             |
| MTAarchive (MTAR)      | Archive containing a deployment descriptor, the module and resource binaries, and configuration files. The archive fol- lows the JAR file specification.                                                                                                                                                                                                                                                                                                                   |
## Prerequisites and Restrictions
You have to consider the following limits for the MTA artifacts, which can be handled by the SAP Cloud Deployment service:
- Maximum size of the MTA archive: 4 GB
- Maximum size of MTA module content: 1 GB
- Maximum size of MTA resource content: 1 MB
- Maximum size of MTA descriptors ( mtad.yaml and MANIFEST.MF ): 1 MB
- Maximum size of deployments which use multiple MTA archives: 20GB. This restriction is applicable only in transport scenarios via cTMS or CTS+, where one transport request with multiple MTAs results in a single deployment process in SAP Cloud Deployment service.
## Unsupported Cloud Foundry Features
In addition to the features that are not supported by the Cloud Foundry environment on SAP BTP (See Supported and Unsupported Cloud Foundry Features), MTA deployment in Cloud Foundry currently does not support these features as well:
- Sidecars. See https:/ /docs.cloudfoundry.org/devguide/sidecars.html .
- Route services. See https:/ /docs.cloudfoundry.org/services/route-services.html .
- Readiness health check. See https:/ /docs.cloudfoundry.org/devguide/deploy-apps/healthchecks.html .
- Health check interval. See https:/ /docs.cloudfoundry.org/devguide/deploy-apps/healthchecks.html .
- Metadata. See https:/ /docs.cloudfoundry.org/adminguide/metadata.html .
- Per-route options. See https:/ /docs.cloudfoundry.org/devguide/custom-per-route-options.html .
##  Note
These features might be implemented in the future. For the latest information, follow the release notes regarding Multitarget Applications for Cloud Foundry in What's New for SAP Business Technology Platform.
## Related Information
JAR File Specification
Cloud MTA Build Tool
Release Notes for Multitarget Applications for Cloud Foundry