W mojej codziennej pracy programisty PHP lubię używać frameworków, ponieważ są one rezultatem współpracy społeczności. Dzięki nim programiści nie muszą zastanawiać się nad rozwiązaniem powtarzalnych problemów, które zostały już kiedyś rozwiązane, i koncentrują się na wyższej warstwie aplikacji. Ale jednocześnie każdy z nich może wnieść swój wkład w  rozwój frameworka, w którym pracuje.

Na rynku dostępnych jest wiele rozwiązań dla wykorzystywanej przeze mnie technologii, nie jest więc trudno wybrać najbardziej odpowiedni dla konkretnego projektu lub odpowiednio do osobistych preferencji. Przyjrzyjmy się wszystkim obszarom programowania, w których można używać frameworków.

Można je zastosować w takich obszarach, jak:

  • Kompilatory różnych języków programowania – chodzi o programy do automatycznego tłumaczenia kodu napisanego w jednym języku na odpowiadający mu kod w drugim języku,
  • Aplikacje do modelowania finansowego,
  • Aplikacje do modelowania typu Earth Science Applications (ESA),
  • Systemy wspomagające podejmowanie decyzji – systemy dostarczające informacje i wiedzę,
  • Aplikacje webowe – programy komputerowe, które działają na serwerach za pośrednictwem sieci komputerowych i łączą się z komputerami użytkowników za pomocą przeglądarki internetowej,
  • Middleware – oprogramowanie pośredniczące pomiędzy różnymi aplikacjami, usługami lub systemami.

Na rynku oprogramowania mamy obecnie wiele rozwiązań gotowych do użycia, a większość z nich oparta jest na frameworkach. Zapewniają one bardzo przejrzystą i sformalizowaną architekturę, aby umożliwić programistom dokonywanie dalszych modyfikacji oraz zorganizowaną pracę w grupie. Taka budowa oprogramowania charakteryzuje się wysokim poziomem złożoności. Warto jest jednak się uczyć tych technologii i rozwiązań, ponieważ mogą one przyspieszyć zarówno twoją pracę, jak i pracę całego zespołu. Przyjrzyjmy się temu jeszcze bardziej szczegółowo i spójrzmy na listę zalet i wad frameworków.

Czytaj także: Clean Architecture

Frameworki – zalety i wady

Zalety:

  • Wydajność – dzięki budowaniu aplikacji przy użyciu frameworka programista pisze mniej kodu,
  • Lepsza jakość kodu – ponieważ frameworki są zaprojektowane w taki sposób, by zapewnić elastyczność, mają dobrą logikę wewnętrzną i narzucają tę samą logikę stworzonej aplikacji,
  • Niezawodność – frameworki takie jak szkielety aplikacji są dobrze zaprojektowane i przetestowane.

Wady

  • Złożoność – frameworki są trudniejsze do nauki ze względu na szerokie i zaawansowane użycie,
  • Wydajność – elastyczna konstrukcja utworzonego oprogramowania często uzyskiwana jest kosztem niższej wydajności (w tym miejscu muszę wspomnieć o systemach pamięci podręcznej, które w dużym stopniu mogą przyśpieszyć odpowiedzi serwera i zrównać je lub zbliżyć do odpowiedzi „czystego” kodu).

Jak widać, plusów jest więcej niż minusów, co moim zdaniem jest największą zaletą frameworków. Musimy jednak pamiętać, że frameworki nie są zawsze najlepszym rozwiązaniem. Na przykład, jeśli potrzebujemy stworzyć aplikację do wyświetlania na ekranie pojedynczej wiadomości jako odpowiedzi serwera, użycie dodatkowych narzędzi bez zaawansowanego systemu pamięci podręcznej spowolni odpowiedź serwera i działanie aplikacji. Taka aplikacja wymaga tylko jednego polecenia do wykonania i nie są potrzebne żadne dodatkowe narzędzia, aby otrzymać wymagany rezultat.

Jak prawidłowo korzystać z frameworków?

Nie można powiedzieć, że frameworki mogą rozwiązać wszystkie problemy związane z programowaniem, ale z pewnością mogą pomóc w codziennych zadaniach. Z drugiej strony – trzeba być ostrożnym. Wiele razy obserwowałem konwersacje na forach poświęconych danemu frameworkowi, w których dyskutujący próbują udowodnić, że wybrany przez nich framework jest najlepszy – czego nie da się jednoznacznie stwierdzić bez dokładnej analizy problemu.

Moim zdaniem frameworki są jak narzędzia – im więcej posiadasz narzędzi, tym więcej problemów jesteś w stanie rozwiązać. Jeśli masz tylko młotek, będziesz mógł jedynie wbić gwóźdź. Jeśli masz natomiast cały garaż pełen narzędzi, możesz stworzyć dużo więcej rzeczy.

Czytaj także: Szaleństwo mikroserwisów

Podejście multi-framework

Takie podejście jest rezultatem architektury obecnych aplikacji, budowanych z bibliotek – oddzielnych modułów z własnymi wymaganiami, które można wykorzystać, aby stworzyć dowolny rodzaj aplikacji. W ten sposób aplikację można podzielić na mniejsze części i dzięki temu będzie bardziej zrozumiała dla większej liczby osób. Biblioteki organizują również strukturę aplikacji i pomagają rozwijać większe projekty.

Frameworki

W myśl tego podejścia możemy używać bibliotek jako niezależnego oprogramowania i instalować je w celu zbudowania większych aplikacji. Nie ma przeszkód w korzystaniu w taki sam sposób z frameworków – każda część aplikacji może być zbudowana przy użyciu innego. Dlaczego tak jest? Kiedy korzystamy z bibliotek utworzonych tylko dla jednego frameworka, nie jesteśmy w stanie korzystać z oprogramowania stworzonego dla innych, które może znacząco ulepszyć i przyśpieszyć pracę nad projektem.

Podsumowanie

Podsumowując – powinniśmy stosować podejście, które pozwoli nam pozostać otwartym na stosowanie różnych bibliotek, a w tym przypadku nazwa frameworka jest tylko źródłem pochodzenia danej biblioteki. Przykładem takiego podejścia są popularne rozwiązania, jak platformy e-commerce MagentoSylius czy też sklep e-commerce nowej generacji o nazwie Shopware. Zastosowanie podejścia multi-framework to nie tylko e-commerce – zaobserwujemy je również w popularnych i bardzo elastycznych rozwiązaniach CMF takich jak Sulu. Gdy sprawdzamy kod źródłowy tych aplikacji na GitHubie, można zobaczyć, że autorzy korzystali z bibliotek pochodzących z frameworków Zend i Symfony – bibliotekami tymi można zarządzać w technologii PHP za pośrednictwem composera. Na pierwszy rzut oka proporcje nie są duże, jednak możemy zacząć uważać to za wykorzystanie podejścia multi-framework i traktować jako świadomą decyzję w kontekście realizacji architektury projektu.

 

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

Komentarze:

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.