Article

Front-end-main-header-blog

Category: Expertise strategy

Efektywne sposoby na pracę z back-endem

Przewodnik po rozwiązaniach wspierających pracę front i back-end developerów.

Kamil Naja, Programista Front-end emagine, 06/07/2023

Aby tworzyć rozwiązania front-endowe, zwykle pobieramy dane z aplikacji back-endowej. W tym artykule chciałbym przedstawić, w jaki sposób możemy udoskonalić i przyspieszyć tę pracę. Podstawowe czynniki, które wziąłem pod uwagę podczas analizy, to elastyczność pracy oraz to, czy programista używający API, może edytować dane zwracane przez back-end.

Praca w back-endowym serwerem działającym lokalnie:

Takie rozwiązanie sprawdzi się najlepiej przy prostym back-endzie. Polega na tym, że lokalnie konfigurujemy aplikację back-endową (zwykle wraz z bazą), włączamy ją i podłączamy się do lokalnego API. Dużym plusem jest możliwość bycia na bieżąco ze zmianami kodu, jeśli chcemy użyć jakiegoś API, nie musimy czekać na jego “wystawienie” na serwerze, wystarczy pobrać najnowsze zmiany i zrestartować aplikację.
To rozwiązanie jest też dobre, jeśli pracujemy jako fullstack deweloper i rozwijamy jednocześnie front-end i back-end.

Minusem pracy z lokalnym back-endem jest to, że coraz częściej back-end nie składa się z jednego serwisu. W nowszych aplikacjach może wykorzystywać wiele mikroserwisów, a w długo rozwijanych - zawierać wiele zależności. W takiej sytuacji lokalne skonfigurowanie i uruchomienie back-endu może zająć dużo czasu.

Utrudnieniem może być też brak danych w bazie danych i konieczność pisania migracji. Przykładowo, jeśli chcemy sprawdzić działanie tabeli, która wyświetla wiele danych, musimy najpierw dodać te dane w jakiś sposób do bazy.

Aplikacja back-endowa jako kontener Docker uruchomiona lokalnie

Spakowanie aplikacji back-endowej do konteneru Dockera pozwala na znaczne uproszczenie procesu konfiguracji. Kontener będzie zawierał wszystko, co jest potrzebne do włączenia aplikacji, podłączymy się do niej na odpowiednim porcie podobnie, jak do aplikacji postawionej lokalnie.

Minusem jest to, że zbudowanie obrazu jest dodatkową pracą. W tym rozwiązaniu nie możemy też tak dynamicznie reagować na zmiany back-endowe. Przykładowo - jeśli zmieni się endpoint, aplikacja musi być znowu “zdokeryzowana”.

Takie podejście może być łączone z back-endem działającym lokalnie. W architekturze mikroserwisów można zdokeryzować te serwisy, które nie są tak aktywnie rozwijane, a te, które są aktywnie rozwijane, uruchamiać lokalnie. Mogą pojawić się tutaj analogiczne wyzwania z danymi jak w poprzednim podejściu.

Middle-text-front-end-emagine_2

 
  Zaletą tego rodzaju pracy jest brak konieczności konfigurowania backendu lokalnie. Nie ma potrzeby uruchamiania bazy danych ani instalowania Dockera.

 


Użycie serwera mockowego:

W tym rozwiązaniu nie łączymy się do realnego serweru back-endowego, używamy aplikacji, która zwraca dane o podobnej strukturze jak serwer. Decydującą kwestią jest to, czy taki serwis mockowy jest rozwijany raczej po stronie back-endu, czy też w technologiach bliższych front-endowcom.

 

Mock po stronie back-endu:

Jeśli aplikacja back-endowa wykorzystuje różne API i zwraca je dla aplikacji front-endowej i nie posiada bazy, wtedy mock można zorganizować w formie aplikacji back-endowej. Symuluje on odpowiedź wielu serwisów i zwraca dane na przykład w formie plików JSON. Podczas pracy na wyższych środowiskach, serwer mockowy, z którym łączy się back-end, jest zastępowany automatycznie przez połączenie z prawdziwymi serwisami. Takie rozwiązanie jest mniej dynamiczne perspektywy front-endu, jednak pozwala na przykład na efektywne testowanie z użyciem Selenium. Edytowanie danych może być proste, ponieważ mogą być to zwykłe pliki JSON. Spotkałem się też z serwisem mockowym po stronie back-endu zawierającym prostą logikę, pozwalającą na przechowywanie danych. Oczywiście im bardziej skomplikowany będzie taki serwer, tym więcej czas zajmie jego rozwój.

Serwer mockowy po stronie front-endu:

W tym podejściu z back-endu możemy otrzymać część danych i użyć ich jako mocków lub wygenerować sobie dane na podstawie dokumentacji API. Dobrym podejście może być tutaj użycie generatora danych jak na przykład: faker.js
Dane można skopiować też z przykładów Schemas ze Swaggera.

Takie rozwiązanie jest dobre ze względu na możliwość błyskawicznego zmieniania danych odpowiedzi. Dzięki temu na front-endzie możemy na przykład potestować zachowanie aplikacji z:

● odpowiedziami dłuższymi niż zwykle
● różnymi kodami odpowiedzi (także z błędami)
● z brakiem danych (pusta odpowiedź)
● z różnym czasem odpowiedzi

Takiej elastyczności nie znajdziemy w żadnym innym podejściu. Realnym przykładem, dlaczego taki serwer jest przydatny, jest rozwiązywanie błędów. Jeśli user w jakimś przypadku otrzymuje błąd front-endowy, możliwe jest skopiowanie pliku JSON używanego podczas requestu ze środowiska i zamockowanie go lokalnie. Zwykle pozwala to na odwzorowanie błędu.

Przykładem aplikacji, która pozwoli na stworzenie serwera mockowego jest: node-mock-server

Napisanie podobnego projektu w node.js samemu także nie zajmie dużo czasu, natomiast pracochłonne jest jego rozwijanie. Konieczne jest zamockowanie wszystkich endpointów, jednak zamockowane dane można używać wielokrotnie.

Serwer mockowy posiada wadę - nie jest on realnie działającą aplikacją back-endową i na przykład po dodaniu danej, nie będzie reagował w standardowy sposób i nie zwróci więcej danych, o ile tego nie zamockujemy. Dla bardziej doświadczonej osoby nie powinno to stanowić problemu.

Kamil

Kamil Naja

Programista front-end
Specjalista realizujący projekty dla klientów emagine. Programista Front-end od początków kariery w IT, którą rozpoczynał w 2016 r. Blogger i propagator wiedzy w swojej dziedzinie.

Chcesz wiedzieć więcej?

Pomożemy Ci odnieść sukces w roli niezależnego konsultanta IT.

Blog

Więcej wpisów na blogu

Expert stories

Dla specjalistów IT: W jaki sposób odciążyć umysł w pracy

Od kilku lat interesuję się wydajnością pracy i w tym artykule chciałbym przedstawić najważniejsze metody, które wg mnie pozwolą pracować łatwiej i wydajniej w środowisku IT.

Expert stories

Microsoft Dev Box – nowoczesna maszyna robocza

Microsoft Dev Box to zwirtualizowane rozwiązanie, które umożliwia inżynierom IT szybkie uruchamianie samoobsługowych stacji roboczych wstępnie skonfigurowanych do ich zadań, przy jednoczesnym zachowaniu scentralizowanego zarządzania w celu maksymalizacji bezpieczeństwa i zgodności ze standardami w organizacji. Czy już je znasz?

Expert stories

Wymagania niefunkcjonalne w procesie tworzenia aplikacji

Podczas rozwijania aplikacji webowej zwykle odkrywamy szereg specyficznych funkcjonalności, wedle których ma ona działać. Niektóre z nich mogą wydawać się oczywiste dla części członków zespołu IT pracującego nad rozwiązaniem, jednak inni wolą mieć je spisane w szczegółowej formie, aby móc je wszystkie zaimplementować lub testować.

Expert stories

Najlepsze praktyki w zakresie bezpieczeństwa łańcucha dostaw oprogramowania

Łańcuch dostaw oprogramowania to „proces dostarczania produktu do klienta” w domenie IT, odnosi się do procesu projektowania, budowania, dostarczania i utrzymania. Jego bezpieczeństwo jest nie tylko ważnym, ale wręcz kluczowym aspektem współczesnego świata IT.

Expert stories
Webinar

Obejrzyj zapis webinaru “AI: Nowa fala przyszłości”

Szansa cywilizacyjna, czy też zagrożenie? Algorytmy sztucznej inteligencji od wielu lat stanowią jeden z centralnych punktów dyskusji o przyszłości technologii. Rozwiązania oparte na AI, niezależnie od poziomu organizacji na którym zostaną wykorzystane, pomogą stworzyć nowatorskie modele biznesowe. Sprawdźcie zatem, czy Wasza organizacja jest do tego dobrze przygotowana. Czego się spodziewać? Jak wykorzystać AI, aby tworzyć przewagę konkurencyjną na rynku?

Expert stories

Snapshot testing w aplikacjach front-endowych – czy wiesz już wszystko?

Jednym z największych wyzwań podczas tworzenia aplikacji front-endowych jest unikanie wprowadzania niechcianych zmian. Testowanie logiki biznesowej jest możliwe za pomocą testów jednostkowych, jednak nie sprawdzają one zwykle całej struktury HTML. Rozwiązaniem problemu regresji w plikach HTML może być snapshot testing.

Expert stories

Przyszłość sztucznej inteligencji – jakie wyzwania i możliwości stoją przed światem IT?

Przyszłość sztucznej inteligencji (SI) niesie ze sobą zarówno wyzwania, jak i ogromne możliwości rewolucji technologicznej. Zewsząd słyszymy, że SI przejmie we wszystkim kontrolę i my jako ludzie będziemy już mniej potrzebni lub wręcz zbędni – czy aby na pewno?

Expert stories

Efektywne sposoby na pracę z back-endem

Aby tworzyć rozwiązania front-endowe, zwykle pobieramy dane z aplikacji back-endowej. W tym artykule chciałbym przedstawić, w jaki sposób możemy udoskonalić i przyspieszyć tę pracę. Podstawowe czynniki, które wziąłem pod uwagę podczas analizy, to elastyczność pracy oraz to, czy programista używający API, może edytować dane zwracane przez back-end.

Expert stories

Neo4j: Grafowa baza danych rewolucjonizuje zarządzanie informacjami

Wraz z gwałtownym wzrostem ilości danych na znaczeniu zyskują nowoczesne rozwiązania bazodanowe. Jednym z najciekawszych i najbardziej innowacyjnych rozwiązań jest neo4j – grafowa baza danych, która rewolucjonizuje sposób przechowywania i analizy informacji. W tym artykule przyjrzymy się bliżej temu fascynującemu narzędziu, poznamy jego zalety, funkcje oraz praktyczne zastosowanie.

Expert stories

Jak AI wspiera pracę Front-end developerów – praktyczny poradnik

Z perspektywy front-endowca w ostatnim roku zauważyłem jak bardzo zastosowanie nowoczesnych narzędzi pomaga w szybszym tworzeniu aplikacji i sprawia, że pozbawione są one błędów. W artykule opisuję zastosowanie ChatGPT, Github Copilot oraz Github Copilot Chat, określając je skrótowo mianem AI.

Expert stories

Wypalenie zawodowe specjalistów IT – jak je przewidzieć i jak mu zapobiec?

Na pewno każdy z nas chociaż raz czuł, że w jego pracy coś idzie inaczej, niż by chciał. Dochodzi to tego zmęczenie, stres, spadek motywacji i nagle cały zawodowy świat się wali – zaczynamy myśleć, czy to, co robimy ma sens, czemu dotychczasowe działania nie przynoszą pożądanych efektów. Innymi słowy, wpadamy w rozmyślania nad tym, jak jest ciężko. Najczęściej to tylko zmęczenie, brak odpoczynku, stres, natomiast kiedy warto zadbać o siebie bardziej i przekonać się, czy to nie jest wypalenie zawodowe?

Expert stories

Jak skutecznie zbudować i utrzymać relację z kandydatem podczas procesu rekrutacyjnego w IT

Branża IT od dawna  jest  jedną z najbardziej dynamicznie rozwijających się dziedzin rynku, niezależnie od szerokości geograficznej. Tym bardziej, znalezienie odpowiedniego kandydata do realizacji projektów IT, który spełniałby wszystkie wymagania zarówno pod względem wiedzy i umiejętności technicznych, jak i kompetencji miękkich nigdy nie było czymś prostym.

Expert stories

Poznaj kompetencje miękkie przyszłości w obszarze sprzedaży

Inwestycja w kompetencje miękkie może szczególnie opłacić się w zawodach przyszłości. W przeciwieństwie do twardych, kapitałem nie jest wykształcenie czy fachowa wiedza. Soft skills pozwolą tym, którzy je wdrożą i oswoją, z lekkością adaptować się do zmian jakie czekają rynek pracy.

Paweł Pancerz
Expert stories

Rozwój Chmury – co czeka nas w najbliższej przyszłości?

W ciągu ostatnich lat rozwój technologii chmurowych zmienił się bardzo dynamicznie. Wymogi rynkowe oraz coraz większa świadomość w zakresie potencjału technologii chmurowych sprawiają, że obawy przed tą technologią IT są coraz mniejsze.

Marcin Kosiński
Expert stories

Efektywna praca zdalna w innej strefie czasowej

Zdalna praca w innej strefie czasowej  jest możliwa, gdy w zespole panuje odpowiednia dyscyplina.

ichał Mrozowski, Starszy Analityk Biznesowy, Scrum Master
Expert stories

10 cech dobrego Scrum Mastera

Czy każdy nadaje się na Scrum Mastera? Jeśli zespół poszukuje Scrum Mastera, który wniesie wartość dodaną i będzie dla niego wsparciem – a nie tylko prowadzącym ceremonie – powinien szukać osoby posiadającej konkretne cechy.