[Zope] Degrees of Separation
Jerry Spicklemire
jerry@spicklemire.com
Thu, 27 Apr 2000 11:40:25 -0500
Under the heading of "How to create a maintainable Zope Site", I have copied
the following from the "HighlyAvailableZope zWicki", in hopes of getting some
feedback from the CZGs (Certifiable Zope Gurus) who frequent this list. ; )
The topic is part of a page called "DevTestProd" which poses questions
about a common Development Environment, where multiple stages of Develop,
Test, Production are enforced, so that Application Code is thoroughly
verified prior to "roll-out".
"Conceptually it seems obvious that a Zope Application Framework would
require minimal updating if all components are carefully designed to keep
Content separate from Presentation. That is, "data / document" items should
be stored in some type of "database", rather than ZODB. This way users can
add / update / delete such items without making any changes in the Zope
Application Framework itself.
An advantage of strict adherance to this principle is that updating, or
"promoting" within the DevTestProd sequence involves nothing more than
replacing the current Zope "storage" (default=data.fs) with the latest
version.
The next question that comes to mind, "How to implement this simple
concept, in the real Zope world?"
But before we get to that, is this actually valid? As for "traditional"
tabular data, this is straightforward, and clearly correct. However, with
respect to "documents", isn't ZODB intended to be used as the primary
storage? Current DC documentation refers to Zope's ability to store these
Webbish, non-traditional data types, which are more object-like than
tabular data, as Zope objects, within the ZODB itself.
If Zope Application Framework components, and Zope Content are both stored
in a single ZODB, how can a clean Application Update be accomplished?
Documents (content) may be changing in an Interactive Production
Environment, while Application Components are being updated in Dev / Test.
How can Application Updates be merged with Current Documents?
Can adequate partitioning be achieved by segregating within folders? If so,
what is the best way to update a set of Application Component Folders? Can
a batch FTP process safely overwrite existing folders, and all contents?
If not, do we need multiple ZODBs, one each for Application Components, and
Documents? Is this possible within a single Zope instance? Can ZClient
objects be used, fetching documents from another Zope? Does ZEO present a
better solution?"
Thanks,
Jerry S.