Jak zostać programistą aplikacji webowych? Cz. 2 – backend

W poprzednim wpisie Jak zostać programistą? Rok 2023 opisałem krótko jak wygląda początek kariery w IT.

Oprócz ogólnego opisu postanowiłem opisać, jak wygląda praca jako programista aplikacji webowych. We wpisie opowiedziałem, że aplikacje webowe dzielą się na frontend i backend. Poprzedni post opisywał frontend, natomiast w tym wpisie opowiemy sobie, do czego służy backend.

Źródło: https://twitter.com/alvinfoo/status/1527695664179724291

UWAGA
Poniższy tekst jest skierowany głównie dla osób, które nigdy nie miały styczności z programowaniem. Pewne opisy zostały mocno uproszczone, aby osoby nietechniczne mogły w sposób przystępny zaznajomić się z tematem lub problematyką.

Czym jest backend?

Z angielskiego „back” znaczy „tył”. Osoba zajmująca się backendem pracuje nad tym, co jest z tyłu aplikacji, czyli przyjmuje dane, wykonuje obliczenia oraz zapisuje informacje na serwerze.

Ok, ale co dokładnie robi backendowiec?

Jak wspomniałem wcześniej, jego głównym zadaniem jest odbiór informacji z frontu, czyli od użytkownika i wykonanie procedur potrzebnych do spełnienia założeń aplikacji.

Przykłady:

  • podając login i hasło należy sprawdzić, czy podane dane są prawidłowe (walidacja, o tym później) oraz czy podany użytkownik istnieje w bazie danych, oraz czy hasło pasuje do danego użytkownika
  • informacje, które dostaniemy od użytkownika musimy zapisać w bazie danych
  • co rok musimy uruchomić proces, który doda do kolejki każdego pracownika, następnie inny proces pobierze każdego pracownika w celu wyliczenia PITa 11
  • co 10 minut proces będzie sprawdzał, czy przyszedł nowy mail. Jeśli przyjdzie treść wiadomości należy zapisać u zewnętrznego dostawcy usługi CMS (ang. Content Management System – system zarządzania treścią). Jeśli nie przyjdzie, należy powtórzyć sprawdzenie za 10 minut

Jak widzisz backendowiec ma trochę pracy 🙂

Czy wiesz, że?
Hasła, które podajemy, muszą być odpowiednio zabezpieczone w razie wycieku?
Służą m.in. do tego funkcje jednokierunkowe, które uniemożliwiają odczytanie zaszyfrowanego tekstu.

Walidacja – poprawność danych

Wspomniałem, że na froncie musimy sprawdzić poprawność danych? Otóż musimy sprawdzić dane nie tylko na frontendzie, ale także na backendzie.

Dlaczego?

Ponieważ można spreparować zapytanie do serwera w taki sposób, aby ominąć front. Zadaniem backendowca będzie sprawdzenie czy przesłane dane, np. adres e-mail, nr PESEL czy liczba są poprawne.
W przypadku maila należy sprawdzić, czy:

  • zawiera znak małpy (@)
  • domena (nazwa po @) jest poprawna
  • adres nie zawiera niedozwolonych znaków
  • adres nie zawiera w sobie kodu wirusa, który po przesłaniu na serwer zostanie uruchomiony

To tylko wycinek pracy backendowca.

Zapis danych

Backend odpowiedzialny jest za proces przechowywania danych. W zależności od aplikacji informacje mogą być przechowywane w plikach, bazach danych czy pamięci operacyjnej. Rolą programisty jest zapisanie danych w taki sposób, aby był on optymalny dla procesu.

Odpowiedz na pytanie:

czy łatwiej jest znaleźć adres w książce telefonicznej, która jest posortowana alfabetycznie wg nazwiska czy posortowana wg daty dodania?

Jak to w IT — to zależy, czy chcemy łatwo odnajdywać numery do osób na podstawie nazwiska czy wyświetlać ostatnio dodane numery.

Tak samo musimy zastanowić się, czy lepiej zapisać informacje w bazie danych czy lepiej w pliku.

Jeśli baza danych, to jaka? Relacyjna? Nierelacyjna?

Ok, skończmy ten zapis danych. Chodźmy dalej.

Skąd się biorą dane na froncie?

Backend to nie tylko zapis, ale także odczyt danych. Proces jest „odwrotny”. Na podstawie parametrów-wytycznych podanych od użytkownika lub systemu, dane są pobierane z różnych źródeł.

Tymi źródłami może być wyżej wymieniona baza danych, pliki, pamięć operacyjna, a także zewnętrzne serwisy np. Facebook, Instagram, Twitter, Google.

Oczywiście dane trzeba pobrać na podstawie jakichś parametrów np. imię i nazwisko. W związku z tym trzeba odpowiednio przygotować zapytanie, aby otrzymać oczekiwane informacje, a następnie przekazać je do frontu.

A jak nie ma danych?

Dobre pytanie! Takie przypadki należy także obsłużyć. Czasem może to być zwrócenie „pustej” wartości.

Połączenie frontu i backendu

Warto jeszcze wspomnieć jak wygląda komunikacja między frontem a backendem.

Kombinacji jest tutaj bardzo dużo i nie sposób wszystkie je opisać. A przynajmniej nie językiem zrozumiałym dla osób, które nigdy nie programowały (przykro mi).

Skupmy się na prostym przypadku, czyli np. zalogowanie się użytkownika.

Jak to działa?

  1. należy wejść na odpowiedni adres strony
  2. backend otrzymuje informację, którą stronę należy wyświetlić
  3. backend zwraca kod, który napisany przez frontendowca, jest interpretowany przez przeglądarkę i wyświetla się w sposób czytelny dla użytkownika
  4. użytkownik wpisuje login (e-mail) i hasło w pola tekstowe
  5. kod napisany w JavaScript przez frontendowca sprawdza, czy e-mail jest poprawny (walidacja) a hasło spełnia założenia bezpieczeństwa (poziom skomplikowania)
  6. klikamy przycisk wyślij
  7. dane zostaną wysłane na serwer, gdzie zostaną obsłużone. Backend otrzymuje dane z frontu, następuje proces ponownego sprawdzenia e-maila i hasła (walidacja)
  8. jeśli dane są poprawne należy sprawdzić czy podana para, e-mail i hasło, wskazują na użytkownika
    • jeśli nie, należy zwrócić błąd i wyświetlić go na froncie
    • jeśli tak, idziemy dalej
  9. jeśli uwierzytelnienie powiedzie się należy wysłać informację do frontu, że użytkownik jest zalogowany

Oczywiście powyższe kroki są bardzo okrojone. Chcę tylko naszkicować jak wygląda komunikacja.

Zakończenie

Na sam koniec zostawiam Ci bezpośredni link do roadmapy backendowca: https://roadmap.sh/backend/

Co pominąłem?

Mógłbym pisać bardzo bardzo długo jak wygląda proces wytwarzania oprogramowania. Wiele tematów jest wspólnych dla frontu i backendu. Są to między innymi:

  • bezpieczeństwo aplikacji, aby nikt niepożądany nie uzyskał dostępu do naszych danych
  • ustalenie formatu danych w komunikacji między frontem a backendem. Jeśli wartość ma być liczbowa, to wartość liczbowa musi być po obu stronach. Czy wiesz, że liczbę „1” możemy zapisać jako liczba lub jako tekst i ich zachowanie w świecie IT będzie zupełnie inne? 🤓
  • optymalizacja działania – prędkości oraz zasobów
  • wybór narzędzi ułatwiających produkcję oprogramowania

Jak widzisz w tym wpisie i poprzednim, proces tworzenia oprogramowania jest skomplikowany i czasochłonny. Jeden błąd może mieć różne konsekwencje. Od irytacji użytkownika (łagodne) do wypadków z udziałem ludzi (katastrofa).

A winny jest ten jeden, nic nieznaczący średnik na końcu linijki…

Hasła – jak to działa (bonus)

Jeśli zainteresował Cię wyróżniony wpis o przechowywaniu haseł to pokrótce opowiem Ci jak to działa.

Jak wspomniałem, hasła nie mogą być przechowywane w formie jawnej (plain text). Dlaczego?

A chcesz, abym wiedział, jakie masz hasło do logowania na moim portalu? 🙂 Albo do konta bankowego.

No właśnie… W związku z tym stosuje się funkcje jednokierunkowe np. SHA-1. Jest to funkcja, która szyfruje tekst, ale z zaszyfrowanego tekstu nie ma możliwości odczytania oryginalnej zawartości.

Przykład:

Tekst do zaszyfrowania: ciasteczko
SHA-1: f6135118855ca7240972ef9f5494c27d268c1af8

Ok, ale jak w takim razie mam sprawdzić hasło wpisane przez użytkownika, skoro wpisał go na stronie, a serwer nie wie, jakie to hasło jest?

Serwer nie musi wiedzieć, jakie jest oryginalne hasło. Na podstawie danych wprowadzonych przez użytkownika serwer wylicza wartość (hash) to, co użytkownik wpisał, a następnie porównuje dwa hashe.

Przykład:

Hasło: ciasteczko
Hash: f6135118855ca7240972ef9f5494c27d268c1af8

Hasło podane przez użytkownika: herbatnik
Hash: 7a4f00c946589635629e6cb83cdd516d730767eb

Czy f6135118855ca7240972ef9f5494c27d268c1af8 jest takie samo jak 7a4f00c946589635629e6cb83cdd516d730767eb?

NIE

Hasło: ciasteczko
Hash: f6135118855ca7240972ef9f5494c27d268c1af8

Hasło podane przez użytkownika: ciasteczko
Hash: f6135118855ca7240972ef9f5494c27d268c1af8

Czy f6135118855ca7240972ef9f5494c27d268c1af8 jest takie samo jak f6135118855ca7240972ef9f5494c27d268c1af8?

TAK

Tak działa w dużym uproszczeniu sprawdzenie, czy hasło jest poprawne 🙂

Jak zostać programistą aplikacji webowych? Cz. 2 – backend
Subscribe
Powiadom o
guest

0 komentarzy
Inline Feedbacks
Zobacz wszystkie komentarze