Greetings!

I know this may be a biased audience, it being the mod_perl mailing list,
but I since I don't have a plan, I'm trying to crowdsource one :-)

At $employer, we have chosen to build our next revision of our application
using a Plack/PSGI stack. We have been sold on Plack/PSGI as a "next
generation" architectural approach. We like the way it provides layering,
it allows you to build middleware which solves generalized problems, and
overall it's relatively clear that the Perl community is embracing this.
First and foremost, if you believe this to be a fundamental error, I would
love to hear from you.

However, the real question is one of *deployment platform* for our
Plack/PSGI application. We have two seperate camps at $employer, one that
believes that given our Plack/PSGI approach, we should run in a dedicated
Plack/PSGI container (such as Starman today, but potentially something else
in the future), and another camp which believes that we should deploy our
application in a mod_perl container.

So here are my questions:

1) Has anyone on this list actually run a Plack application *inside*
mod_perl? I don't actually know that I understand how one does that. Can
you speak to the relative merits of this approach?

2) Do you believe that there are any compelling reasons to pick a mod_perl
approach over a plack runner approach that we may be missing?

3) Given the fact that we are not required to maintain any of our legacy
mod_perl code, would you (given the opportunity), go with a mod_perl
solution in 2012 (to launch in 2013), or would you pick a different
approach?

I feel it's only fair to speak to my personal bias.  I have developed
mod_perl applications for a long time, and feel that historically this has
been the absolute "top of the line" in extracting performance out of my
lamp stack. However, given the migration of the community towards perlbrew,
and the slowness of distros to provide modern perl, I started looking at
other options. At $employer->previous I deployed applications using Apache
and nginx as a proxy, and Starman on the back end. I loved the ability to
run multiple starman instances with totally different codebases and totally
different process spaces, running totally different perblrews.  This made
it so a bug in one of my applications did not cause downtime or "action at
a distance" or difficult to track down errors. I felt it made my
development and maintenance easier, even if I did sacrifice performance
slightly.

Thanks for your time!

-- 
int getRandomNumber() {
    return 4; // Chosen by dice throw.
                    // guaranteed to be random...
}

Reply via email to