D-reizen had problems with their website with respect to stability and performance. After an architectural assessment (by Sun), D-reizen decided to have their website rebuilded by Sun.
This rebuild involved everything, from the requirements analysis and data modelling up to the deployment to the production environment.
Because of the complex datastructure of the source data, the project was divided into two parts: the data feed and the website itself. For the data feed, an Oracle application was build called 'Distiller', which transformed the source data into a more consistent and coherent structure. The source data came from several databases, which were not coupled before. In order to get a consistent and coherent structure, we needed to create interdatabase relations. This caused a lot of headaches, because there were no shared keys, definitions of concepts were different, the datastructure was totally different, etc., but we managed it to get everything working.
The website itself was build for performance. The central part of the website was a catalog containing all the holidays that could be booked. There were multiple entry points into this catalog. Because a lot of querying was done on the catalog, we needed to make that part very efficient. To do this the complete datastructure was read from the database into memory in a highly optimized datastructure, which made searching extremely fast.
To improve the performance even more, the whole architecure of the website was based on caching. Static pages and images went to a dedicated webserver, semi-dynamic pages were put in webcaches, within the application multiple levels of caching were designed in, etc. The guideline we used was to store as much data as possible as close to the client as possible. All this resulted in a very performant website.
Another point of focus was the stability and quality. Each component that could be unittested somehow, was being unittested. Almost 100% of the code was being covered by one or more unittests. Also code reviews and pair programming (for the harder parts and late at night) were used to improve the quality.
For the methodology we used a combination of RUP and XP. It was an iterative process, in which we involved the customer a lot with respect to requirements, direction and acceptance.