So I started working with Grails on a POC for pulling together multiple micro-web services into a common service platform offering for all of our web apps.   Each of the micro-web services were going to be implemented in Grails, Java, Ruby or whatever is appropriate.   In using Grails and trying to deploy multiple grails app into Eclipse's WST I basically ran into issues (couldn't do it - could only find this article) and decided that it was more important to finish the POC and the actual technology was not so important.   I'm just about done with the POC but I thought i'd note the stack and add some notes.

So, for a webapp framework i'm using Apache Click. I'm really loving this model over non component-based web frameworks.   I used to do a lot of Swing work, and the Apache Click model 'feels' comfortable.   I'm using Spring with Click as well.   It feels OK and seems to integrate easily and our shop is a Spring shop so I have to ensure the framework would work well with Spring.

A big departure for me was the move away from a traditional RDBMS to Mongo DB.   During the initial coding of the POC I was using all in-memory implementation of my services; this allowed me to code without worrying about any of the persistence   logic.   Once I decided I needed to code the persistence side, I really couldn't bring myself to write yet another JDBC DAO and I didn't feel like using Hibernate.   I thought about Data Nucleus but that requires an extra compilation step I really didn't feel like messing with (it didn't move the POC forward, it was just something else to learn that I may throw away).   With all the NoSQL hulabaloo, I figured i'd give MongoDB a try. It has a large production base and seems to have good driver support. It's also very easy to use.   The POC I was working on was perfect for MongoDB, it didn't have a high write-rate but did have a high read rate.   It is also fine for the eventually consistent aspect of MongoDB.

I'll have to write something up on how I used MongoDB. I used it's most rudimentary features, but I was able to replace the in-memory implementation of my services with Mongo DB backed implementations in minutes (literally).   The most time consuming aspect of using Mongo DB was the marshalling of objects to<>from Java objects.   There appear to be some ORM like tools out there for MongoDB but I chose not to use them because A) I didn't want to waste time learning another framework I may throw away, and B) I wanted to learn lower level Mongo DB APIs.

Anyhow, the POC is proceeding. I'll post some screenshots and diagrams once it's complete.