Monday, June 7, 2010

Maxim 7 Audit logs for system configuration changes

This maxim also comes courtesy of Ian. All system configuration changes must have an audit log recording who made the change, the time, and the reason they made it.

Monday, May 3, 2010

Maxim 6: Always include a root cause

This maxim comes coutesy of Ian. When a failure occurs and you either log it or return it to a higher layer in the stack, always include the root case. Also if there are important variables involved in the exception, like the destination ip, you should add that to the exception message.

Monday, January 25, 2010

Maxim 5: No queue should be allowed to grow without bound

All queues in your system must have a finite bound on their length, otherwise you risk consuming all memory available to your process and crashing. It's not just queues that should not be allowed to grow without bound, but also all resources including strings, should have an upper bound. Setting the upper bound is sometimes a delicate business, but set it must be.

Maxim 4: Webservice client should keep a query log

Webservice client libraries should maintain a log of every service call they made, the time it took to make the call, the success code of the call, the number of retries, backoff, the error code if there was one.

It goes then without saying that Webservice server library should also keep a service log of all the calls they recieved, error codes, time to service etc.

Maxim 3: The default build should build your library and nothing else

You default build target should build the minimal project artifact, e.g. jar, .deb, .so. It should not run fortify, findbugs, unit tests etc. Leave a target called all for that. Let the continuous build system build those targets, don't bother humans with them.

Saturday, January 23, 2010

Maxim 2: Encrypt sequence numbers

Don't hand out sequence numbers to your clients. Instead hand out encrypted versions of the sequence numbers if you must give them a sequence number.

Friday, January 22, 2010

Maxim 1: Zero pad numbers in strings

If you store a number in a file name or any string really, then zero pad it. Why? Because some system will want to sort it alphabetically and well if you don't zero pad it then your numbers will not be in order.