Re: Thoughts on a polyglot app server?

2011-11-02 Thread Meikel Brandmeyer
Maybe this? http://immutant.org/news/2011/11/01/announcing/

Am 01.11.2011 um 21:48 schrieb Jason Toy:

 Any more plans or ideas on this?

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: Thoughts on a polyglot app server?

2011-11-01 Thread Peter Buckley
They announced it today:

http://immutant.org/news/2011/11/01/announcing/

-Original Message-
From: Jason Toy jason...@gmail.com
Sender: clojure@googlegroups.com
Date: Tue, 1 Nov 2011 13:48:54 
To: Clojureclojure@googlegroups.com
Reply-To: clojure@googlegroups.com
Subject: Re: Thoughts on a polyglot app server?

Any more plans or ideas on this?

On Sep 29, 1:48 pm, Jim jcrossl...@gmail.com wrote:
 The TorqueBox[1] team is toying with the idea of exposing to Clojure
 the abstractions we currently expose to Ruby. We're looking for
 feedback from you guys to see what you use now to solve these
 problems, what you'd like to see in a possible Clojure App Server,
 and if you might actually use it.

 If you're not familiar with TorqueBox: it's an application server for
 Ruby apps, allowing you to run them on top of JBossAS[2]. But it goes
 to great lengths to preserve the typical Ruby development experience,
 e.g. no war files or XML.  In addition, it provides the following
 enterprisey features to Ruby, built-in:

 * asynchronous processing (with futures)
 * scheduled jobs
 * XA transactions
 * companion services (daemons)
 * distributed caching
 * messaging (via JMS)

 Coming from a Ruby background, all of the above were pain points for
 us. Do these same pain points exist for Clojure apps?

 TorqueBox also supports clustering, which allows load balancing of the
 web component as well as cache distribution and horizontal scaling of
 async tasks, scheduled jobs, and services. Clojure has built in async
 processing and futures, but they use an in VM thread pool, correct?
 How would you scale that?

 A common TorqueBox idiom is to leverage Ruby in the web tier and Java
 in the services/data tier. Are there any Ring-based frameworks that
 make Clojure more appealing than Ruby in the web tier?

 Or does integrating a Ruby web app with a colocated Clojure service
 make more sense? It should be fairly easy to loosely couple them via
 messaging.

 Speaking of which, if you are using Clojure to process data generated
 by other apps/languages, how is that data communicated? Would language
 agnostic messaging be useful here?

 How do you currently run production code (web apps or otherwise)?

 We'd love to open a dialog about these and other things. Any feedback
 you care to share is appreciated, either here, or in #torquebox on
 Freenode. Toby Crawley and I will be in Raleigh for Clojure/conj as
 well, so we look forward to meeting you there!

 Thanks!

 [1]:http://torquebox.org/
 [2]:http://www.jboss.org/jbossas

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Thoughts on a polyglot app server?

2011-09-30 Thread Jim
The TorqueBox[1] team is toying with the idea of exposing to Clojure
the abstractions we currently expose to Ruby. We're looking for
feedback from you guys to see what you use now to solve these
problems, what you'd like to see in a possible Clojure App Server,
and if you might actually use it.

If you're not familiar with TorqueBox: it's an application server for
Ruby apps, allowing you to run them on top of JBossAS[2]. But it goes
to great lengths to preserve the typical Ruby development experience,
e.g. no war files or XML.  In addition, it provides the following
enterprisey features to Ruby, built-in:

* asynchronous processing (with futures)
* scheduled jobs
* XA transactions
* companion services (daemons)
* distributed caching
* messaging (via JMS)

Coming from a Ruby background, all of the above were pain points for
us. Do these same pain points exist for Clojure apps?

TorqueBox also supports clustering, which allows load balancing of the
web component as well as cache distribution and horizontal scaling of
async tasks, scheduled jobs, and services. Clojure has built in async
processing and futures, but they use an in VM thread pool, correct?
How would you scale that?

A common TorqueBox idiom is to leverage Ruby in the web tier and Java
in the services/data tier. Are there any Ring-based frameworks that
make Clojure more appealing than Ruby in the web tier?

Or does integrating a Ruby web app with a colocated Clojure service
make more sense? It should be fairly easy to loosely couple them via
messaging.

Speaking of which, if you are using Clojure to process data generated
by other apps/languages, how is that data communicated? Would language
agnostic messaging be useful here?

How do you currently run production code (web apps or otherwise)?

We'd love to open a dialog about these and other things. Any feedback
you care to share is appreciated, either here, or in #torquebox on
Freenode. Toby Crawley and I will be in Raleigh for Clojure/conj as
well, so we look forward to meeting you there!

Thanks!

[1]: http://torquebox.org/
[2]: http://www.jboss.org/jbossas

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: Thoughts on a polyglot app server?

2011-09-30 Thread Daniel Pittman
On Thu, Sep 29, 2011 at 13:48, Jim jcrossl...@gmail.com wrote:

 The TorqueBox[1] team is toying with the idea of exposing to Clojure
 the abstractions we currently expose to Ruby. We're looking for
 feedback from you guys to see what you use now to solve these
 problems, what you'd like to see in a possible Clojure App Server,
 and if you might actually use it.

Well, we would be seriously interested in it at Puppet Labs.  At the
moment we have a pile of Ruby code, and are using Clojure in some
newer parts of the overall project.  The move toward Clojure is
motivated by the scale and especially parallel operation benefits that
it brings to the table.

The obvious attraction is that TorqueBox would bring an integrated
layer below our Ruby and Clojure code; we would have the same services
available to both, exposing coherent interfaces between the parts, and
would also allow more intimacy around Java interop and cross-language
direct calling.

In terms of Clojure integration, comments around what we care about:

 * asynchronous processing (with futures)

Ideally we would want something compatible with Clojure futures, but
if you offer (eg) bounded thread pools then having compatible syntax
would be a win.  Right now we can get away with the default unbounded
pool size, but the choice would be awesome.

 * scheduled jobs
 * XA transactions
 * companion services (daemons)

Being able to bring these up in Clojure also would be awesome.

 * distributed caching

External memcache compatibility would be a big win here, for us right
now, but isn't long term essential.

 * messaging (via JMS)

We currently use ActiveMQ to provide STOMP services for MCollective,
and for some internal queue needs.  AMQP/JMS messaging would be
valuable, especially if it can interoperate with ActiveMQ, or supports
easy broker clustering, but not essential.

Access to configuring those things from Clojure would be valuable.

On the client side we use clamq (https://github.com/sbtourist/clamq)
to wrap up interactions with the queue service; having that, or
something with similar abstractions, would be valuable.  We especially
like the model of a queue consumer as an infinite lazy sequence.


In addition to those features, having a working and supported Ring
adapter free as part of the distribution would be of great value.
That is approximately the Ruby Rack feature, and means we can drop
whatever front-end we want in place.


I have not looked at JBossAS, but having a pleasant way to cooperate
with lein project descriptions, or support an uber{war,jar} for
getting our application in place, would be awesome.

 Coming from a Ruby background, all of the above were pain points for
 us. Do these same pain points exist for Clojure apps?

Aside from futures, all of those have been, or are, pain points for us
getting bootstrapped in our Clojure project.

 TorqueBox also supports clustering, which allows load balancing of the
 web component as well as cache distribution and horizontal scaling of
 async tasks, scheduled jobs, and services. Clojure has built in async
 processing and futures, but they use an in VM thread pool, correct?
 How would you scale that?

More or less the same way, as near as I can tell.


 A common TorqueBox idiom is to leverage Ruby in the web tier and Java
 in the services/data tier. Are there any Ring-based frameworks that
 make Clojure more appealing than Ruby in the web tier?

From our point of view, Clothesline is an Erlang WebMachine clone and
has been awesome for getting our RESTful service working nicely.  It
decomposes the process of correct HTTP request handling effectively.

For strictly user-facing design we are mostly interested in richer
client side code, so having something focused more on good API than on
easy click-refresh page design makes that kind of moot.

 Or does integrating a Ruby web app with a colocated Clojure service
 make more sense? It should be fairly easy to loosely couple them via
 messaging.

We expect to be doing both of those things over the next year or so.

 Speaking of which, if you are using Clojure to process data generated
 by other apps/languages, how is that data communicated? Would language
 agnostic messaging be useful here?

We encode to JSON, which is sufficiently rich, as well as sufficiently
feature poor, that it hits a good balance.  We can express and
document interfaces well between components around those basic
structures, and that in turn makes it easy to get interoperability and
third party developer support built in effectively.

From where we sit the three things that would be convenient are:

1. REST API for messaging which accepts JSON.  (I see HornetQ delivers :)
2. Built in JSON encoding and decoding in the message queue wrapper.
3. Clojure multimethod-like dispatch on messages.

For 3, right now we have a structure { command: some name here,
... }, and dispatch on that top level command key (and, possible, a
version tag) to our top level handler.  Being able