I've been so busy doing Actual Work that I've forgotten to write about doing it!
Now that a lot of the modules I'll be using are more or less in place, including my new centralized security where "everything" will go to get permission to do "anything", it's time to start sowing the modified modules together in Catalyst.
Or is it?
I try to code by "Make a plan, and stick to it, unless it sucks."
Figuring out if a solution sucks is part of that, so I've taken a long, hard look at my Catalyst choice here.
Did I really pick Catalyst because it's the best tool for the job, or because it's the weapon I had in my hip holster at the time? Let's see what we're looking at here:
- About 25-50 users per set-up, each set-up will have a separate VM in a separate physical location, and will not communicate with each other.
- Roughly 0% of the data will be cached. Everything is "fresh" out of the database to the user, or it would not be given to the user.
- Performance is very important, but stability and maintainability is even more important.
- In the future, this might have to be maintained by people that don't actually know Perl that well.
So, how does this mesh with my view of Catalyst?
- Will easily handle thousands of users if Done Right.
- Caching and balancing is very easy to do.
- A little confusing to get into at first, but if maintained by a Perl-head it's the best thing ever for a web-app.
Oh. Well... That doesn't look very good for Catalyst in this context, does it?
What else is there, that will do this job in a way that might be a little simpler for my successors to maintain?
How about Web::Simple?
I've been playing with it sort of as a toy lately, and I've grown to like it a lot, but will it really work in my business application?
Yes it will, and it will work great!
What the application will be doing is mostly simple CRUD work, which will be handled by DBIx:Class and a bit of wand-waving there, in pretty much the same way no matter what framework I build it in.
The really heavy stuff isn't done by the user-facing web script at all, but in a dedicated cron-run script, so for the heavy lifting it's irrelevant what web framework is used.
Right, so now I'm not building a Catalyst app anyway, because I don't really need the heavy lifting Catalyst can do.
The great thing about this is that all I really need to re-do of the work that's already been done is to rewrite a few of the tests and search-and-replace "Catalyst" with "Web::Simple" in the documentation. Seriously.