Trevi is not only a fountain in Italy, it’s our new application framework as well. We migrated our first pages to this new platform and brought them online three weeks ago. But let me explain the story of Trevi.
There’re already thousands of web frameworks out there so I would sink into the ground if we really wrote another one. But serving pages for 2 million unique clients, it would also not have been a solution to just go to a shop and take the beautiful looking, nice boxed xyz framework from a big company. So my co-worker (and Trevi project lead) Maarten started a year ago to evaluate a framework that fits our needs best.
Zend Framework looked like a nice solution. Zend says that Zend Framework is designed “to embody extreme simplicity & productivity, the latest Web 2.0 features, simple corporate-friendly licensing, and an agile well-tested code base that your enterprise can depend upon.” But what we probably liked most is that ZF allowed us to replace every component in the framework. What we did in some cases for example with eZ Mail – it’s just a very nice component that we’d like to use instead of Zend_Mail.
We had a lot requirements for MVC and Database access that we did a lot of own stuff there. Jia worked most of spring 2007 on our Database component that should be easy to use but also as fast as possible. I fought with the Zend_MVC component to fit it to our needs. I was really happy that Pádraic Brady worked on this component as well and we integrated his Zend_Enhanced Code in a very early stage and covered it with some high level tests. This saved us a lot of work. We are more than happy to have this code in ZF 1.5 which will be published (hopefully) soon.
After the summer we started to migrate page by page and it took a lot of time. At first, the pages looked simple but often, there was a lot of magic going on behind the scenes. This forced us to take a closer look at the old code – which sometimes turned out to be a very big mess.
During this time our team grew very fast. Maarten, Jia and I got support from our Belgrade team which grew to four developers until the end of 2007. In Switzerland Thilo supported us with testing and Kevin joined our team as he finished his last project. So we migrated just page by page.
With clever caching and proper code we managed to reduce the number of queries on all pages. With a clever design, separation of concerns, restrictive coding guide lines and a lot of unit tests the new sites already run more stable and are easier to maintain then the old ones.
On 18. December we released the first dozen pages, mainly simply ones, like the about-pages or the mobile stuff. It nearly ended in a disaster. We had some hassle with site redirections and apache configs. Finally we found out that we forget to finish the ad implementation, it was just not integrated in the page! Hell what a management fault from me to not check that.
So we canceled the launch and tried it again on 20. December and this time everything worked fine. Surely we had to release nearly a dozen bug fix releases during that day, but actually nobody but the development team found out that we launched Trevi. Some tilllate coworkers found little issues that we fixed soon, but really nothing big. Some troubles with a newer PDO Version on the live system stopped the special site from working so we replaced this site with the pre-Trevi one on the live system.
During the next month we will release migrated pages step by step so we will have migrated all public sites (there are tons of admin and crm pages to go) in the first half of 2008. There will be also some innovation there, like a new search and other completely new pages. As soon Zend Framework 1.5 (the former ZF 1.1) is going to be published we will try to migrate to it.
As soon as we migrated all our pages to Zend Framework we are probably the biggest site that is running on ZF and, let me dream, in the summer we’re probably the first top-1000 site that runs Zend Framework.