Ε-commerce

Toys24, Bebe24.

Ο πελάτης.

Το Toys24 είναι ένα από τα μεγαλύτερα ηλεκτρονικά καταστήματα παιχνιδιών και είδη μπεμπέ στην Ελλάδα. Η εταιρεία δραστηριοποιείται στην αγορά των παιχνιδιών από το 1980 με εισαγωγές από όλο τον κόσμο. Συνεργάζεται πάνω από 30 χρόνια με τα μεγαλύτερα εργοστάσια παιχνιδιών από όλο τον κόσμο όπως η Mattel, η Hasbro, η Playmobil και πολλά άλλα. Διαθέτει άρτια οργανωμένο δίκτυο χονδρικής στην Ελλάδα και στην Κύπρο. Εξαγωγές πραγματοποιούνται στις βαλκανικές χώρες και στην ομογένεια σε ΗΠΑ, Καναδά και Αυστραλία.

Η πρόκληση.

Η εταιρεία ζήτησε από την Web Expert τη δημιουργία ενός νέου ηλεκτρονικού καταστήματος, με έμφαση στον σχεδιασμό, την ταχύτητα και την καλύτερη εμπειρία χρήσης, προς αντικατάσταση του παλιού.

Η Web Expert δημιούργησε ένα πλήρως λειτουργικό ηλεκτρονικό κατάστημα, με άριστη εμπειρία χρήστη και πολλές δυνατότητες. Ιδιαίτερη πρόκληση ήταν η επίτευξη της μέγιστης δυνατής βελτιστοποίησης στην ταχύτητα, λόγω της υψηλής επισκεψιμότητας, του μεγάλου όγκου των προϊόντων και το πλήθος των παραγγελιών, τον συνεχή συγχρονισμό με ERP και τις ιδιαιτερότητες του WooCommerce.

Η λύση.

Στο έργο είχαμε τρεις βασικές προκλήσεις. Μεγάλος όγκος δεδομένων, ταχύτητα και πολλαπλά συστήματα ERP & CRM.

Το WooCommerce είναι ένα αξιόλογο σύστημα e-commerce αλλά περιορίζεται αρκετά, λόγω της πρωταρχικής δομής του WordPress. Ένας μεγάλος όγκος δεδομένων (>50.000 προϊόντα) με αρκετές ιδιότητες και ταξινομίες, δημιουργεί μεγάλους πίνακες (πίνακας wp_post_meta > 2GB) και μεγάλη καθυστέρηση κατά την εκτέλεση των queries. Μια απλή αναζήτηση ενός προϊόντος βάση τίτλου ή SKU ενώνει μεγάλους πίνακες (left join) και καθυστερεί πολύ στην απόκριση, με αποτέλεσμα να παίρνουμε απαντήσεις σε 4, 6, ακόμη και 20sec. Για να επιλύσουμε το πρόβλημα δημιουργήσαμε ενδιάμεσους πίνακες, όπου μαζέψαμε την πιο σημαντική πληροφορία, και ενώσαμε το wp_posts με αυτόν.
Αποτέλεσμα; Αναζήτηση προϊόντος με SKU σε 0.01sec. Το ίδιο σκεπτικό ενδιάμεσων πινάκων εφαρμόζεται στο WooCommerce 3.6, αλλά εμείς είχαμε να λύσουμε το πρόβλημα μας στην έκδοση 3.4 και 3.5

Είναι αρκετό; Όχι. Τα πρόσθετα δεν δουλεύουν με την ίδια λογική που εφαρμόσαμε. Οπότε πειράξαμε με hooks αρκετά σημεία από πρόσθετα (κυρίως ajax filters), τροποποιήσαμε συναρτήσεις του WordPress και δώσαμε hand coded, βασικές πληροφορίες για να μειώσουμε τα requests στη βάση. Το αποτέλεσμα όλων των παραπάνω, σε συνδυασμό με caching, εκπληκτικό! Έχουμε ένα γρήγορο, ευέλικτο eshop με πολλά προϊόντα.

Ένα ακόμη ζήτημα που είχαμε να αντιμετωπίσουμε είναι ο συγχρονισμός του WooCommerce, με πολλαπλά συστήματα ERP & CRM. Για την επίλυση του, αναπτύξαμε ειδικές γέφυρες διασύνδεσης WooCommerce & ERP, όπου όλη η διαχείριση του WooCommerce γίνεται από τα ERP. Το eshop συγχρονίζει καθημερινά με όλες τις πληροφορίες των προϊόντων, των κατηγοριών του καταλόγου, των φωτογραφιών κτλ. Το πελατολόγιο και το σύστημα πόντων συγχρονίζει αντίστοιχα με αντίστοιχη γέφυρα, ενώ υπάρχουν και συνδυαστικές ρουτίνες.

Τέλος, αξιοσημείωτη προσπάθεια αποτελεί το δυναμικό μενού. Το κυρίως μενού δημιουργείται με μηχανισμό, ανάλογα την διαθεσιμότητα των προϊόντων, χωρίζοντας και οργανώνοντας το σε κατηγορίες/υποκατηγορίες. Γίνεται αντιληπτό ότι δεν χρησιμοποιήθηκε απλά η συνάρτηση get_terms σε κάθε κατηγορία, γιατί μιλάμε για ένα μεγάλο όγκο πληροφοριών. Δημιουργήθηκε μια ρουτίνα, όπου ελέγχει όλες τις κατηγορίες, υποκατηγορίες και προσθαφαιρεί nav_menu_items, χωρίς να πειράζει τα custom links ή nav_menu_items που εισήχθησαν από την περιοχή μελών.

Τεχνολογίες.

Feedback

Άψογοι στη δουλειά τους. Απροβλημάτιστη συνεργασία. Συστήνονται 100%.

Η λύση

Στο έργο είχαμε τρεις βασικές προκλήσεις. Μεγάλος όγκος δεδομένων, ταχύτητα και πολλαπλά συστήματα ERP & CRM.

Το WooCommerce είναι ένα αξιόλογο σύστημα e-commerce αλλά περιορίζεται αρκετά, λόγω της πρωταρχικής δομής του WordPress. Ένας μεγάλος όγκος δεδομένων (>50.000 προϊόντα) με αρκετές ιδιότητες και ταξινομίες, δημιουργεί μεγάλους πίνακες (πίνακας wp_post_meta > 2GB) και μεγάλη καθυστέρηση κατά την εκτέλεση των queries. Μια απλή αναζήτηση ενός προϊόντος βάση τίτλου ή SKU ενώνει μεγάλους πίνακες (left join) και καθυστερεί πολύ στην απόκριση, με αποτέλεσμα να παίρνουμε απαντήσεις σε 4, 6, ακόμη και 20sec. Για να επιλύσουμε το πρόβλημα δημιουργήσαμε ενδιάμεσους πίνακες, όπου μαζέψαμε την πιο σημαντική πληροφορία, και ενώσαμε το wp_posts με αυτόν.
Αποτέλεσμα; Αναζήτηση προϊόντος με SKU σε 0.01sec. Το ίδιο σκεπτικό ενδιάμεσων πινάκων εφαρμόζεται στο WooCommerce 3.6, αλλά εμείς είχαμε να λύσουμε το πρόβλημα μας στην έκδοση 3.4 και 3.5

Είναι αρκετό; Όχι. Τα πρόσθετα δεν δουλεύουν με την ίδια λογική που εφαρμόσαμε. Οπότε πειράξαμε με hooks αρκετά σημεία από πρόσθετα (κυρίως ajax filters), τροποποιήσαμε συναρτήσεις του WordPress και δώσαμε hand coded, βασικές πληροφορίες για να μειώσουμε τα requests στη βάση. Το αποτέλεσμα όλων των παραπάνω, σε συνδυασμό με caching, εκπληκτικό! Έχουμε ένα γρήγορο, ευέλικτο eshop με πολλά προϊόντα.

Ένα ακόμη ζήτημα που είχαμε να αντιμετωπίσουμε είναι ο συγχρονισμός του WooCommerce, με πολλαπλά συστήματα ERP & CRM. Για την επίλυση του, αναπτύξαμε ειδικές γέφυρες διασύνδεσης WooCommerce & ERP, όπου όλη η διαχείριση του WooCommerce γίνεται από τα ERP. Το eshop συγχρονίζει καθημερινά με όλες τις πληροφορίες των προϊόντων, των κατηγοριών του καταλόγου, των φωτογραφιών κτλ. Το πελατολόγιο και το σύστημα πόντων συγχρονίζει αντίστοιχα με αντίστοιχη γέφυρα, ενώ υπάρχουν και συνδυαστικές ρουτίνες.

Τέλος, αξιοσημείωτη προσπάθεια αποτελεί το δυναμικό μενού. Το κυρίως μενού δημιουργείται με μηχανισμό, ανάλογα την διαθεσιμότητα των προϊόντων, χωρίζοντας και οργανώνοντας το σε κατηγορίες/υποκατηγορίες. Γίνεται αντιληπτό ότι δεν χρησιμοποιήθηκε απλά η συνάρτηση get_terms σε κάθε κατηγορία, γιατί μιλάμε για ένα μεγάλο όγκο πληροφοριών. Δημιουργήθηκε μια ρουτίνα, όπου ελέγχει όλες τις κατηγορίες, υποκατηγορίες και προσθαφαιρεί nav_menu_items, χωρίς να πειράζει τα custom links ή nav_menu_items που εισήχθησαν από την περιοχή μελών.