Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What standards does your team enforce for a major-version code deployment?

I'm curious as to what sort of standards other teams make sure is in place before code ships (or deploys) out the door in major releases.

I'm not looking for specific answers to each, but here's an idea of what I'm trying to get an idea of.

  • For server-based apps, do you ensure monitoring is in place? To what degree...just that it responds to ping, that it can hit all of its dependencies at any given moment, that the logic that the app actually services is sound (e.g., a service that calculates 2+2 actually returns "4")
  • Do you require automated build scripts before code is released? Meaning, any dev can walk onto a new box, yank something from source control, and start developing? Given things like an OS and IDE, of course.
  • How about automated deployment scripts, for server-based apps?
  • What level of documentation do you require for a project to be "done?"
  • Do you make dang sure you have a full-fledged backup plan for all of the major components of the system, if it's server-based?
  • Do you enforce code quality standards? Think StyleCop for .NET or cyclomatic complexity evaluations.
  • Unit testing? Integration tests? Performance load testing?
  • Do you have standards for how your application's error logging is handled? How about error notification?

Again, not looking for a line-by-line punchlist of answers to anything above, necessarily. In short, what non-coding items must a code release have completed before it's officially considered "done" for your team?

like image 202
Chris Avatar asked Mar 31 '09 13:03

Chris


1 Answers

The minimun:

  1. unit tests work
  2. integration tests work
  3. deploy on test stage ok
  4. manual short check on test stage

Better:

  1. unit tests work
  2. checkstyle ok
  3. integration tests work
  4. metrics like jmeter and test coverage passed
  5. deploy on test stage ok
  6. some manual tests on test stage

finally deploy on production stage

All unit and integration tests work automatically, best on a continuous integration server like CruiseControl done by ant or maven. When developing webservices, testing with soapui works fine.

If a database used, automatic upgrade is done (with liquibase for example) before deployment. When external services are used, addidional configuration tests are needed, to ensure URLs are ok (head request from application, database connect, wsdl get, ...). When developing webpps, a HTML validation on some pages will be usefull. A manual check of the layout (use browsershots for example) would be usefull.

(All example links for Java development)

And last (but not least): are all acceptance tests still passing? Is the product what the owner wants? Make a live review with him on the test system before going further!

like image 121
Arne Burmeister Avatar answered Oct 20 '22 09:10

Arne Burmeister