Hi Ali,

Ali M <tclwarr...@gmail.com> writes:

> Can you please elaborate more on this line ... maybe give examples 
>
> On Wednesday, September 12, 2012 3:45:56 AM UTC+2, Jim Crossley wrote:
>>
>> For certain applications, I would recommend using libraries to access
>> external processes like Memcached, RabbitMQ, or cron, for example.
>> And for others, I would recommend an app server.

At the risk of abusing a Clojure group to discuss the fitness of app
servers...

Successful applications are organic; they evolve; they have lifecycles.
Therefore they have to be managed: started, stopped, upgraded. They use
resources, so they may exhaust them and must be monitored and possibly
scaled.

When I refer to an "application" here, I'm referring to a single OS
process, but it may be required to interact with other processes,
perhaps a message broker or a caching service or a scheduler. Though not
maintained by you, those services each have their own lifecycles. Their
upgrade cycle is hopefully much longer than yours, so less of a concern,
but each present their own particular scaling challenges.

And maybe your app interacts with other domain-specific applications --
also written by you -- that are different enough to warrant their own
process/lifecycle but similar enough to operate on the same data.

When I refer to "you" here, I might be referring to you, or your team,
or the organization to which your team is responsible, amongst many
other similar teams, each with different skill levels, language/tool
preferences and areas of expertise.

The more interdependent processes you have -- each with their own
interfaces for management/monitoring/scaling -- and the more people
involved in evolving and supporting them, the more complex your
"application" becomes. And this is largely accidental complexity [1],
i.e. *not* the essential complexity of the problems you're trying to
solve.

An app server's *accidental* complexity, though higher than say, a
single web app, remains fairly constant as the *essential* complexity of
your domain evolves.

So recommending an app server only makes sense if its accidental
complexity is less than that of an app depending on multiple external
processes.

I hope that makes at least some sense. I've written about it before [2].
I'm happy to discuss it further, but the Immutant mailing list is
probably a better place than here. :)

Thanks,
Jim

[1] http://en.wikipedia.org/wiki/No_Silver_Bullet
[2] http://immutant.org/news/2011/11/02/enterprise-grade/

-- 
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

Reply via email to