
Jednym z nowoczesnych podejść do tworzenia aplikacji webowych jest rozdzielenie jej na część backendową i frontendową, które działają osobno i komunikują się ze sobą za pomocą protokołu HTTP.
W tym artykule przedstawię najważniejsze korzyści, które zyskujemy dzięki takiemu podejściu.
Łatwiejsze skalowanie i szybszy rozwój
Dzięki komunikacji za pomocą protokołu HTTP, backend i frontend aplikacji mogą być rozwijane niezależnie od siebie. Programista zajmujący się widokiem aplikacji nie musi czekać na dane z API, ponieważ może pobrać dane z wygenerowanych plików .json, zawierających przykładowe dane. Innym rozwiązaniem jest skorzystanie z serwisu wystawiającego endpointy z danymi.
Programista backendowy może natomiast wystawić odpowiednie endpointy przyjmujące lub zwracające dane i zamiast czekać na ukończenie prac przez kolegów z zespołu frontendowego, zająć się kolejną częścią aplikacji. Backend aplikacji może także zostać wystawiony, przetestowany i opatrzony odpowiednią dokumentacją, która pozwoli na pracę zespołu frontendowego w innym czasie.
Częstym problemem w rozwoju aplikacji jest stosowanie zbyt dużych projektów stanowiących jedną całość. Powoduje to dłuższy czas pracy, nie dający żadnych korzyści, ponieważ deweloper musi czekać przykładowo na załadowanie dużego projektu lub pliku. Rozpoczynając pracę od razu podzielonego projektu, zmniejszamy to obciążenie.
Możliwość wystawienia jednego API i korzystania z niego z różnych urządzeń/programów
Na widok użytkownika może składać się zarówno:
- strona wyświetlona w przeglądarce na laptopie
- aplikacja mobilna
- aplikacja instalowana na komputerze
- aplikacja na telewizorze Smart.
Dzięki rozdzieleniu warstw aplikacji, wystarczy stworzyć i rozwijać jeden backend, do którego następnie stworzy się i podłączy za pomocą protokołu HTTP kilka rodzajów aplikacji. Jest to szczególnie ważne dzisiaj, gdy standardem stało się korzystanie z aplikacji na smartfonach, a już niedługo rozpowszechni się to także na innych urządzeniach IOT (Internet of Things). Już dziś możliwe jest podłączanie do sieci takich urządzeń, jak lodówki, czajniki czy głośniki bezprzewodowe.
Jeśli architekt podejmie złą decyzję projektową dotyczącą wyboru frameworka (lub nawet języka programowania) do tworzenia aplikacji, możliwa jest jego późniejsza zmiana bez konieczności przepisywania całego projektu.
Możliwość niezależnego rozwoju backendu i frontendu
Programy sieciowe stają się coraz bardziej skomplikowane. Backend może być pisany w takich językach jak:
- Java
- C#
- PHP
- js (JavaScript po stronie serwera)
- Python
- oraz wielu innych.
Do budowania widoków aplikacji wykorzystuje się HTML, CSS i JS, korzystając z takich frameworków jak:
- Angular
- React
- js
- lub stawiając na mniej popularne albo autorskie rozwiązania.
Stawia to ogromne wyzwanie przed deweloperami, którzy muszą poznawać coraz więcej technologii. Rozdział aplikacji na dwie niezależne części sprawia, że rozwojem aplikacji może zająć się na przykład osoba, która zna jedynie język służący do budowy backendu lub frontendu, natomiast nie musząca dotykać się do kodu „po drugiej stronie”.
Taka specjalizacja ułatwia także znalezienie programistów do rozwoju aplikacji i pozwala im na wyspecjalizowanie się w trakcie rozwoju projektu. Dzięki temu, programista może także pracować w swojej ulubionej technologii i przykładowo – zająć się budową UI, nie mając bezpośredniej styczności z bazami danych, lub odwrotnie. To także sposób na uniknięcie błędów, które może wprowadzić do projektu osoba, która nie miała wcześniej do czynienia z programowaniem w danej technologii.
Co więcej, programiści mogą pracować w swoich ulubionych edytorach, ponieważ backend i frontend aplikacji są rozwijane osobno. Programista backend często nie ma konieczności włączania interfejsu wizualnego użytkownika, natomiast programista frontend jedynie włącza i aktualizuje serwer do bieżącej wersji.
Backend aplikacji może działać zarówno na komputerze lokalnie, jak i na serwerze – w tym drugim przypadku zmniejsza się obciążenie maszyny, jak również odciąża programistę z konieczności pamiętania o jego włączaniu.
Łatwiejsze ustawianie projektu
W 2018 roku nie brakuje wygodnych rozwiązań, które pozwalają na włączenie aplikacji w odpowiedniej wersji (testowa, produkcyjna, deweloperska) za pomocą dosłownie kilku kliknięć myszą. Duże zasługi mają tutaj takie aplikacje jak: NPM, Webpack czy Gulp.
Ułatwia to wdrożenie nowego programisty do pracy oraz skraca czas potrzebny do skonfigurowania projektu na nowej maszynie.
W przypadku tworzenia projektu łączącego frontend i backend często dochodzi do sytuacji, gdy podstawowy setup aplikacji zajmuje kilka dni i jest źródłem frustracji. Oczywiście, takie problemy pojawiają się także w aplikacjach REST, jednak świadczy to o konieczności wprowadzenia zmian w projekcie.
Takie podejście umożliwia także łatwiejsze wdrożenie ciągłego dostarczania (continuous delivery), co wpływa pozytywnie na zadowolenie klienta i jakość kodu.