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