Just a little add on to Clojure on Google this is a blog of a company that uses Clojure for a project and the have a DSL for Bigtable. (There is a second blog with only talks about Clojure on google app engine as well) --> http://www.hackers-with-attitude.com/
On Aug 2, 8:47 am, Saul Hazledine <[email protected]> wrote: > Hello Kent, > > On Aug 1, 2:00 pm, Kent Larsson <[email protected]> wrote: > > > I'm planning to reduce my time at my full time job to create a small > > startup. And I am thinking about create a lean and mean architecture > > which will enable me to get things done. > > Cool! > > > I am thinking about creating a layered architecture like this: > > > 1. Front end > > 2. Business > > 3. Database > > > I think that the "2. Business Layer" should be Clojure. It would talk > > to the "1. Front End" by a web service REST interface. Exactly how the > > data should be encoded is something I haven't though about yet. But > > JSON seems like an easy format. > > Building a JSON service in Clojure and Compojure is easy to do. > > > My idea is basically to create a good Customer Relationships > > Management (CRM) system and sell it as a service to companies. The > > users will input information about customers and related events and it > > will be easy to search. I'll have quite a lot of business logic which > > makes these tasks easier. The logic will most often be stuff which > > handles graphs (which SQL really has some problems handling nicely). > > I've not used it but neo4j looks like it might be worth looking > at:http://neo4j.org/ > > > Some must have goals: > > > 1. If it becomes a success, it needs to be able to scale over multiple > > machines with load balancing. There will be some data which should be > > replicated between the machines, but a delay is all right. > > 2. As I sell it uptime is important. If I have several machines and > > one of them dies. I'd like the service to be available using the other > > machines. > > Some people have had success getting Clojure running on google app > engine. You get scaling for little effort but the BIG downside is that > your app can take over 10 seconds to respond when nobody is using it > (when under load the app runs at a decent speed). > > > My questions: > > > 1. Do you think Wicket is a good choice for the front end for me? It > > has session state on the server which I need to replicate in more or > > less real time. If I have the state on the client using JavaScript I > > don't have to deal with that replication. But how would I achieve that > > in the most smooth way? Should I go for Compojure for the front end to > > not have to deal with two languages? And then maybe skip the > > separation of layer "1. Front End" and "2. Business"? > > I've not used wicket. Compojure/Hiccup are wonderful, will handle > session state no problem, but they aren't a full web framework. You > will have to do extra work compared to say Ruby on Rails, Django or > Grails where you can get a front-end up in a weekend. > > > 2. Will it be hard to write a nice web service interface in Clojure? > > Is it a suitable communication strategy with Clojure? Maybe I am > > making it too complicated? > > Web services are easy in Clojure/Compojure (that's worth saying > twice). > > > 3. Clojure has a lot of nice stuff for handling data in transactions. > > But if all my data resides in a database will I get to really enjoy > > this advantage? I have been thinking about actually storing the data > > using Clojure and skip the database, to get more out of Clojure. Is > > that idea too crazy? I will have to deal with data replication myself > > then, or maybe something like memcache will solve it for me? > > Personally, I'd stick with some sort of database as it will have been > designed to protect your data from accidents. Clojure has lots of > advantages even if you don't use the concurrency features. > > > > > 5. Is it hard to debug Clojure? Using Java/C# today you get a real > > treat when it comes to debugging with interactive stepping, expression > > watching and a lot of other cool things. Where is Clojure debugging > > compared to other languages? Is the debugging features as necessary as > > in other languages? > > Conventional debugging is harder at the moment but having a REPL or > using swank means there is less need for debugging anyway. You can > play with each function as you write it. > > > 7. Any other advice or thoughts you have about this? > > I wouldn't worry too much about scaling. Making an application > scalable is a lot of work (unless you're using something like Google > appengine). Computers are much faster than they used to be. A single > machine running Jetty/Compojure with a database such as H2 will handle > 100's/1000's of pages per second. If you exceed this your business > will be very successful, you will know your application better and > then you can concentrate on scaling. > > Saul -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to [email protected] Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/clojure?hl=en
