Shirtee

A worldwide platform for individual creation of clothes and accessories with unique designs.
Shirtee Cover

Background

Our client is providing a range of services including individual design creations with the help of a product constructor, applying print to a base product, and delivery of individually designed products to end users. The client sells products on their own site, offers the possibility of multichannel sale by exporting products to the biggest marketplaces (such as Amazon & Google Shopping), and offers the possibility of product promotion. Designers working on client’s platform receive commission on the prices they set personally on every product sold.

Our cooperation with this client started with the GoMage Product Designer extension for Magento in 2014, which our team customized according to the customer’s requirements. This extension is very easy to use, enabling every user to create a product with an individual design on their site in literally three clicks.

Due to a large number of registered users (over 45,000) and 140,000+ product sets (every product having 1-25+ attributes) the customer’s website has to process a huge amount of data, causing significant server load. Before we started our cooperation, their site ran very slowly and had a negative impact on online sales. The customer was also using standard Magento functionality, which needed to be extended and customized specifically for their needs.

Key Results

10
Times increase in speed
600
Times increase in monthly revenue

Development

Task 1: Statistics Module Redesign

Challenge

To create a statistics service that would allow display of the following key parameters without additional server load:

  • Completed orders
  • Pending orders
  • Quantity of visits
  • Profit
  • Conversion and so on.

“A large amount of queries (statistics collect the data based on 10+ parameters for every one of 20,000+ designers on the site) was causing extreme server overload, slowing the website and database, whose architecture was not designed for tasks of this scale.”

Solution

Every designer now has their own dashboard where they can see their products and sales statistics. Initially, statistics were collected and processed on the Magento side. A large amount of queries (statistics collect the data based on 10+ parameters for every one of 20,000+ designers on the site) was causing extreme server overload, slowing the website and database, whose architecture was not designed for tasks of this scale. We developed a separate statistics service that works independently of Magento:

  • All data related to statistics is sent to a separate database located on a separate server
  • When a query from Magento is received, the data is sent to a queue
  • fter that, the data is sent to the dashboard of a specific user without loading through the platform.

We successfully implemented a solution with the selection of a whole set of technologies including the web-framework (Laravel), which is most appropriate for the customer’s needs, using an up-to-date database capable of creating analytical reports in real time (ClickHouse).

Result

With the statistics service moved to a separate server, and the data processed outside of Magento using solutions specifically developed for high-load applications, we significantly improved the customer’s website performance and loading speed.

Task 2: Grouping of Different Type Products

Challenge

Standard functionality of Magento does not allow grouping of a large number of products of different types - for this to be achieved, one must create many configurable products with the same print, which would overload the server and make the site very slow.

Solution

To resolve this task we rewrote the core of Magento and implemented a new product grouping item – a campaign, which is a set of configurable products with a single design but individual parameters (e.g. size and color) for each. A designer can create a campaign only while separate configurable products with individual print are not generated. Only the administrators of Shirtee can and regularly do create new configurable products available for printing (e.g. a new v-neck t-shirt, a ceramic mug with round handle, etc.).

The customer has 140,000+ campaigns, each of which may include up to 100 various product types, so there might have been a maximum 14,000,000+ separate configurable products requiring creation without our customization. Magento is not capable of handling this kind of products quantity by default.

Result

We helped the customer to implement their concept of providing every user with the possibility to create a product set (a t-shirt, a mug, a bag, etc.) using their own unique design, creating multiple configurable products without overloading their site and the Magento platform.

Server Optimization and 24/7 Support

Challenge

The customer’s website is highly visited with 15,000+ visitors per day, which obviously creates high server load. The site used to be located on two servers that could not handle such amount of visitors. Before optimization, the main page loading time was 18 seconds and the product design page was up to 59 seconds. In addition, if more than 10 users were working on the product constructor simultaneously then website performance dropped significantly, which is what the customer needed to improve upon.

“The client has 140,000+ campaigns, each of which may include up to 100 various product types, so there might have been a maximum 14,000,000+ separate configurable products requiring creation without our customization."

Solution

Our team developed a complex structure of 34 servers. All website services were relocated to separate servers:

  • Separate servers for dev and stage environments
  • 2 servers for production + 8 auxiliary servers
  • 2 servers for databases: one for production, one for dev and stage environments
  • Auxiliary services for improving performance of dynamic websites with heavy content
  • Media files storage server
  • Statistics server
  • 2 servers for API service etc.

A separate server is used to monitor performance of the whole server structure. It collects metrics from the other servers, monitors their load, available disk space and operation of auxiliary services, then informs the support team of any problems detected.

To ensure proper website functionality during the busiest periods (24,000+ visitors per day) we use Load Balancer, which redistributes live site visitors between the servers depending on the load level of each server.

Stand-alone Media Service

The customer uses a huge number of various images with a general size of over 11 TB, an extremely large volume of data for Magento. All operations related to those images used to be executed on the side of Magento (processing, conversion, storage). This was increasing page loading times and creating additional server load.
We moved all image-related operations into a separate service located on a separate server, where the images are stored and from where they are pulled by corresponding queries without overloading Magento.

Result

“...the loading time of the main page improved 6x (3 seconds) and loading time of the product constructor page improved almost 10x (6 seconds). Now even 4000 active users working simultaneously do not affect website performance.”

Due to optimization of servers and the structure we created, the loading time of the main page improved 6x (3 seconds) and loading time of the product constructor page improved almost 10x (6 seconds). Now even 4000 active users working simultaneously do not affect website performance. Hosting expenses were also reduced 4x ($1000 for 34 servers monthly), and all servers work seamlessly.

Magento Support

We are working on development of the customer’s site on a permanent basis to ensure that the live site works smoothly and there is no negative impact on the customer’s business.

Support tasks:

  • Implementation of new functionality regardless of development complexity
  • Customization of the features already being used
  • Constant monitoring of site operation and malfunction searching
  • Server maintenance.

Realization

Depending on the quantity of completed tasks, we can do several releases per month. All newly developed features are initially checked by our QA specialists on a specially created dev server. If there are no errors, all new features are moved to a stage server identical to the customer’s live site.

With the help of a series of automatic tests, we evaluate whether the new feature creates any additional load and if it interacts properly with existing functionality. This kind of approach allows us to reduce the probability of errors and fix them before we release the new feature to the customer’s live site.

The customer can review the progress of tasks on YouTrack – the issue tracker used by our team to log all information about the process of development and amount of time spent on every task.

For the code management and continuous integration process we use GIT, the version control system that stores all code changes and releases so that we can easily return everything to a previous release state in the unlikely case of failure.

Result

We have been working on the improvement of the customer’s website for over 2 years now at the rate of one release per week. The quantity of designers working on the platform has increased by 10x, and the number of clients has grown ...x in the past year. We consider these indicators of the customer’s business success and growth as the best evaluation of our job well-done.

We have been working with GoMage for over 2 years now, and we are very impressed with how clearly their team understands and implements all our ideas.From the moment we started partnership, our business has grown several times, so now our site needs to handle much more customers every day. GoMage have done a great job adjusting our site and extending its possibilities.
I would gladly recommend GoMage to anybody wanting any kind of website developing.
Nino Boender
Founder