3.5. Solution Analysis

Updating jcrew.com using server-side Java technologies involved several steps: analyzing the user scenario, determining a general architecture, then deciding how to apply specific Java technologies to the architecture.

3.5.1. User Scenario

Customers visiting jcrew.com navigate the site from three different status levels: anonymous users; registered users that have not logged on, or registered; and logged-on users. Market segments are created by collecting and analyzing customers' site behavior for all status levels and evaluating transaction data from catalog and online purchases. Each customer can be classified into defined market segments. This attribute is stored as part of the customer's profile. For example, if a customer repeatedly browses men's business casual pants and cashmere sweaters, segmentation analysis can derive a “men's classic” segmentation. This enables merchandisers to personalize online content such that product recommendations, promotions, and product placements can be tailored to that customer's interests. “This enables J.Crew to measure the effectiveness of various merchandising strategies and react quickly to high-performing and under-performing campaigns,” says Laura Bertarelli, a senior manager at Fort Point Partners.

The underlying JavaBean and JHTML technology enable this dynamic presentation. A JHTML page begins as a plain text file with elements of HTML in it. The elements, called droplets, can be passed on to parameters presented to the JHTML file by the JavaBean logic. The JavaBeans in Dynamo Application Server (part of the ATG Dynamo solution) pull out request-specific content, manipulate it as dictated, and pass the parameters to the JHTML page. The JHTML page is then compiled into a Java Servlet, which renders the content into a dynamic page according to user attributes. “The beauty of this technology is that you can completely control the level of dynamic presentation,” says Tareef Kawaf. “And from a developer's perspective, JTHML and consequently JSP technology allow content developers and component developers to focus on what they do best, without having to worry about whether the logic and the Web components will be compatible.”

Tying products in the database to market segments provides J.Crew with many benefits. The application server is configured to track online sales and measure which items in the market segments are selling best. When a user logs on, he or she is presented with a dynamic “what's hot” page that promotes the highest-selling items for that segment. This process, called “dynamic merchandising,” runs automatically and cuts down by more than 50 percent on the time and resources that are usually required for such extensive market reporting.

Fort Point Partners designed and developed a complex promotions engine within Dynamo Commerce Server that enables J.Crew to offer catalog and in-store promotions online. This ensures a more consistent buying experience for the customer; the same promotions are now available to customers across various channels. The promotions engine has four levels.

  1. Item-specific level promotions allow customers to enter a coupon code to receive discounts on an item or a set of items.

  2. Global-item level promotions give customers discounts across item segments such as men's pants or women's shoes.

  3. Session-specific order level provides customers with specials that are only valid for a particular user session.

  4. Global order level gives customers discounts off the total cost of any purchase.

Dynamo Commerce Server receives the request for discounted pricing information from Dynamo Application Server. A JavaBean is created to process and store the discount, and the bean is sent back to Dynamo Application Server to be presented to the customer via JHTML.

Using the personalization engine, these coupons can be tailored to individual preferences, as well. For example, an anonymous customer may have been looking at a cashmere sweater during the last few visits to the site. It appears the user is interested, but perhaps the item is too expensive for him or her. The application recognizes that and flashes a discount coupon to the customer.

The architects were able to quickly and easily define the meta data within the Oracle database using Extensible Markup Language (XML). XML files reside within Dynamo Application Server and describe the objects for the personalization and commerce servers. Using this model, the commerce and personalization server can perform database access operations using JDBC connections.

“The Java programming language allowed us to pool our resources together and develop these complex discount processes very quickly and easily because of the developer-friendly nature of the language,” says Ben Kearns, senior technical architect at Fort Point Partners. “Other object-oriented languages aren't as intuitive and consequently make it difficult for multiple developers to gauge the code written by previous programmers. The Java programming language is very clean and easy to work with and allows for very fast time to market.”

J.Crew also offers its customers gift cards through either its stores or its catalogs. Each gift card is assigned a number that can be entered onto the Web site when a user logs on. The JavaBeans in Dynamo Application Server pull out the user profile object, and update the user's account by crediting the value of the gift card to the user's available balance.

Customers can now create address books on jcrew.com that allow them to enter and store multiple ship-to addresses. For example, customers can store the addresses of their friends and family members and instantly purchase and ship items to them.

“What we see at J.Crew is an excellent example of the power of the J2EE platform. The J2SE platform—which the J2EE platform is built on—is one that emphasizes open standards for communication among objects and application programming interfaces. This allows developers to build anything that they want, quickly and easily,” says Angelo Quagliata, director of strategic alliances at Fort Point Partners. “All the functionality you see there is the result of the intuitive nature of the language. All you need to do now is write the logic within the application server. This was not such a simple task before the framework was established.”

3.5.2. Connection Pooling

Each Java virtual machine hosts an instance of the Dynamo Application Server. Within the Dynamo Application Server, the development team created pools of JDBC connections between the application server and the database. This pool can be configured to handle any number of concurrent connections, though its primary function is to serve as a controlling layer that limits hits to the database. If the number of concurrent user requests at any time exceeds the number of connections that has been configured into the database layer, the new requests will be placed in a holding pool until connections are made available. The previous architecture had no controlling layer, so it allowed infinite hits to the database, which overloaded the database and caused stoppages. By taking advantage of JDBC technology, the solution provides better management of the amount of work that can be active in the database in any moment.

3.5.3. Caching Database Requests

Within the Dynamo Application Server and Dynamo Commerce Server, there is a database layer called relational views, which is built entirely on JDBC. This layer performs intelligent caching of the most heavily used SQL queries to the database, storing the query results in a cache table within the application server. iPlanet Web Server is configured to pass requests for data to Dynamo Application Server. When the Web server routes database queries to the application server, Dynamo Application Server verifies the request against the cache table before sending the request out to the database. In this way, further work is offloaded from the database. “We wrote all our own cache tables in Java,” says Tareef Kawaf. “This cuts down on the hits to the database considerably. There are many repeating requests coming in from the customers, and caching is a brilliant way of cutting the load on the database.”

3.5.4. Dynamic, Personalized Presentation

Each customer registered with jcrew.com has a profile object within the Oracle database, which includes not only the information provided by the customer, but also a log of the customer's browsing and purchasing behavior during visits to the site. This allows J.Crew to target promotions to each customer, based on the customer's expressed interest.

Whenever a user interacts with the site, an event can be generated—for example, adding a product to a shopping cart or browsing a specific item in the online catalog. Dynamo Personalization Server contains logging services that allow application developers to record these events in any number of formats. Any set of events can be configured to change aspects of the user profile object, which resides in the server's memory. The user profile information is usually configured to persist in the database.

When the user logs back onto the site (Figure 3.2), the JavaBeans in ATG Dynamo pull out the user profile object and previous user behavior data, all of which determine which special promotions the user will be offered. The JHTML page, which is compiled into a Java Servlet, can use the profile information to determine the presentation form that is desired. A user who had a saved shopping cart can be shown the cart, which would load the various JavaBeans representing the items in the order.

Figure 3.2. Following a Typical Transaction Through the Infrastructure Tiers


For example, a “person object” will have “name” as a parameter. A JHTML page can be programmed to present the name parameter of a person object. A JHTML page can be written with various elements, such as dynamic targeters, which could be written to pull out the products matching the segment to which a user belongs and present the pages to the user, thereby tailoring the experience to the user's needs. The entire JHTML can be a dynamic presentation, or it can be used as a template with small parts of the page pulling out dynamic content.

3.5.5. Multilingual Support for Expansion into New Markets

With a strong multinational brand presence, J.Crew knew it was missing some key sales opportunities by not having support for other languages and countries. The company asked the Sun Professional Services Java Center to modify the Web site's business logic to support other languages and to satisfy country-specific business rules. It was decided that the first expansion would be support for Japanese customers.

The Java team was called onto the project in July 1999. The launch date was set for October of that year, which left the team with only two months to modify the platform. “Luckily, we've done this kind of localization project before,” says Michael Dykes, practice manager at the Tokyo Java Center. “We knew that the Java-based architecture would be easily modified to support different languages. We didn't have to create much new code at all. We just modified the existing logic to branch off if a user needed a different language. All the components were there, so we were able to make this a multilingual site very quickly by reusing all the existing JavaBeans and other objects.”

When a customer first visits jcrew.com, the language preference is set—either English or Japanese. Jcrew.com then sets a cookie in the customer's browser that announces to the application which language to present for all future visits. When users visit the site, a session object is created with a local object set within the session object. The local object contains the language information. The local object works with the messaging service within the Dynamo Application Server. The messaging service identifies which type of message should be sent to the customer—an error message, for example—and pulls out the pages that contain the right language based on the local object.

But the presentation was only the first step in this project. Shipping items to other countries requires different tax calculations, and local laws can make certain items difficult to deliver. For example, shipping items containing alcohol, such as a body spray, can be complicated. J.Crew wanted to ensure compliance with all local laws and taxes if a customer purchased from another country.

The challenge for the Java Center architects was to write the conditional properties into the business logic that would determine the origin of the order. The business logic within ATG Dynamo Application Server is structured as pipelines of objects. When an order is submitted, the request is relayed to the order pipeline, which can have anywhere from 40 to 50 objects performing different services. These services include the handing off of order information to back-end fulfillment processes or the validating of inventory availability. Writing conditional logic into each of these objects would have been too difficult a task, and as the site expanded, there would have been an explosion in the number of required objects—each of which would have to be updated with country-specific criteria.

The architects therefore developed what are called Country Quirks Services within the application server, which encapsulate all the business logic for a country. The logic in these services calculates local taxes and fulfill any local requirements for shipping items. When a customer places an order, the Country Quirks Service is activated for the country to which the customer is shipping. In this way, J.Crew needs only to add a different service for each country it plans to support. With this new capability, J.Crew has prepared to further expand its international presence.

“J.Crew's first prerogative was to support the Japanese language,” says Michael Dykes. “But in no time, we developed a framework that will support any language. Any request that comes into Dynamo goes through a pipeline of 40 to 50 different objects, such as JavaBeans, Java Servlets, entity beans, and so on. Each of these objects fulfills a certain duty, whether checking inventory or serving up content from the database. By using these existing components and writing some logic that allows them to branch off to the language service, we quickly developed a plug-and-play environment that will support any language that J.Crew wants to market to.”

Figure 3.3. Layers in the Application Tier


3.5.6. Transaction Scenario

The following provides a brief description of how the J.Crew application processes a typical transaction with a registered customer who has decided to log on to the site.

  1. When a user accesses jcrew.com, iPlanet Web Server routes the requests to Dynamo Application Server, enabling the user to log in. Once the user provides a login name and a password, profile information is loaded from the database and stored in memory for further use by the session.

  2. When browsing the catalog, the request for category, product, or SKU information is passed to Dynamo Commerce Server, which checks a local cache for the information. If the items are found, they are returned to the page immediately. Otherwise, the database is queried and the entries are placed in the cache and sent back to the page.

  3. Dynamo Application Server manages the JDBC connection pooling. If a request for a connection does not find an available connection, the pool will block access until a connection is made available, thereby controlling the number of active connections made to the database.

  4. ATG Dynamo identifies which page the user is requesting. It then calls a Java Servlet to pull out specific parameters of the requested product object and renders the information on the screen by sending the information back to iPlanet Web server according to the presentation defined by the HTML tags in the JHTML document.

  5. When a user clicks on an item to make a purchase, Dynamo Commerce Server adds the item to the shopping cart. If no shopping cart exists, one is created.

  6. Dynamo Commerce Server transforms this object into a persistent object, stores it in the database, and maps it to the user ID. Whenever a user wants to check the order, this information can easily be retrieved on request, since it persists in the database.

  7. JMAPI within Dynamo Application Server generates an automated email response and sends it to the customer, confirming that the order has been placed.

  8. This order object is routed to back-end IBM CICS fulfillment and inventory systems, where the order is pulled, packed, and prepared for shipping. The back-end integration is accomplished by a direct connection between legacy applications and Dynamo Application Server using Transport Control Protocol/Internet Protocol (TCP/IP) socket-based communication.

  9. Dynamo Personalization Server logs each of these events and merges them with the user profile for market segment categorization.

3.5.7. Architecture

Jcrew.com is hosted by Digex Inc., a leading application service provider located in the Washington, D.C., area.

  1. The first tier is the front-end Web interface that was developed with iPlanet Web Server, iPlanet Directory Server, and iPlanet Certificate Server.

  2. The next tier is the application tier, which is powered by ATG Dynamo. The application tier is actually layered into three servers and resides on four Sun Enterprise 4500 servers. Each server has four CPUs and four instances of the application running simultaneously for failover and load balancing.

  3. Dynamo Commerce Server provides a means of transforming orders into persistent objects that are then stored in the back-end database. Dynamo Commerce Server also provides shopping cart functionality, the electronic catalog, and the caching of the most heavily used SQL requests to the database.

    Figure 3.4. Multitier Architecture in Place at J.Crew

  4. After the commerce tier, Dynamo Personalization Server contains JavaBean and Java Servlet logic for tracking user behavior and integrating it with the user's profile object in the database.

  5. Finally, Dynamo Application Server contains all the JavaBean and Java Servlet–based business logic as well as the database connection services. Dynamo Application Server works as a series of Java-based pipelines. The pipelines can have from 40 to 50 separate JavaBeans and servlets that control everything from database queries to validation and multilingual support.

  6. The database tier consists of two Sun Enterprise 5500 servers and four Sun StorEdge A5200 disk arrays, with nearly 200GB of storage space, running an Oracle8i database, with Oracle Parallel Server, Sun Cluster 2.1, and VERITAS Volume Manager software.

Table 3.4. Overview of Business Results Achieved by jcrew.com
Business Process Area Nature of Benefit Actual Result
Revenue Increased sales 100% annual growth in revenues to $120 million; 15% of total revenue
Marketing/merchandising Increased productivity, dynamic merchandising, improved relationships Market research time reduced by 50%, higher sales per Web traffic ratio, increase in Web sales via customer catalog and brick-and-mortar purchases
Customer service Improved relationships Higher customer retention by means of integrating brick-and-mortar, catalog, and Internet channels; more than 650,000 product SKUs
Market expansion Solidification of relationships, new customers Ability to offer products online to international customers
Time to market Quickly deploy new applications, new functionality Deployment of rearchitected, multitier infrastructure in four months; deployment of multilingual capabilities in two months

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset