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
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.
Clojure on AppEngine is fairly straight-forward once you get around the blacklisted classes. Luckily, appengine-magic was designed for just that.
ReplyDeleteNote: 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.
Hello Sim,
ReplyDeleteI 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
Do you know of a write-up on deployment to nginx/Clojure/Compojure - ideally something documenting how to build a server from scratch.
ReplyDeleteHello 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
ReplyDelete