#835 Packaging/ Deploying a Fantom application

lbertrand Wed 25 Nov 2009

Hi,

I was wondering how a Fantom application will be packaged to then be installed at customer sites, configured and launched?

Is it based on the following idea: packaging a repo containing only the pod application and perhaps pod libraries used + symbols fans under etc/ directory into a zip, a tarball, ... whatever packaging system...

At customer site, install fan distro, unpackage application and set environment to use this repo application as the working repo, editing files in /etc to modify configuration if needed and launch application...

An alternative can also be to package fantom distro into the application repo...

Few things here:

  • Is there a Fantom distro for deployment only, not including compilation tools... exisiting? Do not need to deploy all of fantom distro to just launch a fantom application
  • I have an issue with having a lot of fansym file to update, 1 per pod... It will be easier to be able to just used 1 file for configuration of all the application, which means gathering symbols from different fansym into 1 fansym file -> I will prefer, for example, to be able to package fansym file into the pod directly, so not accessible from outside world, but inside them, being able to reference another symbol coming from another external file... So each pod will be configured with static value that cannot be change, fixed by application, but the one that application wants to open for configuration on site, it just link them to another file that can be deployed at the same time as the application.
  • It can be nice to be able to separate libraries used by application into another common repo (even being able to download from a specific place any pod needed)... So that if we just need to update one of the pod, we can do it without redistributing all the application... version 1.0.1 just out to correct issue, just redeploy this new pod instead of version 1.0.0 which was used here... In this case, will the application declaring dependency on it start to use new version instead of old one... I have the feeling that a kind of OSGi runtime should be provided by Fantom runtime system - nearly already there as dependency and version between pods is already part of pod as unit of deployment

I am sure there is a lot more, but would like to know what is planned (or already done!)

brian Wed 25 Nov 2009

Might take a look at App Deployment.

The way we are deploying our SkyFoundry app is by packaging it up with the core Fantom files all in one single boot repo. We just have a build script that strips out everything except the core files we need from bin, lib, and etc. Those zips are ~6MB with app specific code and core Fantom code (just JVM support). I think this model is ideal for traditional apps because it is super simple to install and everything you need is all bundled together (assuming you have a JVM).

For developer packages, probably we just want pods you can drop into lib.

I also definitely agree, that you should write pods such that you only need symbol files if you really wish to change the configuration (but hopefully ship with reasonable defaults).

And eventually we definitely need something like RubyGEMs to manage deployment from the cloud.

Login or Signup to reply.