Sunday, February 20, 2011

Don't stray too far from well supported language, tool and platform combinations

I have been doing a lot of customer work lately using Java EE 6 and Glassfish. Fairly nice development environment even if Java EE 6 is heavy on ceremony (but better than J2EE).

Just for fun today I took small play apps I had written in Rails and Clojure + Compojure and shoe-horned them to run on Glassfish. Interesting exercise, but unless there is an overwhelming need to create a custom deployment setup, it is so much better to go with the flow and stick with well crafted and mature setups like
  • Java and Java EE 6
  • Clojure + Compojure running with embedded Jetty behind nginx for serving static assets
  • Rails app hosted on Heroku
  • Web apps written in either Java or Python hosted on AppEngin using the supported frameworks
  • etc.
I must admit that I enjoy hacking not only code but also deployment schemes - enjoy it too much sometimes. Sometimes it is worthwhile, most often not.

4 comments:

Sim said...

Clojure on AppEngine is fairly straight-forward once you get around the blacklisted classes. Luckily, appengine-magic was designed for just that.

Note: not speaking from personal experience. I used a precursor to appengine-magic and simple 'lein compile' with the correct config to host Compojure+Enlive on the AppEngine.

Mark Watson, author and consultant said...

Hello Sim,

I was just mentioning a few "stable combinations" that I use; I know that Clojure has worked for some high profile projects on AppEngine and on Twitter, Charles Nutter pointed out that there are large deployments of JRuby on Glassfish.

-Mark

MAC said...

Do you know of a write-up on deployment to nginx/Clojure/Compojure - ideally something documenting how to build a server from scratch.

Mark Watson, author and consultant said...

Hello MAC, I just used nginx as a proxy and and added something like "root /home/app1/www" to point to where static assets are stored. The easier alternative would be to just use this example that adds a file handler: http://en.wikibooks.org/wiki/Compojure/Tutorials_and_Tips