Ciao!

I'm on the digest for this list, so pardon my delay in responding to
everyone's comments.

>>>>> "Chip" == Chip Turner <[EMAIL PROTECTED]> writes:

    Chip> "Bruce W. Hoylman" <[EMAIL PROTECTED]> writes:
    >> Ciao!
    >>
    >> I would like some input on an intranet web service I am currently
    >> in the process of designing, the core of which will be modperl on
    >> UN*X.

    Chip> Excellent choice.  This works quite well.  Of course, like
    Chip> others on this list, I might be a bit biased.

I'm sort of sneaking this in the back door.  Much of the development
surrounding these new objectives is centered in the J2EE architecture.
I'm taking a 'don't say much' approach until it's working and cranking
out the data.  Then I'll be able to meet any advances on architecture
choices.  It's not that perl/Apache is taboo here, just not looked upon
as an implementation solution of choice.  However it won't be the first
time I have faced these pundits.

    Chip> How often does the data change?  How is it stored on the back
    Chip> end?  You may not need to cache anything if, say, you have a
    Chip> decent SQL database on the backend.  Caching never hurts, but
    Chip> it isn't always necessary.  The Cache::* modules may be of use
    Chip> for this, though, should you still need it.  You also might
    Chip> want to consider not sharing the data in each process; the
    Chip> complexity gained vs the memory lost by storing it in each
    Chip> process may be a workable tradeoff.  I probably would try it
    Chip> first with no cache, then a per-process on-demand cache, then
    Chip> finally a shared cache, in that order.

I still have to determine the dynamic characteristics of the data in
question.  This certainly needs to be taken into account in any cacheing
or local storage of the data.  The remote data is Oracle-ized in some
7.x database instances.  When I speak of cacheing I'm referring to
taking remote data sources and making the local for some period of time,
after which they must be refreshed and localized again.  I don't believe
the service can withstand the cost of remote database access and still
be as streamlined as the requirements specify.  However I will be going
through a series of benchmarks to see just which data management
approach is appropriate.  I also am keen to the unavailability of these
external, remote data sources.  They seem to be 'down' at the most
inopportune moments.  In summation, data throughput and availability are
the two most compelling reasons for considering a localized, and I
emphasize READ-ONLY capture of the remote stores (there are two).

    Chip> Five hits/second should be absolutely no problem.  If you
    Chip> expect slow clients, a mod_proxy in front of things
    Chip> (http://perl.apache.org/guide) can help.

This is a very interesting section of the guide.  I recommend it to
everyone simply for the sake knowing alternative configurations that
include a modperl component.

    Chip> There are a lot of options, but really, I would hold off on
    Chip> deciding complicated caching schemes until you know what
    Chip> throughput you get without them.  Even then, I'd avoid
    Chip> disk-based cache systems, instead preferring Cache::* if it
    Chip> must be shared, or just global variables if it doesn't need to
    Chip> be.

This is a good point.  I'm working on securing access to the data stores
this week, so I should be able to measure throughput soon.  Loading the
in-memory stores direct from the data sources is a good idea, if
necessary.  This precludes any local storage of the data which precludes
any refresh to disk logic, although I still will need to flush/fill
memory on a regular basis.  Thus I don't want to utilize per-process
data stores, but rather a common shared memory represenetation that all
the modperl processes can draw from

    Chip> Can you be more specific about what the data looks like, where
    Chip> it resides, and how expensive loading it is?  I wouldn't worry
    Chip> about optimization yet, unless you know beyond the shadow of a
    Chip> doubt speed will be a problem.  My hunch is you can do maybe
    Chip> 50-100 hits/second on decent Intel hardware via the Frontier
    Chip> modules, so I don't think performance will be a problem.  This
    Chip> is unverified, though; I really need to benchmark it sometime.
    Chip> Maybe others have pushed Frontier to its speed limits?

I'll be able to provide some numbers and the actual data representation
later on this week.  I agree on performance numbers.  I'm getting
awesome throuput now acording to ApacheBench, but that's only with my
skeletal handler.  As it I fill it out, I plan on benchmarking each
significant piece of functionality for comparison purposes.

Should be fun.

    Chip> Chip

Thanks so much for your insightful comments.  I appreciate the time you
took to respond to my queries.

Peace.

Reply via email to