[Catalyst] Re: Development environments and performance

kevin montuori montuori at gmail.com
Wed Jan 16 22:59:26 GMT 2008


>>>>> "DR" == Dave Rolsky <autarch at urth.org> writes:


 DR> I'm thinking that a sane budget is $2,500 per developer machine
 DR> (with monitor). Is that unreasonable? Do you really need to save a
 DR> few hundred bucks on ram?

it's not so much that it's unreasonable (though the extra $700 apple
charges for 4 instead of 2 GB certainly is) as unnecessary.  actually,
the "at least" part made me chuckle.  i've honestly never felt
constrained by 2 GB, but whatever.

 >> i'd have to disagree.  if you have a bunch of junior developers
 >> writing code, a shared (to some extent) development environment can
 >> aid in enforcing good development habits.

 DR> This is what automation was invented for. At several past positions,
 DR> I've set things up so that development consisted of checking out the
 DR> source and running a "set up my dev env" script that created/updated
 DR> the database, inserted test data, set up any servers needed, etc.

so resources should not be shared in a development environment at all?
everyone gets their own oracle server *instance* (not database)?  it's
one thing to crank up a new database and slap in a schema, something
else entirely to maintain a separate instance of oracle.  i've seen
grown men cry trying to install it (and get the instantclient libs,
tnsnames.ora, &c working).  

 DR> That said, I think good developers should have some minimal sysadmin
 DR> skills, and should be comfortable setting up a DBMS or LDAP server on
 DR> their own machine, and difficult installations can be scripted.

that's naive.  not that i don't agree (i do, very much so).  the sad
reality is that we're having a difficult enough time finding developers
(for a $75k/year, 2-4 years experience position) who can even discuss
what LDAP is, never mind try to configure it.  maybe everyone in your
shop is a reasonable sysadmin, but that's not what i've seen.

 >> my suspicion is that in shops with poor shared development
 >> environments, the systems administration is more to blame for the
 >> suitability issues than the fact that the environment is shared.

 DR> Well, not if there's a _resource_ issue. If, as J Rockway described,
 DR> you have 40 people sharing one machine, you're probably screwed no
 DR> matter how good your sysadmins are.

of course you're right, but a good sysadmin wouldn't try to put 40
people on one machine.  and i wouldn't say that machine equals
environment.  whenever possible it's nice to develop (yes, actually
develop, not just test) on an environment similiar to what production
looks like.  if that's distributed fast CGI across more than one
machine, having developer access to a similiar environment will save on
having unplesant surprises later.

 >> catalyst allows for a particularly nice sandbox though, using the
 >> devlopment httpd.  we're having a lot of luck providing a (robust, but
 >> not 4GB per devloper!) shared dev/sandbox environment with each of 8
 >> or so developers running a dev httpd.  we then releasing code to
 >> integration for regression testing.  i'm certainly not seeing the
 >> performance problems that have been reported on this list.

 DR> Presumably that depends on how many devs you have. However, I'd be
 DR> going nuts if I had to deal with other devs changing the database
 DR> schema, or even just changing the state of the data while I'm trying
 DR> to develop against it.

presently, development (database and LDAP) schema changes are managed by
the release manager (which makes sense if the changes are going to end
up in integration, test, and production).  developers have access to
their own copies of the schema and data that can be refreshed at their
leisure, but DBA services are provided centrally, so backups (and
restores) "just happen" on sandbox databases.

 DR> I stand by my position that any place not providing individual
 DR> environments is backwards.

and i'd maintain that i've seen very successful setups that provided
centralized services for development.  i wouldn't advocate that everyone
try to share a working directory, or a database, or an apache instance,
but having decent administrators provide a reliable and consistent
dev environment has benefited us in a number of ways:

  -- code that's been tested by the developer in development will almost
     always run in integration because the versions of the libraries are
     consistent.  furthermore, there's a good understanding of what's
     required to deploy code that's been written against the development
     environment.  less so when people tell me that "it runs on my
     machine, i don't konw why it doesn't run in integration."  

  -- experienced developers new to the environment waste almost no time
     trying to futz around getting all the working parts configured
     correctly.  we run a setup script and volia, their databases, ldap
     instances, apache sandbox, SSO configuration, firewall
     configuration, &c. are complete and correct.  when upgrades are
     done to any of the software, these are mostly transparent to the
     developers.  and backups (and recovery!), security, access from
     off-site, redundant power, &c. are all included free of charge.

  -- junior developers end up in the middle of a working environment
     rather than frustrated trying to piece together their own bit by
     bit.  i realize that our shop is a little abnormal in that we're
     higher ed and end up with our share of just-graduated and
     work-study types, so this point is actually very important to me.

note that just because an environment is provided doesn't preclude
cranking out some code elsewhere.  but it does provide a proving ground
*before* commits are made to VC.  this almost 100% eliminates the "it
works on my desktop" complaint.

please don't misunderstand me, it's extremely possible to have lousy
centralized services (jonathan's was a great description of that
too commonplace scenario).  it's also possible to provide developers
with services, tools, and resources they need to get the job done
while removing the headaches of doing it all yourself.  if the choice
were between the former and "do it yourself", i'd be in favor of the
former too; my argument is that the latter can (and does, sometimes)
work.

obCatalyst (finally): part of the reason i like catalyst so much is the
ease with which it's possible to crank up individual development servers
(even, for instance, two versions of the same code) and i'd repeat that
i've found them to be very lightweight and work well in a shared
resource setting, your mileage probably varied.  

cheers.
k.

-- 
kevin montuori



More information about the Catalyst mailing list