Firstly, thanks for the reply.
The structure of the code is roughly like three tier architecture with all the tiers are running in one apache process (compiled with mod_perl), so they are only logically separated. I have database layer, which abstract the SQL creations and database connections. Then there is the business logic layer, which implement the (surprise!) business logic with all modules being coded in object oriented way. And the top layer is the application layer, which basically is a web-application-framework-wannabe that I wrote myself due to unavailability of the framework that meets my needs.
The new architecture that I am planning to create is splitting the three layers into different applications and make them communicate with XML-RPC or other communication protocol. And probably also split one or two sub system that warrants running on their own to become an independent application. We need to do this to allow us to scale to the next level.
Another big thing in this new architecture is the new database structure. Currently we have hundreds of databases with the same schema that we keep up to date using a script. We want to move all of them to one database so we can use facilities provided by the database to improve performance and keeping data integrity.
I have Perl Medic book, but I haven't read it yet. But I will. Looking forward to hearing from you.