[ 
https://issues.apache.org/jira/browse/S4-24?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13151292#comment-13151292
 ] 

Matthieu Morel commented on S4-24:
----------------------------------

I implemented the first milestone as described above, in 
https://github.com/matthieumorel/s4-piper/tree/deployment-manager

Most of the logic of the deployment manager is factored into the 
DistributedDeploymentManager class.

I also included a test in 
test/java/org/apache/s4/deploy/TestAutomaticDeployment that:
- uses a simple application packaged with the gradle packaging script from 
https://github.com/leoneu/s4-piper-app
- starts an S4 node with a custom module that includes Zookeeper task 
assignation and the distributed deployment manager
- creates a znode for the new app, referencing the packaged application file
- checks that the S4 node detects the new app and correctly starts it.

Next steps will be:
- validate the approach
- improve the declaration of nodes and applications (currently, the only 
metadata is a URI)
- provide tooling for publishing a new application
- test with multiple nodes
- synchronize among multiple nodes?
- support multiple protocols for fetching s4r archives
                
> Dynamic deployment of S4 applications from a remote repository
> --------------------------------------------------------------
>
>                 Key: S4-24
>                 URL: https://issues.apache.org/jira/browse/S4-24
>             Project: Apache S4
>          Issue Type: Sub-task
>    Affects Versions: 0.5
>            Reporter: Matthieu Morel
>            Assignee: Matthieu Morel
>             Fix For: 0.5
>
>
> Use case:
> - at startup or during runtime, s4 nodes are notified of new applications 
> available. The code for these applications is fetched from a remote 
> repository, installed on S4 nodes, and the applications are started 
> automatically.
> How does it work?
> - Zookeeper is used for coordination: when a new app is available, it creates 
> a new znode under /s4-cluster-name/apps/app1
> - S4 nodes are notified of this new znode, which contains the s4r URI as 
> metadata
> - S4 nodes can then fetch the s4r, copy it to a local directory and start it
> - we also need a facility to create the app into Zookeeper, along with 
> required metadata
> For a first milestone, I suggest:
> - a simple file system based repository (can be a distributed file system)
> - deployment only, no unloading
> Later we can add extensions:
> - We could provide various repository clients, depending on the protocol 
> specified, and on the level of trust of the repository (although for a first 
> version, we would just provide a simple mechanism and assume a trustworthy 
> environment).
> - more metada in the application znode, in order to control the state of the 
> app, a time to start / stop, a number of nodes, nodes requirements etc...
> I'll start working on a first implementation, and I'm eager to receive 
> suggestions. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to