Shirtee
A worldwide platform for individual creation of clothes and accessories with unique designs.
Our client runs a worldwide platform of self-designed and customized clothes and accessories. They also provide a range of services, including individual design created with the help of the product constructor, applying a print to a base product, and delivery of individually designed products to end-users. Such print-on-demand products can be created with custom designs or with the ones sold by designers. Designers working on the client’s platform receive a commission on the prices they set personally on every product sold. The client also offers the possibility of multichannel sales by exporting products to the biggest marketplaces (such as Amazon & Google Shopping) and offers the possibility of product promotion.
Our cooperation with the client started in 2014. They already had a website developed by another vendor and the need to implement a product customization feature forced them to find a way to add it quickly. They came across the GoMage Product Designer extension, which allows users to create a product with an individual design in literally three clicks.
Our client needed to have some custom changes made according to their specific business needs. After extensive work on extension customization, our client decided to continue working with us on a long-term basis. Our team provides ongoing development and support and ensures the smooth work of the client’s website
-
Times increase in speed
-
Times increase in monthly revenue
Development
Case 1: GoMage Product Designer Customization
Challenge
Our client wanted to add new functionality to their website for print-on-demand services. They chose our extension GoMage Product Designer and needed help with its customization.
Solution
Our team installed and customized the GoMage Product Designer extension in accordance with the client’s business needs. The use of our extension allowed us to save a lot of time on the development of such functionality from scratch.
Webstore has the functionality that allows customers to customize products (t-shirts, cups, etc.) with the designs they want.
Development
Case 2: Statistics Module Development
Challenge
After the successful integration of the GoMage Product Designer Extension, our client decided to change the business model. They opened their website to designers and turned it into a multi-vendor crowdfunding platform. The task was to create a service from scratch that would show the following statistics to designers:
- completed orders
- pending orders
- quantity of visits
- profit
- conversion and so on
“A large number of queries (statistics collect the data based on 10+ parameters for every one of 50,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 number of queries (statistics collect the data based on 10+ parameters for every one of 50,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.
- After 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).
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.
Case 3: Development of a Custom Product Entity
Challenge
After the changes to the website were made, the platform become extremely popular in no time. The number of products grew from a few thousand to a multi-million product catalog and continued to grow with lightning speed. Magento was not designed for such loads, therefore our team needed to find a solution within a very short timeframe.
Solution
We used a complex approach to address the task and create a custom entity, which is used instead of the heavy default Magento products. We rewrote the core logic of Magento and made it work with the developed custom entities.
Our team 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 prints 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 a round handle, etc.).
The customer has 2,533,651 campaigns and growing, each of which may include up to 100 various product types, so there might have been a maximum of 30,000,000+ separate configurable products requiring creation without our customization. Magento is not capable of handling this kind of product quantity by default.
The implementation of all the necessary changes required the re-development of about 70% of the website’s functionality. We dedicated a team of developers to deliver all the required changes in record time.
We helped our 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.
The number of products continues to grow and right now our client has 29 million product variations. Even with such a load, the website works fast and delivers the best customer experience.
Server Optimization and 24/7 Support
Challenge
The customer has a very popular website with daily visitors counting 15,000+, which obviously creates a high server load. The site used to be located on two servers that could not handle such an 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 2,533,651 campaigns and growing, each of which may include up to 100 various product types, so there might have been a maximum of 30,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 the 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 the Load Balancer, which redistributes live site visitors between the servers depending on the load level of each server.
Standalone 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), which 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.
“...the loading time of the main page improved 6 times (3 seconds) and loading time of the product constructor page improved almost 10 times (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 the 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 the 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 number 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 staging 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 the 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.
We have been working on the improvement of the customer’s website for over 5 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 5 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 many more customers every day. GoMage has done a great job adjusting our site and extending its possibilities.
I would gladly recommend GoMage to anybody wanting any kind of website developing.
Founder