Jak osiągnąć maksymalną wydajność z Magento 2. Wywiad z Maxem Pronko
Opublikowany: 2017-01-17Max Pronko jest jednym z tych guru Magento, których musi naśladować nowicjusz. Jest ekspertem Magento i mówcą publicznym, Certyfikowanym Programistą Magento i popularnym blogerem Magento 2.
Dzięki 10-letniemu doświadczeniu w tworzeniu oprogramowania i konsultingu w Magento, Max z powodzeniem zaprojektował i wdrożył wysokiej jakości produkty od średniej do dużej skali.
Obserwuj Maxa na Twitterze.
Ostatnio Max był na Meet Magento Hungary i przedstawił rzeczywiste przypadki użycia optymalizacji wydajności w prezentacji Magento 2. W związku z tym chcielibyśmy rozpocząć nasz wywiad od kilku pytań, które bezpośrednio odnoszą się do tej prezentacji.
Część 1: Wspólne wyzwania rozszerzeń Magento
Prawie każdy sprzedawca Magento 2 korzysta z rozszerzeń stron trzecich, które z jednej strony znacznie zwiększają domyślną funkcjonalność platform, ale z drugiej negatywnie wpływają na przepływ pracy.
Natalie: Jak ogólnie oceniasz jakość kodu rozszerzeń stron trzecich i sposób, w jaki mogą one wpływać na obciążenie serwera?
Max: Dziękuję za możliwość porozmawiania o Magento 2, Natalie. Śledzę Twojego bloga od ponad roku i za każdym razem, gdy go odwiedzam, znajduję kilka ciekawych artykułów. Dziękuję Ci za to.
Jak być może wiesz, lubię recenzować kod z wielu powodów:
- Najpierw zdobywam doświadczenie i obserwuję ciekawe techniki przekształcania wymagań biznesowych w w pełni funkcjonalne, wysokiej jakości funkcje. Zwłaszcza jeśli chodzi o Magento 2.
- Po drugie, pomaga mi zrozumieć, jak dobre jest dzielenie się wiedzą w ekosystemie Magento.
95% rozszerzeń innych firm wymaga szczegółowego przeglądu kodu i wskazówek dotyczących ulepszania kodu.
Od około 2 lat zajmuję się przeglądem kodu rozszerzeń stron trzecich. Niestety nie mogę powiedzieć, że jestem zadowolony z wyników, które uzyskałem: 95% rozszerzeń innych firm wymaga obszernego przeglądu kodu i wskazówek dotyczących jego ulepszania. Pozwólcie, że będę bardzo cicho o standardach kodowania.
Mam problemy z wydajnością wszystkich stron witryny, nawet jeśli rozszerzenie tworzy i obejmuje tylko wybrane strony z określoną funkcjonalnością. Na przykład dołączenie bloku niebuforowanego do domyślnego pliku konfiguracyjnego układu. Magento automatycznie wyłącza pamięć podręczną stron dla wszystkich stron.
Innym przykładem jest użycie czasochłonnych operacji zaplecza bez przechowywania wyników wykonania w zmiennej klasy. Może to znacznie zmniejszyć ładowanie pierwszej strony.
Miałem okazję sprawdzić około 60 rozszerzeń, w tym płatne i bezpłatne, więc moja ocena opiera się na tym numerze. Na pewno są rozszerzenia, które mogę polecić.
Natalie: Jakie są Twoim zdaniem najczęstsze problemy z optymalizacją kodu?
Nigdy nie widziałem użycia klas proxy w rozszerzeniach innych firm. Może to jednak skrócić czas rekurencyjnej inicjalizacji obiektów.
Max: Zazwyczaj rozszerzenia są tworzone w jednej rundzie bez optymalizacji wydajności, którą mogę nazwać „Wdrożenie i dostarczenie”. Rzadko pojawia się druga runda, a kod pozostaje niezoptymalizowany. Na przykład nigdy nie widziałem użycia klas proxy w rozszerzeniach innych firm . Może to jednak skrócić czas rekurencyjnej inicjalizacji obiektów.
Natalie: Jakie rady dotyczące optymalizacji możesz udzielić tym początkującym programistom, którzy piszą swoje pierwsze rozszerzenia do Magento 2?
Max: Świetnym pomysłem jest przetestowanie rozszerzeń z Magento 2 poza środowiskiem lokalnym, najlepiej gdzieś w chmurze. W dzisiejszych czasach nie jest drogie posiadanie wirtualnego serwera DigitalOcean lub AWS za 5-10 USD i przeprowadzanie podstawowych testów end-to-end . Przynajmniej może wykazywać całkiem dobre różnice w wydajności w porównaniu z gotowymi wersjami Magento 2.x.
Część 2: Optymalizacja wydajności M2
Natalie: Co możesz powiedzieć o osobliwościach blokowej pamięci podręcznej (co lepiej używać/unikać w kluczach pamięci podręcznej)?
Max: Magento 2 Community Edition zawiera obsługę serwera proxy Varnish. Jest to świetne rozwiązanie dla wszystkich sprzedawców, którzy nie martwią się o odwiedzających po raz pierwszy, gdy pamięć podręczna nie jest gotowa. Block cache wchodzi w grę dla stron, które nie są przechowywane w Varnish. Na stronach takich jak Konto Klienta, Wyszukiwarka Katalogowa, Koszyk nie można oczekiwać żadnych Lakierów.
Właściwy klucz pamięci podręcznej na blok jest bardzo ważny dla budowania prawidłowych wpisów w pamięci podręcznej i zwiększania liczby trafień do pamięci podręcznej w pamięci zaplecza, takiej jak Redis. Idealnie, wszystkie jednostki zaangażowane w renderowanie frontonu powinny implementować interfejs Magento\Framework\DataObject\IdentityInterface , który jest dostarczany z metodą getIdentities() . Ta metoda jest bardzo pomocna, jeśli musisz skompilować odpowiednie klucze pamięci podręcznej dla pamięci podręcznej bloków.

Natalie: Coś o optymalizacji zapytań SQL?
Max: W celu optymalizacji SQL zazwyczaj staram się wypisać wszystkie możliwe odmiany danych wybrane z tabeli. W idealnym przypadku wszystkie zapytania powinny trafiać do indeksów MySQL, aby uzyskać lepszą wydajność. Wiem, że to idealny przypadek, jednak może naprawdę pomóc przyspieszyć zapytania dotyczące dużej liczby rekordów w tabeli. Oczywiście optymalizacja zapytań SQL to ogromny temat, więc mogę o tym mówić godzinami.
Część 3: Wyszukiwanie Magento 2
Magento 2 może pochwalić się lepszym wyszukiwaniem gotowym do użycia niż M1, ale nadal zapytania złożone, literówki, autokorekta, synonimy nie są obsługiwane. Co więcej, wyszukiwanie M2 nie skanuje kategorii i stron CMS.
Natalie: Jakie są najlepsze sposoby na usprawnienie wyszukiwania w edycji CE: rozszerzenia czy zewnętrzne wyszukiwarki?
Max: Rozważam użycie Elasticsearch dla Magento 2 Community Edition. Oczywiście wymaga to rozwoju we własnym zakresie lub przy użyciu rozszerzeń innych firm. W jednym z projektów Magento 2 użyliśmy wbudowanego wyszukiwania z dodatkową konfiguracją, taką jak synonimy i przekierowania do strony docelowej dla typowych zapytań. Jest to jednak rozwiązanie krótkoterminowe, wybrałbym jakąś usługę zewnętrzną.
Natalie: Mówiąc o zewnętrznych wyszukiwarkach, która jest lepsza dla małych/średnich/dużych stron internetowych: Solr, Sphinx czy Elasticsearch (lub jakieś inne)?
Max: W przypadku małych stron internetowych rozważyłbym domyślne wyszukiwanie Magento 2. W przypadku innych bardziej chodzi o to, jak dobre jest rozszerzenie i dokumentacja, jeśli chcesz zbudować własne rozwiązanie. Moją preferowaną opcją jest Elasticsearch.
Natalie: Czy możesz polecić rozszerzenia wyszukiwania, które mogą poprawić domyślną funkcjonalność?
Max: Mam doświadczenie w recenzowaniu modułu AutoComplete dla Magento 2 stworzonego przez MageWorx. Znacznie poprawia wrażenia użytkownika w porównaniu z domyślną funkcją autosugestii Magento 2 Community Edition. Moduł Autouzupełniania MageWorx zwiększy liczbę konwersji i sprzedaży dla Kupca. Jeśli chodzi o implementację kodu, mój wynik to 4,5 na 5. Jest kilka drobnych ulepszeń, które można wprowadzić, aby zwiększyć ogólne wrażenia programisty. Jedną z miłych rzeczy w module Autouzupełniania jest fakt, że można go pobrać za darmo. Rozważę użycie i polecę ten moduł dla Magento 2 Merchants.
Poza tym będę nadal przeglądać moduły związane z wyszukiwaniem dla Magento 2 i przekazywać swoją opinię na temat jakości kodu.
Część 4: Wyzwania Magento 2
Natalie: Jesteś doświadczonym deweloperem Magento, po latach pracy z Magento, jakie są największe wyzwania, które przynosi druga wersja platformy?
Na przykład, jak wiem, nawet niewielkie zmiany kodu w M2 prowadzą do szeregu działań (takich jak bin/magento setup:upgrade, bin/magento setup:static-content:deploy, bin/magento setup:di:kompilacja itp. )
Max: Myślę, że w większości przypadków, gdy programista siedzi przed PHPStormem i pisze kod, nie ma czasu na zagłębianie się w architekturę Magento 2. Na przykład znam kilku dobrych programistów, którzy narzekają na komponenty UI i brak prawdziwych przykładów ich użycia. Nowe Magento DevDocs zapewniają dobry przegląd komponentów interfejsu użytkownika.
Deweloperzy z dobrym doświadczeniem w Magento 1 uważają Magento 2 za skomplikowane i czasami wymagające. Nowa technologia zawsze daje nowe możliwości uczenia się czegoś nowego.
Jest o tym nawet zdjęcie.
Natalie: I wreszcie, Magento 2 zostało wydane w listopadzie 2015 roku. Czy uważasz, że jest całkowicie gotowe, aby sprzedawcy z całego świata zaczęli migrować do niego?
Max: Absolutnie TAK. Magento 2, jako oprogramowanie, ma więcej zalet niż pewna liczba otwartych problemów na GitHubie. Może oczywiście przynieść większe przychody w porównaniu z Magento 1 w przypadku dobrze zaplanowanej strategii migracji i marketingu. Pamiętam, że powiedziałem „Tak” jednemu z naszych projektów Magento 2 w sierpniu 2015 roku, kiedy była to tylko wersja beta. Teraz z przyjemnością korzystamy i budujemy serwisy eCommerce w oparciu o Magento 2.
Mój zespół w Pronko Consulting z przyjemnością wprowadzi w życie nową wizję i uruchomi nową stronę internetową Magento 2.
*****
Chcemy podziękować Maxowi za ten wywiad i życzyć jemu i jego zespołowi owocnego i udanego roku.