Systemy e-commerce charakteryzują się dużą złożonością. Dzięki niej jednak programiści zyskują bardzo dużą elastyczność w projektowaniu. Aby system był czytelny dla programisty, każda aplikacja e-commerce powinna powstawać w oparciu o ogólnie przyjęte wzorce projektowe. W dzisiejszym tekście chciałbym przybliżyć dobre praktyki i opisać wybrane wzorce, ale i przestrzec przed antywzorcami, które też niestety czasami się pojawiają.

E-commerce – od czego zacząć?

Próg wejścia w przypadku programowania systemów e-commerce, ze względu na ich złożoność, jest dużo większy niż w przypadku pisania systemu od podstaw. Żeby zacząć rozwijać taką aplikację, potrzebne są więc spora wiedza i doświadczenie. Tworząc taki system, można dużą część funkcjonalności pokryć funkcjami “out of the box”, jakich nam dostarcza jego wersja domyślna. Natomiast modyfikacje takiego systemu wymagają już sporej wiedzy na temat jego budowy i funkcjonowania.

Pracę nad aplikacją e-commerce dobrze jest zacząć od szkolenia z zakresu programowania w danej technologii. W ten sposób zdobywamy podstawową wiedzę na temat dobrych praktyk programowania w projekcie. Często zdarza się, że systemy e-commerce wykorzystują gotowe frameworki służące do pisania aplikacji. Złożoność takich systemów jest duża, jednak owocuje to korzyściami dla programistów i użytkowników. Otrzymujemy potężne aplikacje, które są bardzo elastyczne oraz mają spore możliwości konfiguracyjne dla użytkownika obsługującego je od zaplecza.

Czytaj także: Frameworkowe wojny

Nikt nie obiecywał, że będzie łatwo…

Poruszanie się w gąszczu wzorców nie należy do najłatwiejszych. Ponadto jedna funkcjonalność może wpływać na drugą i trzeba wcześniej upewniać się co do wdrażanych modyfikacji w systemie. Warto też pamiętać, że wszystkie modyfikacje należy wykonywać zgodnie z zasadami. Dlatego właśnie moim zdaniem utrzymywanie systemów e-commerce jest trudniejsze niż ich pisanie.

Duże systemy e-commerce napisane w technologii PHP, takie jak Magento czy Shopware, korzystają z bibliotek Symfony i Zend. Na rynku mamy wiele podobnych rozwiązań gotowych do instalacji i rozbudowy. Niektóre systemy oferują wprawdzie wersję enterprise dla bardziej wymagających klientów, jednak licencja jest zazwyczaj kosztowna i przeznaczona dla dużych systemów. Warto więc rozważyć kastomizację, która będzie tańsza i będzie w pełni spełniać wymagania naszej firmy. Co ważne, na rynku narzędzi e-commerce zaczęły się już pojawiać systemy, które można łatwo skalować w chmurze AWS, Google Cloud lub Azure. Idealnie więc jest mieć rozwiązanie, które pozwala na migrację pomiędzy chmurami. Aby stworzyć tak skomplikowany system, trzeba trzymać się sztywnych reguł pisania aplikacji. Jak więc ułatwić sobie pracę?

Najważniejsze wzorce projektowe w e-commerce

Wzorców projektowych w pisaniu systemów informatycznych jest mnóstwo i nie chciałbym się skupiać na wymienianiu wszystkich. Postaram się przybliżyć najważniejsze z nich, które przynoszą największe korzyści pod względem jakości kodu. Oto kilka wzorców projektowych, bez których stworzenie jakiejkolwiek aplikacji komercyjnej byłoby wręcz niemożliwe.

Wyróżniamy trzy rodzaje wzorców projektowych:

Kreacyjne

Opisują one procesy tworzenia nowych obiektów, do ich zadań należą także wszelkie czynności związane z ich konfiguracją oraz tworzeniem typów danych.

  • Property – to najbardziej podstawowy z wzorców kreacyjnych. Służy głównie do przetrzymywania konfiguracji, jest to bardzo ważne ze względu na to, że eliminuje ryzyko duplikowania wartości konfigurujących oraz ułatwia późniejsze modyfikacje i utrzymywanie kodu.
  • Abstract factory – jest wzorcem, który może posłużyć w budowaniu aplikacji, określa on interfejs do tworzenia różnych obiektów należących do tego samego typu (domeny).
  • Factory method – jest podobnym wzorcem do abstract factory. Również określa interfejs, z tym, że odnosi się do różnych metod zamiast obiektów.

    Strukturalne

    Definiują struktury powiązanych ze sobą obiektów.

  • Adapter – to przykład wzorca strukturalnego, który może posłużyć obsługi niezgodnych interfejsów w obiektach. Jego zadaniem w takim przypadku jest umożliwienie komunikacji takich obiektów.
  • Facade – to kolejny wzorzec strukturalny. Przechowuje on mapę obiektów wraz z możliwością ich obsłużenia. Implementacja tego wzorca może odbyć się przez stworzenie klasy oraz osadzenie w niej wszystkich obiektów, które realizują konkretną logikę aplikacji.

    Czynnościowe

    Opisują wzajemne zależności pomiędzy obiektami.

  • Observer – to jeden z popularnych wzorców czynnościowych. Służy on do obsługi zdarzeń w aplikacjach i dzięki niemu aplikację można łatwo rozszerzać. Przykładem takiego zdarzenia w systemie e-commerce może być moment wystawienia faktury za transakcję. Przykładowo, programista w zależności od wymogów biznesu może zaprogramować jakąś akcję po wystawieniu faktury, np. dodatkowe powiadomienie dla pracownika sklepu.
  • Dependency injection – kolejnym wzorcem czynnościowym jest dependency injection. Polega on na „wstrzykiwaniu” zależności jednego obiektu do drugiego oraz wykonywanie na nim operacji, na podstawie których jest realizowana logika aplikacji. Pozwala na usuwanie zależności pomiędzy danymi komponentami.

Angular – zróbmy swoją Progressive Web Application

Wraz z rozwojem rynku e-commerce rośnie rola i popularność Progressive Web Applications. 

Zapraszamy na JPro Tech, gdzie Michał Wójcik pokazuje, jak samodzielnie, krok po kroku z pomocą Angulara stworzyć, a następnie skonfigurować i przetestować swoją PWA.

Przeczytaj artykuł

Pomyślę o tym później – czyli antywzorce projektowe

Pisząc o wzorcach w e-commerce, chciałbym wspomnieć także o antywzorcach projektowych, których również jest sporo.

  • Gold platingciekawym antywzorcem projektowym jest gold plating, czyli tzw. złocenie. Mamy z nim do czynienie w sytuacji, gdy prace nad projektem lub zadaniem trwają dłużej, niż jest to wymagane (np. z powodu ciągłego ulepszania funkcjonalności i chęci dostarczenia klientowi jeszcze lepszego produktu). W pewnym momencie zostaje jednak przekroczony punkt krytyczny, w którym dodatkowy wysiłek nie przynosi wartości dodanej w projekcie.
  • We’ll handle it laterprzykładem równie skrajnym jest wspomniane we’ll handle it later, czyli tzw. „Na tym etapie bym się tym nie przejmował”. Antywzorzec ten stosowany jest, gdy analiza danego zadania lub projektu nie została wykonana prawidłowo lub nie została przeprowadzona w ogóle.
  • U mnie działa – kto z nas nie słyszał choć raz w życiu „U mnie działa?”. To często spotykane stwierdzenie można często spotkać przy uruchomieniu aplikacji na różnych systemach operacyjnych lub przy w różnych środowiskach klienckich. A przecież warto zbadać każde zgłoszenie – ignorowanie problemów na początkowym etapie może mieć dalsze konsekwencje na późniejszych etapach projektów.
  • Hard code – tzw. umieszczenie w kodzie tej samej zmiennej w kilku miejscach, co drastycznie wpływa na późniejsze utrzymanie takiej aplikacji.

Podsumowanie

Systemy e-commerce nie tracą na popularności i dają duże możliwości zarówno użytkownikom, jak i programistom. Aby nie pogubić się w ich złożoności i w pełni wykorzystać ich potencjał, warto wystrzegać się opisanych przeze mnie antywzorców i pogłębiać swoją wiedzę na temat dobrych praktyk. Nie tylko w programowaniu przekładają się one na najlepsze rezultaty. Mam nadzieję, że opisane przeze mnie przykładowe wzorce zachęcą Was do poznania kolejnych i stosowania ich w projektach.

Autorem wpisu jest:
Rafał Baran

PHP developer w JCommerce. Specjalizuje się w rozwiązaniach typu open-source i e-commerce. Zawodowo pogłębia wiedzę na temat frameworków i infrastruktury oprogramowania bazującej na chmurze. Prywatnie jest wielkim fanem rozwiązań typu open-source. Wolny czas chętnie spędza z rodziną i przyjaciółmi.

Dodaj komentarz

Skontaktuj się z nami

Chcesz dowiedzieć się więcej o naszych usługach? Napisz do nas – odpowiemy na każdą wiadomość.

Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma, w celach handlowych.
Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma, w celach marketingowych.
Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma w celach rekrutacyjnych.
Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma na potrzeby przyszłych rekrutacji.
W związku z obowiązującymi przepisami dotyczącymi ochrony danych osobowych tj. Ustawą o ochronie danych osobowych z dnia 10 maja 2018 roku, jak również treścią Rozporządzenia Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (RODO), informujemy, że: 1. Administratorem danych osobowych jest JCommerce Sp. z o.o. z siedzibą w Katowicach, ul. Ściegiennego 3, 40-114 Katowice (KRS: 00007393418).
2. Powyższe dane osobowe przetwarzane będą przez JCommerce Sp. z o.o. – w zależności od udzielonych przez Panią/Pana zgód (podstawa prawna przetwarzania: art. 6 ust. 1 pkt a) RODO):
• w celach handlowych,
• w celach marketingowych,
• w celach rekrutacyjnych;
• w celach przyszłych rekrutacji.
3. Podanie powyższych danych osobowych nie jest wymogiem ustawowym, umownym lub warunkiem zawarcia umowy. Nie jest Pan/Pani zobowiązany/a do podania powyższych danych osobowych, jednak brak ich podania uniemożliwi realizacje ww. celu.
4. Posiada Pan/ Pani prawo dostępu do treści swoich danych, w tym otrzymania ich kopii i ich sprostowania, usunięcia, ograniczenia przetwarzania, prawo do przenoszenia danych, prawo do sprzeciwu wobec przetwarzania, prawo do cofnięcia zgody w dowolnym momencie, jeśli została udzielona. Wycofanie zgody nie wpływa jednak na zgodność z prawem przetwarzania, którego dokonano na podstawie zgody przed jej wycofaniem; oświadczenie o cofnięciu zgody na przetwarzanie danych osobowych należy złożyć w siedzibie JCommerce Sp. z o.o. lub przesłać na adres mailowy zgody@jcommerce.pl. Cofnięcie zgody na przetwarzanie danych osobowych skutkuje brakiem możliwości realizacji ww. celów przetwarzania;
5. Dane osobowe są udostępniane przez JCommerce Sp. z o.o. upoważnionym pracownikom i osobom współpracującym z JCommerce Sp. z o.o. na podstawie umów cywilnoprawnych, przez których realizowany jest cel przetwarzania;
6. Wszelkie pytania dotyczące ochrony danych osobowych oraz realizacje przysługujących praw, prosimy kierować na adres odo@jcommerce.pl;
7. W zależności od udzielonej zgody, dane osobowe będą przetwarzane przez czas niezbędny do realizacji ww. celów przetwarzania. W przypadku wniesienia sprzeciwu, JCommerce Sp. z o.o. przestanie przetwarzać Pani/Pana dane w ww. celu, chyba że będzie w stanie wykazać, że w stosunku do tych danych istnieją ważne prawnie uzasadnione podstawy, które są nadrzędne wobec Pana/Pani interesów, praw i wolności, lub niezbędne do ewentualnego ustalenia, dochodzenia lub obrony roszczeń;
8. Nie przekazujemy Pani/Pana danych poza teren Europejskiego Obszaru Gospodarczego oraz do organizacji międzynarodowych.
9. Pani/Pana dane osobowe nie podlegają zautomatyzowanemu podejmowaniu decyzji, w tym profilowaniu.
10. Ma Pani/Pan prawo wniesienia skargi do organu nadzorczego gdy uzna Pan/Pani, iż przetwarzanie ww. danych osobowych narusza przepisy ogólnego rozporządzenia o ochronie danych osobowych z dnia 27 kwietnia 2016 r.
Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma, w celach handlowych.
Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma, w celach marketingowych.
Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma w celach rekrutacyjnych.
Niniejszym wyrażam zgodę na przetwarzanie przez JCommerce Sp. z o.o. moich danych osobowych (dalej „dane osobowe”), takich jak: imię i nazwisko, adres e-mail, nr telefonu, firma na potrzeby przyszłych rekrutacji.
W związku z obowiązującymi przepisami dotyczącymi ochrony danych osobowych tj. Ustawą o ochronie danych osobowych z dnia 10 maja 2018 roku, jak również treścią Rozporządzenia Parlamentu Europejskiego i Rady (UE) 2016/679 z dnia 27 kwietnia 2016 r. w sprawie ochrony osób fizycznych w związku z przetwarzaniem danych osobowych i w sprawie swobodnego przepływu takich danych oraz uchylenia dyrektywy 95/46/WE (RODO), informujemy, że: 1. Administratorem danych osobowych jest JCommerce Sp. z o.o. z siedzibą w Katowicach, ul. Ściegiennego 3, 40-114 Katowice (KRS: 00007393418).
2. Powyższe dane osobowe przetwarzane będą przez JCommerce Sp. z o.o. – w zależności od udzielonych przez Panią/Pana zgód (podstawa prawna przetwarzania: art. 6 ust. 1 pkt a) RODO):
• w celach handlowych,
• w celach marketingowych,
• w celach rekrutacyjnych;
• w celach przyszłych rekrutacji.
3. Podanie powyższych danych osobowych nie jest wymogiem ustawowym, umownym lub warunkiem zawarcia umowy. Nie jest Pan/Pani zobowiązany/a do podania powyższych danych osobowych, jednak brak ich podania uniemożliwi realizacje ww. celu.
4. Posiada Pan/ Pani prawo dostępu do treści swoich danych, w tym otrzymania ich kopii i ich sprostowania, usunięcia, ograniczenia przetwarzania, prawo do przenoszenia danych, prawo do sprzeciwu wobec przetwarzania, prawo do cofnięcia zgody w dowolnym momencie, jeśli została udzielona. Wycofanie zgody nie wpływa jednak na zgodność z prawem przetwarzania, którego dokonano na podstawie zgody przed jej wycofaniem; oświadczenie o cofnięciu zgody na przetwarzanie danych osobowych należy złożyć w siedzibie JCommerce Sp. z o.o. lub przesłać na adres mailowy zgody@jcommerce.pl. Cofnięcie zgody na przetwarzanie danych osobowych skutkuje brakiem możliwości realizacji ww. celów przetwarzania;
5. Dane osobowe są udostępniane przez JCommerce Sp. z o.o. upoważnionym pracownikom i osobom współpracującym z JCommerce Sp. z o.o. na podstawie umów cywilnoprawnych, przez których realizowany jest cel przetwarzania;
6. Wszelkie pytania dotyczące ochrony danych osobowych oraz realizacje przysługujących praw, prosimy kierować na adres odo@jcommerce.pl;
7. W zależności od udzielonej zgody, dane osobowe będą przetwarzane przez czas niezbędny do realizacji ww. celów przetwarzania. W przypadku wniesienia sprzeciwu, JCommerce Sp. z o.o. przestanie przetwarzać Pani/Pana dane w ww. celu, chyba że będzie w stanie wykazać, że w stosunku do tych danych istnieją ważne prawnie uzasadnione podstawy, które są nadrzędne wobec Pana/Pani interesów, praw i wolności, lub niezbędne do ewentualnego ustalenia, dochodzenia lub obrony roszczeń;
8. Nie przekazujemy Pani/Pana danych poza teren Europejskiego Obszaru Gospodarczego oraz do organizacji międzynarodowych.
9. Pani/Pana dane osobowe nie podlegają zautomatyzowanemu podejmowaniu decyzji, w tym profilowaniu.
10. Ma Pani/Pan prawo wniesienia skargi do organu nadzorczego gdy uzna Pan/Pani, iż przetwarzanie ww. danych osobowych narusza przepisy ogólnego rozporządzenia o ochronie danych osobowych z dnia 27 kwietnia 2016 r.