[id='project-deployment-options-ref_{context}']
= Project deployment options with {PRODUCT}

After you develop, test, and build your {PRODUCT} project, you can deploy the project to begin using the business assets you have created. You can deploy a {PRODUCT} project to a configured {KIE_SERVER}, to an embedded Java application, or into a {OPENSHIFT} environment for an enhanced containerized implementation.

The following options are the main methods for {PRODUCT} project deployment:

.Project deployment options
[cols="25%,50%,25%", options="header"]
|===
|Deployment option
|Description
|Documentation

ifdef::DM,PAM[]
|Deployment to an OpenShift environment
|{OPENSHIFT} combines Docker and Kubernetes and enables you to create and manage containers. You can install both {CENTRAL} and {KIE_SERVER} on OpenShift. {PRODUCT} provides templates that you can use to deploy a {PRODUCT} authoring environment, managed server environment, immutable server environment, or trial environment on OpenShift. With OpenShift, components of {PRODUCT} are deployed as separate OpenShift pods. You can scale each of the pods up and down individually, providing as few or as many containers as necessary for a particular component. You can use standard OpenShift methods to manage the pods and balance the load.
a|
{URL_DEPLOYING_ON_OPENSHIFT}#assembly-openshift-operator_deploying-on-openshift[_{DEPLOYING_OPENSHIFT_OPERATOR}_]

{URL_DEPLOYING_ON_OPENSHIFT}#assembly-openshift-templates[_{DEPLOYING_OPENSHIFT_TEMPLATES}_]
endif::[]

|Deployment to {KIE_SERVER}
|{KIE_SERVER} is the server provided with {PRODUCT} that runs the decision services, process applications, and other deployable assets from a packaged and deployed {PRODUCT} project (KJAR file). These services are consumed at run time through an instantiated KIE container, or _deployment unit_. You can deploy and maintain deployment units in {KIE_SERVER} using {CENTRAL} or using a {HEADLESS_CONTROLLER} with its associated REST API (considered a _managed_ {KIE_SERVER} instance). You can also deploy and maintain deployment units using the {KIE_SERVER} REST API or Java client API from a standalone Maven project, an embedded Java application, or other custom environment (considered an _unmanaged_ {KIE_SERVER} instance).
a|
ifdef::DM,PAM[]
{URL_DEPLOYING_AND_MANAGING_SERVICES}#assembly-packaging-deploying[_{PACKAGING_DEPLOYING_PROJECT}_]

{URL_DEPLOYING_AND_MANAGING_SERVICES}#assembly-kie-apis[_{KIE_APIS}_]

{URL_MANAGING_SETTINGS}#assembly-managing-and-monitoring-execution-server[_{MANAGING_KIE_SERVER}_]
endif::[]
ifdef::DROOLS,JBPM,OP[]
xref:#_kiedeployingsection[]

xref:#_ch.kie.server[]
endif::[]

|Deployment to an embedded Java application
|If you want to deploy {PRODUCT} projects to your own Java virtual machine (JVM) environment, microservice, or application server, you can bundle the application resources in the project WAR files to create a deployment unit similar to a KIE container. You can also use the core KIE APIs (not {KIE_SERVER} APIs) to configure a KIE scanner to periodically update KIE containers.
a|
link:http://docs.jboss.org/drools/release/{COMMUNITY_VERSION_FINAL}/kie-api-javadoc/[_KIE Public API_]

ifdef::JBPM[]
xref:jBPMCoreEngine[]
endif::[]
|===
