Ε-commerce

Funny Bunny.

Ο πελάτης.

Τα καταστήματα παιχνιδιών “Funny Bunny” είναι ιδιοκτησία της εταιρείας ΛΙΜΝΙΔΗΣ ΑΕΒΕ που δραστηριοποιείται στην ελληνική αγορά και στο χώρο του παιχνιδιού από το 1971 με εξειδικευμένα καταστήματα.

Σήμερα τα Funny Bunny λειτουργούν στις μεγαλύτερες πόλεις της Δυτικής Μακεδονίας με οργανωμένα καταστήματα παιχνιδιών και ειδών Bebe. Στόχος είναι η καλύτερη εξυπηρέτηση και ικανοποίηση των πελατών και των μικρών φίλων με ποιοτικά και ασφαλή προϊόντα.

Η πρόκληση.

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

Η 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 που εισήχθησαν από την περιοχή μελών.