Jump to: navigation, search

Difference between revisions of "Solum/FeatureBlueprints/DeployApp"

(Implementation)
(Solum-R1.1 Deploy application)
 
(6 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
[https://blueprints.launchpad.net/solum/+spec/deployapp Blueprint]
 
[https://blueprints.launchpad.net/solum/+spec/deployapp Blueprint]
 
== Solum-R1.1 Deploy application ==
 
 
=== Functionality ===
 
 
'''''===== Generic note on Solum's User Interface =====<br />'''
 
 
Solum exposes its "user interface" via the following mechanisms:
 
* REST API
 
* CLI interface
 
* GIT
 
* a set of SDK's in various languages
 
* UI Console
 
 
The CLI, GIT, SDK's and the UI console are ease of use interfaces that are layered on top of the REST API. User can also directly call into the REST API.''
 
<br />
 
'''''===== End Generic Note =====<br />'''
 
 
 
As an application developer, I can invoke a REST API call to push code to the Solum platform, and receive back the URL (for web apps) of my running application.
 
 
I would be able to specify application characteristics, auto scale policies, etc, as inputs  while deploying my application. Following is an indicative list of inputs (not intended to be comprehensive) that an application developer can specify while deploying an app to the platform.
 
 
{| class="wikitable"
 
|-
 
! Attribute name !! Description !! Required?
 
|-
 
| App Name || Name of application (Unique at tenant level)|| Required
 
|-
 
| Instance Count|| Initial number of app instances|| Optional (default = 1 instance)
 
|-
 
| Instance Size|| Size of each app instance (as determined by RAM, CPU, disk space, allocated to each instance). Small, medium, large, extra large, etc. the sizing characteristics of what is small and what is large is configurable by the platform service provider || Optional (default = "small")
 
|-
 
| Artifact|| Packaged application code|| Required
 
|-
 
| Auto Scale|| Should the application auto-scale (Y/N)|| Optional (default = N)
 
|-
 
| MinInstances || Minimum number of app instances (lower threshold for the auto scale policy)|| Optional (default = 1)
 
|-
 
| MaxInstances|| Maximum number of app instances (upper threshold for the auto scale policy)|| Optional (default = specified Instance count during app creation)
 
|-
 
| Environment|| Set application specific environment variables at app start up|| Optional
 
|-
 
| LanguagePack|| User could specify the language pack (say MyPythonPack) to be used during app creation.  If no language pack is specified, then the platform would pick the default language pack associated with the code being pushed. || Optional
 
|-
 
| Services|| List of services that the application will bind to (e.g.Trove, NewRelic). The services list would also optionally contain any service initialization parameters if the service support it. An example of this will be a SQL script passed to a database service to create the custom application scheme.  || Optional
 
|-
 
|}
 
 
=== Implementation ===
 
 
We propose that the Solum API implement a "deployApp" resource. A POST call will be made to it for deploying an application. The body of the POST call will be zipped up directory of the application. The application code directory will contain a manifest file containing above listed information. As part of the POST call handling, the Solum API server will perform the following actions:
 
- It will detect the application's type
 
- It will compile the application package using the appropriate LanguagePack.
 
- If services are specified, it will provision them for the application
 
- It will run any service specific tasks. For example, for a database service we might have to create the application's data schema on the provisioned service.
 
- It will provision appropriate compute resource. For example, for a Java application it will provision a container that has tomcat installed on it.
 
- It will create the specified environment on the compute resource
 
- It will deploy the application package to the compute resource.
 
If the deployment is successful it will send back the application url to the user.
 

Latest revision as of 19:41, 7 October 2013

Blueprint