Application Architecture
After you have defined and documented the points just discussed, you can start building the actual architecture for your application using Cocoon. You need to define the various documents you want to publish through the web site and work out what sort of pipelines you need in order to generate the different formats.
Here are some of the types you need for Rewinders Inc.:
Pipelines that obtain data from a file and format that data in HTML or WML (depending on the browser)
An additional pipeline that sends an email if a particular document is chosen (such as the Cool Blue Rewinder)
Pipelines that access data from a database and format it in PDF (for online product handbooks)
A pipeline that accesses online industry data and formats it in HTML
A pipeline that receives the incoming forms data from the feedback form and saves it to a database
As soon as you have laid out the types of pipelines you need and have decided how many of each you require, you might need to think about splitting them between sub-sitemaps to ease maintenance of the complete site. Another alternative might be to use content aggregation to combine separate pipelines into a single pipeline that is then formatted for output.
Because a complete application architecture is seldom confined to just one area, such as what you build with Cocoon, you also need to think in advance about things such as bottlenecks that might occur when you roll out your solution:
What would happen if all 30,000 employees accessed the "Employees Only" page at the same time?
How will the system react when all the customers hit the "Cool Blue Rewinder" page at exactly the same time?
Will the email system be able to cope with all the emails?
These are the sorts of questions you should ask yourself while designing the application architecture. This brings up one of the most important aspects of such a system: performance.