How we did it: Mission critical HawaiianAir.com website powered by MOSS 2007
The following guest blog entry is written by Jeffrey Hong and Avneesh Kaushik, who are Architect and Senior Consultant, respectively, in Microsoft Consulting Services, and who were the Technical Lead and SharePoint Lead, respectively, for the MOSS-based Hawaiian Airlines website that was launched about a month ago at http://www.HawaiianAir.com. While a formal case study is still in the process of being published (keep an eye on it here), Hawaiian Airlines has given us permission to post this blog entry now.
<Lawrence />
How we did it: Mission critical HawaiianAir.com website powered by MOSS 2007
About a year ago, when Hawaiian Airlines planned to redesign the look and feel of their website, http://www.HawaiianAir.com, they wanted a solution that would improve the authoring and management of the website’s content. After an evaluation, they decided to take advantage of MOSS 2007’s Web Content Management (WCM) features even though the product was still in beta. So, they joined the MOSS 2007 Technology Adoption Program (TAP) and engaged Microsoft Consulting Services (MCS) to implement the new website.
The HawaiianAir.com website is mission critical for Hawaiian Airlines because it transacted the majority of the company’s estimated $880 million in revenue last year. The original website consisted of a mix of “classic” ASP and ASP.Net pages. There were about 250 classic ASP pages. A critical piece of the website for booking tickets (known as the “Danno” application, which you would understand if you were a fan of the Hawaii Five-O TV show) and HawaiianMiles (the frequent flyer program for Hawaiian Airlines) had been developed as ASP.Net 2.0 and 1.1 applications.
Early on, we made a crucial decision to separate the implementation of the project into two websites. The majority of the content heavy “classic” ASP pages would be migrated to MOSS and retain the default HawaiianAir.Com URL (the “MOSS” site). The Danno and HawaiianMiles applications would be implemented with ASP.NET 2.0 in a separate Apps.HawaiianAir.com subdomain (the “Apps” site).
The initial site design was provided through a previous engagement with Frog Design. Hawaiian Airlines' Electronic Marketing Group (EMG) then took Frog’s design and further customized it for the final look. Frog Design and the EMG both developed the site design with Adobe PhotoShop. This caused some grief for the project team in translating the Photoshop images to the way that the website would actually look and function. The final implementation required trade-offs in look/feel/performance.
Here’s a screenshot of the website shortly after it launched:
MOSS 2007’s use of and compatibility with ASP.NET 2.0’s key features allowed us to do joint development of both the MOSS and Apps sites. Shared master pages, the navigation system (based on sitemaps), and forms authentication reduced the team’s ramp up time to learn MOSS and provided a common architectural foundation for both sites.
We customized the master pages using the new “Features” capability in MOSS. We based our navigation on the xmlsitemap provider due to the hybrid nature of the site design. We created a set of page layouts to support end user content authoring. We made extensive use of ASP.NET 2.0 web parts to host various dynamic global components such as the Task Bar, Navigation, and Booking Widget that were used across both sites. Once the master pages and the layouts were ready, we focused on content migration. This portion of the project went fairly smoothly.
We faced some hurdles midway in the project, which was shortly after the RTM of MOSS 2007 in mid November of 2006. Our initial performance testing numbers were not very good. Our baseline implementation had the home page at nearly a 1 MB (megabyte) payload, and it rendered about twice as slow as that of the original site. Other pages were rendering just as slowly. So, we spent more than a few late nights trying various optimization options and managed to reduce the size of the pages by a few hundred kilobytes, but it was still not good enough. Further analysis revealed that some of the heaviest pieces of the page payload were the core.js script file and other related Javascript files added by SharePoint.
This was the perfect opportunity to utilize the “lifeline” that’s one of the key benefits of participating in the TAP. The “SharePoint Rangers” (Steve Peschka and Jon Quist, in particular) came to our rescue. They worked directly with the SharePoint development team to get us a workaround, which deferred the downloading of core.js on the production Internet facing site but retained it for the internal content authoring site. This page optimization technique was later documented (here) on the ECM Team Blog for other customers to leverage. The result was a significant reduction in the load time of the pages before the user could interact with them. The overall performance gains were realized from both the reduction in page size and the addition of the BLOb (binary large object) cache optimization that were suggested by the Rangers. Several pages on the site are still quite hefty, so performance optimization remains a work in progress.
From a server load perspective, the performance of MOSS 2007 exceeded our needs. Our front-end web servers are Dell 2950 PowerEdge boxes with Intel Dual Core 2.0 GHz Xeon processors and 2 GB RAM. We placed a test load using Visual Studio 2005 Team Test Load Agent and saw a throughput of 884 ISAPI requests/second while the target server’s CPUs were running at 37% utilization with 1.5 GB RAM used. This gave us an overall throughput of about 9 MOSS pages/second on a single server, which was well beyond our performance requirements.
Our next hurdle was in configuring the workflow to deploy content from the Development/Authoring environment to Test/Staging and then to Production. Once the workflow issues were solved, we started deploying the MOSS site on regular intervals from the dev/authoring servers to the test/staging servers for quality assurance and verification. We started seeing unexplained behavior with some of the pages showing missing images and incorrect hyperlinks. The content looked fine in the dev environment but had broken references in the test environment. Our analysis narrowed the problem to a few pages sharing some common layouts. These page layouts used the Content Editor Web Part (CEWP). We discovered that when the CEWP’s content is added or modified with the built-in Rich Text Editor, relative URLs in the HTML are converted to absolute URLs. This caused the affected pages to fail in the other environments because the images and hyperlinks referenced content in the dev/authoring environment rather than the environments on which the pages have been deployed. We had to switch out the CEWPs and use Publishing Control RichHTML fields instead. These fields “fix-up” absolute URLs back to relative URLs when content is published. There were a few places where we need to keep the CEWP because we wanted Input tags that the RichHTML field did not support. Unfortunately, in these cases, we had to fix-up the URLs by hand via the Source Code Editor in the CEWP.
Lastly, we needed to provide an integrated customer experience between the MOSS site and Apps site. We got some pointers from Scott Guthrie’s blog on how to share forms authentication cookies and implemented the functionality without a hitch. We did have a few minor issues with testing the sites between various environments with SSL, but we’ll leave that for another blog entry.
The HawaiianAir.com website was quietly launched on March 6, 2007, a Tuesday, without any formal announcements or fanfare. On that first full day, the site had over 48,000 unique visitors! The site has been live now for a little over a month without any major issues, so the project team is very proud of the work that we’ve done. We have already started on the next phase of further enhancing the site, and we will provide more details about that as well as in-depth traffic and transaction metrics in a follow-up blog entry in the near future.
Mahalo!
Jeffrey Hong, Architect
Avneesh Kaushik, Senior Consultant
Microsoft Consulting Services