Jak AI skraca czas developmentu e-commerce
AI w developmencie e-commerce coraz mocniej wchodzi do codziennej pracy zespołów developerskich. Pomaga generować kod, p...
Czytaj więcej →Wybór frameworka może wyglądać jak decyzja czysto techniczna. W praktyce wpływa jednak na znacznie więcej niż sposób, w jaki developerzy piszą kod. Technologia ma znaczenie dla kosztów rozwoju i utrzymania aplikacji, możliwości jej rozbudowy, integracji z innymi systemami, dostępności specjalistów czy łatwości zmiany wykonawcy. Jednym z frameworków wykorzystywanych do tworzenia projektów w PHP jest Symfony. Powstał w 2005 roku we francuskiej firmie SensioLabs, a od tego czasu rozwinął się wokół niego dojrzały ekosystem komponentów, narzędzi, dokumentacji i specjalistów.
Co to jest Symfony, do czego służy i kiedy warto postawić na ten framework PHP? W tym artykule wyjaśniamy najważniejsze założenia oraz pokazujemy, co wybór tej technologii może oznaczać z perspektywy developmentu, architektury i długoterminowych kosztów systemu.
Symfony to framework PHP, czyli zestaw gotowych komponentów, narzędzi i zasad, które pomagają developerom tworzyć aplikacje internetowe.
Zamiast za każdym razem budować mechanizmy od podstaw, zespół może wykorzystać sprawdzone elementy i skoncentrować większą część pracy na logice charakterystycznej dla konkretnego systemu.
Framework można więc potraktować jako fundament. Nie definiuje tego, jak ma działać biznes, ale dostarcza strukturę i narzędzia, na których można budować jego procesy.
Dużą zmianą w historii frameworka było wydanie Symfony 2 w 2011 roku. Przejście z Symfony 1 na Symfony 2 oznaczało gruntowną przebudowę technologii i można je traktować jako rewolucję w jej rozwoju. Od tego momentu podejście jest inne: kolejne wersje rozwijają framework stopniowo, zamiast za każdym razem przebudowywać jego fundamenty.
Symfony służy do tworzenia aplikacji internetowych opartych na PHP. Szczególnie dobrze sprawdza się w projektach zawierających złożoną logikę biznesową.
Framework Symfony może być wykorzystywany między innymi do budowy:
platform e-commerce,
systemów B2B,
aplikacji biznesowych,
portali internetowych,
systemów wewnętrznych,
rozwiązań wymagających integracji z ERP, CRM, WMS lub innymi systemami,
aplikacji zawierających niestandardowe procesy i logikę biznesową.
Nie oznacza to, że Symfony jest naturalnym wyborem dla każdego przypadku.
Prosta strona firmowa, landing page czy blog zazwyczaj nie wymagają możliwości, jakie oferuje rozbudowany framework PHP. Znacznie większe znaczenie ma on tam, gdzie system ma rozwijać się wraz z biznesem, obsługiwać wiele procesów i integracji oraz pozostawać utrzymywalny przez kolejne lata.
Przykładem frameworka e-commerce zbudowanego na Symfony jest Sylius.
Symfony nie funkcjonuje jako całkowicie odrębny, zamknięty ekosystem. Jego komponenty wykorzystują między innymi standardy PSR (PHP Standards Recommendations), wypracowane dla PHP.
PSR definiują wspólne zasady, dzięki którym biblioteki i narzędzia mogą ze sobą współpracować bez konieczności tworzenia osobnych rozwiązań dla każdego frameworka.
Ma to znaczenie szczególnie w projektach rozwijanych przez wiele lat. Aplikacja nie musi opierać się wyłącznie na rozwiązaniach charakterystycznych dla jednego frameworka lub znanych tylko jednemu zespołowi. Może korzystać ze standardów i bibliotek powszechnie stosowanych w PHP.
Im bardziej projekt opiera się na czytelnych i powszechnie stosowanych zasadach, tym łatwiej kolejnym developerom zrozumieć jego strukturę, połączyć go z innymi rozwiązaniami i kontynuować jego rozwój.
W przypadku systemów rozwijanych przez wiele lat znaczenie ma nie tylko to, jakie możliwości framework oferuje dzisiaj. Równie ważne jest to, czy technologia będzie utrzymywana, aktualizowana i możliwa do rozwijania w przyszłości.
Symfony jest rozwijane według stałego cyklu wydawniczego: nowa wersja minor ukazuje się co pół roku (w maju i listopadzie), a nowa wersja major – co dwa lata. Dostępne są również wersje LTS, czyli Long Term Support (np. 6.4 i 7.4), które otrzymują poprawki błędów przez 3 lat, a poprawki bezpieczeństwa przez 4 lata. Standardowe wersje są wspierane przez 8 miesięcy.
Z perspektywy organizacji zwiększa to przewidywalność utrzymania systemu. Aktualizacje można planować z wyprzedzeniem zamiast reagować dopiero wtedy, gdy wykorzystywana wersja technologii przestaje być wspierana.
Podejście oparte na stopniowej ewolucji frameworka ma również ułatwiać przechodzenie pomiędzy kolejnymi wersjami. Regularne aktualizowanie zmniejsza ryzyko sytuacji, w której po wielu latach konieczna staje się duża, jednorazowa migracja technologiczna. Pomaga też ograniczać narastanie długu technologicznego wynikającego z pozostawania przy przestarzałych wersjach frameworka i jego zależności. Im dłużej aktualizacje są odkładane, tym więcej zmian może wymagać późniejsze przejście do aktualnej wersji.
Wokół Symfony funkcjonuje rozbudowany ekosystem bibliotek, komponentów, narzędzi i materiałów dla developerów.
Nie oznacza to oczywiście, że każda potrzeba biznesowa ma gotowy komponent. Im bardziej niestandardowy proces, tym większe znaczenie nadal ma własny development.
O dojrzałości technologii świadczy również dostęp do dokumentacji i materiałów umożliwiających rozwijanie kompetencji. Symfony posiada także oficjalny system certyfikacji, który może być jednym ze sposobów potwierdzania znajomości frameworka przez specjalistów.
Tak. Symfony jest dostępne na licencji MIT i może być wykorzystywane również w rozwiązaniach komercyjnych bez konieczności ponoszenia opłat licencyjnych za sam framework.
Organizacja nadal ponosi koszty developmentu, infrastruktury, utrzymania, aktualizacji i dalszego rozwoju. Brak opłat za korzystanie z frameworka eliminuje jednak jeden z elementów potencjalnego kosztu systemu.
Sam framework Symfony jest dobrze pokryty testami jednostkowymi. Jednocześnie dostarcza dodatkowe klasy i narzędzia, które ułatwiają developerom testowanie tworzonych aplikacji, w tym przygotowywanie testów integracyjnych oraz end-to-end (E2E).
Testy pomagają między innymi sprawdzić, czy wprowadzenie nowej funkcjonalności nie wpłynęło negatywnie na procesy, które wcześniej działały poprawnie.
Samo wykorzystanie Symfony nie gwarantuje jednak wysokiego pokrycia aplikacji testami. To nadal decyzja i odpowiedzialność zespołu. Framework dostarcza natomiast rozwiązania, które ułatwiają budowanie projektu z myślą o testowaniu.
Symfony ma największy sens wtedy, gdy projekt wymaga czegoś więcej niż obsługi prostego zestawu standardowych funkcji.
Dobrym przykładem są systemy, w których występują:
złożone procesy biznesowe,
niestandardowa logika,
wiele integracji,
różne role i uprawnienia użytkowników,
procesy wykonywane w tle,
duża liczba funkcjonalności rozwijanych przez kolejne lata,
potrzeba skalowania rozwiązania wraz z biznesem.
W takich projektach istotna staje się możliwość kontrolowania architektury aplikacji i rozwijania jej bez konieczności dopasowywania procesów firmy do ograniczeń gotowego systemu.
Symfony nie jest rozwiązaniem do wszystkiego. Jeżeli projekt ogranicza się do prostej strony internetowej, bloga czy landing page'a, wykorzystanie rozbudowanego frameworka może nie przynieść wartości proporcjonalnej do złożoności rozwiązania.
Wybór technologii powinien wynikać z problemu, który ma zostać rozwiązany. Im prostszy projekt i im mniej niestandardowej logiki biznesowej, tym mniejsze znaczenie mają możliwości oferowane przez Symfony.
Framework pokazuje swoją wartość przede wszystkim wtedy, gdy rośnie złożoność, liczba procesów i potrzeba długoterminowego rozwoju.
Koszt wytworzenia aplikacji jest tylko jednym z elementów całkowitego kosztu systemu. W rozwiązaniu rozwijanym przez wiele lat znaczenie mają również utrzymanie, bezpieczeństwo, aktualizacje, integracje, dostępność specjalistów czy możliwość zmiany wykonawcy.
Dlatego przy wyborze technologii warto patrzeć na całkowity koszt posiadania systemu (TCO), a nie wyłącznie budżet potrzebny do uruchomienia jego pierwszej wersji.
Nawet dojrzały i stabilnie działający system wymaga regularnego aktualizowania bibliotek i narzędzi, z których korzysta. Jest to istotne między innymi ze względów bezpieczeństwa, ponieważ z czasem w wykorzystywanych zależnościach mogą zostać wykryte podatności.
Symfony publikuje poprawki bezpieczeństwa dla wspieranych wersji frameworka. Jeżeli aplikacja jest regularnie aktualizowana, wdrożenie takiej poprawki może być częścią standardowego procesu utrzymania.
W rozwiązaniu całkowicie autorskim sytuacja może wyglądać inaczej. Podatność trzeba najpierw wykryć, przeanalizować, przygotować rozwiązanie i wdrożyć. Nie istnieje przy tym zewnętrzny dostawca frameworka, który poinformuje zespół o problemie i dostarczy gotową poprawkę dla własnego komponentu.
Znaczenie ma tutaj nie tylko koszt techniczny. W przypadku poważnych podatności stawką może być bezpieczeństwo danych, zaufanie klientów, a także odpowiedzialność prawna organizacji za właściwe zabezpieczenie systemu.
Firmy rzadko wybierają technologię z założeniem, że w przyszłości będą musiały zmienić wykonawcę. W praktyce taki scenariusz warto jednak uwzględnić.
W aplikacji opartej na popularnym frameworku nowy zespół nie musi od początku poznawać całkowicie autorskiego fundamentu technologicznego. Nadal musi zrozumieć domenę biznesową, architekturę konkretnego projektu i wcześniejsze decyzje, ale może już znać samą technologię z innych systemów. Dzięki temu przejęcie i dalszy rozwój projektu mogą wymagać mniej czasu i generować niższe koszty niż w przypadku całkowicie autorskiego rozwiązania.
Popularność Symfony zwiększa również liczbę potencjalnych specjalistów i firm, które mogą rozwijać projekt.
Nie oznacza to, że sam framework eliminuje vendor lock-in. Źle zaprojektowana lub niedokumentowana aplikacja może być trudna do przejęcia niezależnie od wykorzystanej technologii.
Dostępność specjalistów ma znaczenie szczególnie wtedy, gdy firma planuje rozwijać własny dział IT lub zwiększać istniejący zespół.
W przypadku popularnej technologii można szukać kandydatów, którzy mają już doświadczenie z wykorzystywanym frameworkiem. Przy rozwiązaniu niszowym rekrutacja może trwać dłużej, a znalezienie odpowiednich kompetencji może być bardziej kosztowne.
Dochodzi do tego ryzyko związane z odejściem kluczowych osób. Jeżeli wiedza technologiczna jest charakterystyczna wyłącznie dla konkretnego rozwiązania, utrata kilku specjalistów może istotnie utrudnić dalszy rozwój produktu.
Systemy biznesowe rzadko działają w izolacji. Platforma e-commerce może komunikować się między innymi z ERP, WMS, CRM, systemem księgowym, płatnościami, firmami kurierskimi czy narzędziami automatyzacji marketingu.
Symfony dostarcza mechanizmy, które można wykorzystać do budowania takiej komunikacji, w tym obsługi wiadomości i kolejek (komponent Symfony Messenger), zadań wykonywanych w tle oraz automatycznego ponawiania nieudanych operacji.
Dzięki temu chwilowa niedostępność ERP nie musi automatycznie oznaczać zatrzymania sprzedaży. Odpowiednio zaprojektowana platforma może przyjąć zamówienie, zachować potrzebne dane i ponowić komunikację, kiedy system zewnętrzny ponownie stanie się dostępny.
Po zbudowaniu odpowiedniego sposobu obsługi integracji podłączenie kolejnego systemu może również stać się bardziej przewidywalnym zadaniem zamiast każdorazowo wymagać projektowania całego mechanizmu od początku.
Framework dostarcza potrzebne narzędzia, ale o odporności integracji nadal decyduje architektura konkretnego rozwiązania.
Profesjonalny audyt systemu opartego na znanym frameworku może być prostszy niż analiza całkowicie autorskiego rozwiązania, ponieważ audytor może odwoływać się do znanych mechanizmów, standardów i konwencji.
Symfony publikuje również rekomendowane best practices. Dają one zespołom wspólny punkt odniesienia przy organizacji projektu i ocenie jego jakości.
Nie oznacza to, że każda aplikacja wykorzystująca Symfony automatycznie ma dobrą architekturę. Framework tworzy fundament i dostarcza narzędzia, ale jakość rozwiązania nadal zależy od decyzji podejmowanych przez zespół.
Symfony dobrze sprawdza się w skalowaniu aplikacji i może być wykorzystywane zarówno w stosunkowo niewielkich systemach, jak i rozwiązaniach obsługujących bardzo duży ruch. Jego elastyczność pozwala rozwijać aplikację wraz z rosnącymi potrzebami biznesu, a sam framework pozostaje solidnym fundamentem technologicznym dla jej dalszego rozwoju.
Symfony może być dobrym fundamentem dla platform e-commerce i systemów B2B, szczególnie wtedy, gdy projekt zawiera niestandardowe procesy biznesowe, liczne integracje i ma być rozwijany przez wiele lat.
W takich systemach często występują między innymi indywidualne cenniki, różne role i uprawnienia, złożone procesy zamówień, integracje z ERP, PIM czy CRM oraz automatyzacja procesów wykraczających poza standardową ścieżkę zakupową.
Symfony to framework dostarczający fundament technologiczny, na którym można budować rozwiązania dopasowane do konkretnego modelu biznesowego.
To rozróżnienie jest ważne. Jeżeli firma potrzebuje prostego sklepu wykorzystującego standardowe procesy, budowanie dedykowanego rozwiązania na frameworku nie zawsze będzie uzasadnione. Jeżeli natomiast gotowa platforma zaczyna ograniczać procesy firmy, większa kontrola nad logiką i architekturą może mieć istotne znaczenie.
Symfony to framework PHP, który dostarcza komponenty, narzędzia i strukturę pomocne w tworzeniu aplikacji internetowych. Pozwala wykorzystać gotowe rozwiązania dla powtarzalnych problemów technicznych i skoncentrować development na logice charakterystycznej dla konkretnego projektu.
Na Symfony zbudowane są między innymi Sylius i Shopware, a aktualna linia PrestaShop 9 wykorzystuje Symfony 6. Samo Symfony nie jest platformą sprzedażową – to fundament, na którym takie platformy powstają i który pozwala je rozszerzać o niestandardową logikę.
Nie. Symfony jest frameworkiem napisanym w PHP. PHP jest językiem programowania, natomiast Symfony dostarcza strukturę, komponenty i narzędzia wykorzystywane podczas tworzenia aplikacji w tym języku.
Oba to dojrzałe frameworki PHP. Laravel ułatwia szybki start dzięki gotowym konwencjom, Symfony daje modułowe komponenty, wersje LTS z długim wsparciem i większą swobodę w projektowaniu architektury – zresztą sam Laravel korzysta z wielu komponentów Symfony. O wyborze decydują złożoność projektu, planowany horyzont rozwoju i kompetencje zespołu.
LTS oznacza Long Term Support. To wersje frameworka, które otrzymują poprawki błędów przez 3 lata i poprawki bezpieczeństwa przez 4 lata – wobec 8 miesięcy w przypadku standardowych wersji. Nowa wersja LTS pojawia się co dwa lata, co ułatwia organizacjom planowanie aktualizacji i utrzymania aplikacji w dłuższej perspektywie.
Komponenty Symfony to niezależne elementy rozwiązujące konkretne problemy występujące podczas tworzenia aplikacji PHP. Mogą być wykorzystywane zależnie od potrzeb projektu, a część z nich opiera się na standardach PSR stosowanych szerzej w ekosystemie PHP.
Tak. Symfony może stanowić fundament platformy e-commerce, szczególnie gdy wymaga ona niestandardowej logiki biznesowej, wielu integracji i długoterminowego rozwoju. Sam framework nie jest jednak gotową platformą sprzedażową.
Tak, może być dobrym wyborem dla systemów B2B, w których występują złożone procesy, indywidualne zasady biznesowe, integracje, role użytkowników czy niestandardowa obsługa zamówień.
Nie. W przypadku prostych stron, blogów czy landing page'y możliwości frameworka mogą być większe niż rzeczywiste potrzeby projektu. Symfony ma większe uzasadnienie w aplikacjach zawierających złożoną logikę i rozwijanych przez dłuższy czas.
AI w developmencie e-commerce coraz mocniej wchodzi do codziennej pracy zespołów developerskich. Pomaga generować kod, p...
Czytaj więcej →
Decyzja o migracji do Sylius 2 to dopiero początek. W praktyce powodzenie upgrade'u zależy dużo bardziej od przygotowani...
Czytaj więcej →
Upgrade z Sylius 1 do Sylius 2 może być dobrą decyzją, ale nie w każdym projekcie będzie najlepszym kierunkiem. Zanim za...
Czytaj więcej →