17 January 2007

Rube Goldberg Machine

i am beginning the long process of importing posts from my old blog so's i can delete it from the intertubes. here is the first...

An incredibly overcomplicated system that breaks, stomps on, and further soils the concept of humane interface.

example:

I want to delete records from an Enterprise Data Cloud. The logical process for deletion is as follows:
  1. Figure out which table you want to delete from.
  2. Select all data associated with those records--everything.
  3. Partition the total number of records, knowing that the message you are about to send can't be over size X.
  4. XML-ify the message, embedding all kinds of random-character identifiers that you should just know.
  5. Put all messages in a QueueQueue to throttle the number of messages sent at any given time.
  6. Send each message to a message queue, no more than five at a time.
  7. Monitor the immediate error queue to know when an immediate error has occurred.
  8. Monitor a reply queue to know when each message has completed.
  9. Parse each reply to understand how many records out of each message were deleted.
  10. Re-combine all results into one statement for a user.
  11. Rinse. Repeat.

If you are asking yourself "Why not just delete the records from the database?," you are not an architect. All enterprise architecture depends on properly implemented Rube Goldberg Machines in order to justify calling it enterprise.

i have also found another real-world(?) example of the RGM.

No comments:

Post a Comment