The solution is a Web engine that selects accessories (shoes, bags, etc.) for users matching their preferences in style profiles. The new personal selection for each user (called “showroom”) is created monthly. After the user places the first showroom order, he or she becomes a member. Once a user becomes an official member of ShoeDazzle, his/her billing information is kept on file and he/she is charged a fixed amount of money on the sixth day of each month. The user can skip the monthly payment. If users don’t see anything they want in the showroom, but want to see more styles, they can request a second selection of shoes, handbags, or jewelry sets. The system features integration with social networks (Facebook, Twitter, and YouTube).
The customer is a California-based company that offers fashion and style related services.
They turned to Altoros to optimize the existing solution: enhance its performance, add new features, and test the existing functionality. The company also needed Altoros to share its knowledge and experience in Ruby on Rails development with the customer’s development team. Our team had to work both off- and onsite to meet the customer’s requirements.
The solution has to store and process large- scale data: there are 4.5 million members registered, for each of them, the personal selection is created monthly. Showrooms are created on one and the same date for all users. This increases the number of visitors greatly, which causes enormous database loads and affects the overall performance. Our team had to work with the existing database architecture. That is why the number of solutions we could offer to solve the performance issue was limited.
The team implemented the Object-Relational Mapping (ORM) approach with acceptance of its limitations to process database queries. Compared to traditional techniques of exchange between an object-oriented language and a relational database, ORM reduces the amount of code that needs to be written. Still, ORM cannot always be used to process complex, database-specific queries. That is why we use ORM to process up to 80% of simple database queries, the rest of the queries that are more complicated containing 4-5 tables are processed with MySQL. This allows us to efficiently use both ORM and traditional MySQL techniques to optimize the performance.
The performance of the solution has increased greatly. Our team continues to work with the customer onsite sharing experience and knowledge in Ruby on Rails development. Altoros implemented a number of software engineering methodologies (SCRUM, continuous integration) to optimize the development processes and collaboration between our teams.
Ruby on Rails, jQuery, rSpec
Client Platform/Application Server
IE v.6+, Firefox v.3+, Safari, Chrome