Once you've determined what values need to be configured and when, you need to consider who can set them. Three entities are common: a human, such as a system administrator; another system, as when two systems negotiate a value or receive commands for inter-operation; or the system itself, when it is architected to auto-configure one or more values. A system can rely on any combination of the three to get the job done. It is assumed that the entity setting the value has been authorized to make changes to configuration parameters, but this doesn't mean that every entity should have this authority. Make certain that each parameter, or each class of parameter, is reviewed so that the full ramifications of changing it are understood . You may not want any individual user to be able to change any given parameter. If not, require configuration data to be stored on a system with administrative access protection, although this isn't a guarantee that the right system administrator will be changing the right value. If needed, you may want to consider creating an audit trail of these data by putting them into a databasea database will give you all the facilities you need to manage the audit. Later in the chapter I will recommend storing configuration data in easily accessible, human-readable files. Unfortunately, these are conflicting recommendations, and you'll have to choose what is best for your situation (no one said being a tarchitect was easy). Interesting challenges can emerge when one or more entities are granted authority to change the same parameters and you have to choose the circumstances under which one entity can override the other. This can be a sticky problem, and it is best to involve the marketect in its resolution as her input will consider your market. I created applications in which the number of active database connections is set either by the system administrator or by the system itself based on an assessment of its own performance. We allowed the system to adjust the value automatically in case the administrator set it to an absurdly low or high value. |