I eschew the use of the 'E' word, due to the repeated and blatant abuse of the term as marketing hype from empty suits, I'll assume the original author intended the term to be interpretted as "mission critical, scalable, networked, secure, fault-tolerant (or at least fault recoverable), possibly web-based, possibly transactional". Think "J2EE/WebSphere/WebLogic/et al".

I recently implemented/delivered a pure-Perl application (framework, actually) that meets many of those requirements. While it took some convincing, after I delivered the first working prototype in a few days, the debate quieted some. Then a few days later I delivered the updated prototype with some add'l features the customer tacked on, and they consented to let me proceed with Perl (they had a pretty serious jones for C++, but were smart enough to understand that the complexity and platform migration requirements would probably doom such an effort).

So here's my experience:

  1. I don't use IDEs, but the customer wanted one, so I pointed them at the usual suspects (EPIC, Komodo, OptiPerl). They've been pretty happy with Komodo. I, however, am still searching for a solution that provides a usable debugger for multithreaded (even multiprocess) apps. (Maybe someday I'll have time to pursue it w/ Devel::STrace)

  2. I decided to use a threads based solution (primarily since it had to run on Win32, where it would be threaded whether I forked or not, and I'd be running on SMP h/w). Unfortunately, as many of us know, Perl threads are a double-edged sword, and continue to be fraught with issues (jdhedden's recent excellent efforts notwithstanding). Hence, I had to build a lot of infrastructure to provide a reasonable solution to OO + threaded Perl.

  3. Staff resources were at a premium: it was basically me and half time of one of their staff. As a result, things got hectic toward the end, and testing suffered. However, the framework met most requirements. Eventually, problems surfaced during deployment (as usual), but most problems were identified/fixed within 24 hours, and the patching process using Perl couldn't have been simpler. ("Here's a new module, just run the usual make/make install."). Additionally, the app had originally been targeted for Win2K3, so thats where most testing occured. During deployment, the customer decided to switch to Linux. While there were a few hiccups, the migration was nearly painless (I think that effort may have fully convinced the customer). Finally, the biggest doubt in the customer's mind - performance - was allayed when a large number of users were able to use the framework without any noticeable processing delays. (tho I certainly still have some concerns, esp. with threads::shared, and with the large footprint resulting when 20-40 threads are in use).

  4. The biggest issue thus far has been fault tolerance/recovery (which should be a clue that this is definitely an 'E' word app). E.g., see Perl coredump analysis tool ? and Devel::STrace: strace for Perl scripts (with some seedlings) for details and the eventual solution; I'll definitely be researching more module reload and thread management capabilities in the next release cycle.

So I'm convinced that Perl is capable of meeting the 'E' class requirements I outlined above. But I do have some reservations - and a few frustrations.

To summarize:

As to the authors contentions of Perl's shortcomings:

One non-obvious issue may be the lack of a single "bible" of writing 'E' class Perl. Many Perl tomes exist, but they all tend to focus on a specific application set or API, or on the language itself. I'm unaware of any book or website that has attempted a complete and lucid discussion of building 'E' class apps using Perl, ala the shelfloads of J2EE books. (IMHO, P5EE doesn't count, its not much more than a laundry list).

In reply to Re: Perl in the Enterprise by renodino
in thread Perl in the Enterprise by Scott7477

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.