Congratulations on a successful company! Tricky because there is no straight forward way to get from 'getting by' to bullet proof. Continuous improvement, I suspect. When you are interviewing candidates, I would ask them this question as you've described above.
If all the data lives in the database, you could just have two databases, one for prod and one for dev. Actually Rose::DB shows a way to have two environments on the main page
My::DB->register_db(
domain => 'development',
type => 'main',
driver => 'Pg',
database => 'dev_db',
host => 'localhost',
username => 'devuser',
password => 'mysecret',
server_time_zone => 'UTC',
);
My::DB->register_db(
domain => 'production',
type => 'main',
driver => 'Pg',
database => 'big_db',
host => 'dbserver.acme.com',
username => 'dbadmin',
password => 'prodsecret',
server_time_zone => 'UTC',
);
# File: startup.pl
use My::DB;
if($ENV{'MYCORP_PRODUCTION_SERVER'})
{
My::DB->default_domain('production');
}
else
{
My::DB->default_domain('development');
}
There are lots of ways to solve code deployment. In my experience, many outages due to problems in production that are unforseen or even unknowable in development. I'd probably um make sure to have good backups before the new dev starts.