2

I am looking for any best practices and/or recommendations around how best to manage releases for custom modules in a production environment running on the Spring-XD platform.

Specifically, if I have a custom module foo-1.0.0 deployed into a farm of xd containers and I wish to rev it to version foo-1.1.0. What are my alternatives? I gather the following might work (from looking at other questions and docs):

  1. Assuming a shared filesystem/directory for each server/container the custom module jar can be replaced and the container will pick up the new version without a need to restart the server. Will this work? Does this mean the jar name needs to be the same or will it work with versioned named jars?
  2. Maintain a duplicate/mirrored container envs so that one set of containers can be updated by properly removing the stream/job/modules and then bring up the environment up with the updated module version etc... (though this is expensive from a hardware perspective) basically doing a rolling upgrade of sorts
  3. Any other ways?

An ancillary question might be about how easy is it to expose the version of the custom module being used by a given container?

Any thoughts would be appreciated.

Thanks, Mark

  • Q: Are you using any [build/version control/CI tools](https://programmaticponderings.wordpress.com/2013/11/04/continuous-integration-and-deployment-using-git-maven-jenkins-and-glassfish/) like Maven and Jenkins? See also [this](https://programmaticponderings.wordpress.com/2013/11/04/continuous-integration-and-deployment-using-git-maven-jenkins-and-glassfish/) or [this](http://blog.sonatype.com/2012/09/dont-do-it-wrong-put-that-puppet-in-a-box-and-use-nexus-for-devops/). – paulsm4 Jul 17 '15 at 21:56
  • Yes - the stack is Git/Maven/Jenkins/Ansible following the git-flow model – Mark Fleischman Jul 17 '15 at 22:58
  • Hi - good to hear it! Yes, Spring-XD supports "hot deploy": [Automatic deploy of new modules in Spring XD](http://stackoverflow.com/questions/24224164/automatic-deploy-of-new-modules-in-spring-xd). See also http://docs.spring.io/spring-xd/docs/current-SNAPSHOT/reference/html/#_module_deployment. – paulsm4 Jul 18 '15 at 02:50
  • I am also looking in to this problem. The idea i have in my mind is to use shared location and update the module release symlink to point to new location with every release installed via rpm – user2230605 Jul 18 '15 at 04:45
  • Thanks - paulsm. I am curious about that solution that was posted for the Automatic Deployment - because the directory structure is for the builtin modules and not the custom modules... At any rate I suppose some experimentation is in order to see what is possible regarding the hotdeploy. Never the less - it would be helpful if the admin ui would show you the module version... – Mark Fleischman Jul 20 '15 at 15:49
  • @User2230605 - we are leveraging Ansible to parameterize/control the module/stream/job deployments. – Mark Fleischman Jul 20 '15 at 15:52
  • @MarkFleischman, anything open source to see ? – user2230605 Jul 21 '15 at 09:52
  • Not at the moment - as it is specific to my company. Given that streams/jobs can be described via a textual representation - there are definitely some very nice patterns that can be abstracted out to drive continuous delivery with Ansible/Jinja2. – Mark Fleischman Jul 28 '15 at 17:56

0 Answers0