Najważniejsze zagadnienia, które musisz znać
5 godz. 53 min · JavaScript · Full-stack i Programowanie
Adam GospodarczykPrzesyłanie oraz transformacja danych to jeden z najważniejszych elementów działania każdej aplikacji. Dobre zrozumienie tego w jaki sposób odbywa się ten proces, daje równocześnie lepsze zrozumienie całej struktury oraz podejmowania decyzji projektowych. W tym kursie znajdziesz lekcje, które pozwolą Ci uporządkować wiedzę na temat protokołu HTTP oraz formatów wymiany danych.
REST oraz GraphQL to nadal nieodłączone zagadnienia tematu wymiany informacji w kontekście aplikacji webowych. Pomimo tego, że ich koncepcje zwykle są bardzo dobrze opisane w różnych źródłach, tak ich wykorzystanie "na produkcji" potrafi sprawić problemy. W szczególności gdy weźmiemy pod uwagę, wyjątki oraz fakt, że nie każda aplikacja będzie wymagać implementacji REST czy GraphQL w 100%. W tym kursie znajdziesz wiele praktycznych wskazówek związanych z pracą z REST API oraz wprowadzenie do pracy z GraphQL.
Niektóre błędy w aplikacji są bardzo pożądane, w szczególności gdy jasno informują użytkownika o tym, co się wydarzyło oraz o tym, co może z tym zrobić. Pomimo tego, że w wielu przypadkach opracowanie komunikatów leży w rękach osoby odpowiedzialnej za copywriting (i/lub ux writing), tak sama implementacja tych komunikatów odbywa się po stronie kodu. Nie rzadko okazuje się, że poprawna i skuteczna walidacja danych oraz obsługa błędów nie jest oczywista w "produkcyjnych" sytuacjach. W tym kursie znajdziesz najczęściej spotykane problemy oraz sposoby ich rozwiązania.
Bazy danych są praktycznie nieodłączną częścią każdej aplikacji. W roli full-stacka prędzej czy później przyjdzie Ci z nimi pracować a nie rzadko nawet projektować oraz rozbudowywać ich struktury. W tym kursie znajdziesz informacje o bazach danych, które pozwolą Ci je zrozumieć oraz od razu poznać użyteczne techniki, które pomogą Ci w pracy z nimi, zarówno na produkcji jak i w środowisku lokalnym czy testowym.
Nie wszystkie informacje w aplikacji są publiczne. Niektóre wprost nie mogą takie być. Z tego powodu niezbędne są sposoby na to aby poznać a potem weryfikować tożsamość użytkownika, by na jej podstawie przydzielać mu dostęp wyłącznie do zasobów, do których odczytywania posiada uprawnienia. Istnieje wiele technik, które umożliwiają zarządzanie dostępem do danych i w tym kursie poznasz najważniejsze z nich. Dowiesz się nie tylko w jaki sposób zabezpieczać dane ale poznasz też najpopularniejsze sposoby na to aby te zabezpieczenia łamać i obchodzić. Mając świadomość takiej możliwości, będziesz w stanie lepiej podejmować decyzje o tym jak projektować dostęp do informacji.
Istnieją problemy charakterystyczne dla niemal każdej aplikacji. W związku z ich powszechnością, istnieje też szereg rozwiązań lub sposobów na to, aby możliwie zredukować ich następstwa. Na przestrzeni lekcji tego kursu zobaczysz wiele przykładów, które pomogą Ci w codziennej pracy a niekiedy nawet, pozwolą uniknąć błędów, których konsekwencje nie zawsze występują natychmiast.
Kurs powstał z myślą o osobach, które chcą rozwijać się w roli full-stack web developera / developerki, przeprowadzając przez najważniejsze zagadnienia z obszaru wymiany, transformacji oraz przechowywania informacji w aplikacji oraz pomiędzy aplikacjami. Jeżeli potrzebujesz zobaczyć szeroką perspektywę tego, w jaki sposób dane przepływają pomiędzy różnymi częściami aplikacji, lub ugruntować swoją wiedzę na ten temat, to ten kurs jest miejscem, którego szukasz.
Jeżeli chodzi o bazy danych, to na ich
temat możemy nagrywać wiele kursów i pisać książki.
Jednak z punktu widzenia
tak naprawdę musisz mniej więcej posiadać świadomość na temat możliwości, tak aby
łatwo oceniać to, jaki rodzaj bazy danych przydaje Ci się w konkretnym przypadku.
Jeżeli chodzi o główne podział, to przede wszystkim wyróżniamy bazy SQL oraz ŁEZKI.
Przykładem bazy SQL jest np. Polska Jest.
Przykładem jest chociażby MongoDB, które
jednoznacznie jest kojarzone z dopiskiem, że jest.
Aczkolwiek pomimo tego ja w swoim niemal
każdym projekcie sięgam po relacyjne bazy danych.
No i właśnie, skoro mówimy już o
relacjach, to jest to pierwsza różnica pomiędzy bazami SQL oraz GPL.
Mianowicie relacja to nic innego jak tabela.
Oznacza to, że podobnie jak w Excelu,
wszystkie informacje wewnątrz naszej bazy przechowywane są w formie tabel.
Dodatkowo informacje w tych tabelach mogą
być ze sobą łączone, a to oznacza mniej więcej tyle, że strukturę w tych bazach
musimy praktycznie z góry bardzo precyzyjnie określić i ewentualnie
rozbudowywać ją, ale również mądrze ze względu na to, że jesteśmy tutaj zmuszeni
do porządku i zachowywania odpowiedniej struktury, co w wielu przypadkach bez
wątpienia jest ogromną zaletą, ale w przypadku większych aplikacji może łatwo
prowadzić do sytuacji, w której struktura ta znacznie rośnie i wprowadzenie
jakiejkolwiek modyfikacji jest po prostu bardzo trudne.
Problem ten nie występuje w przypadku
relacyjnych baz danych, gdzie informacje są zorganizowane w zasadniczo inny sposób.
Jeżeli chodzi o to, jak dokładnie, to za chwilę się temu przyjrzymy.
Tymczasem druga różnica, jak łatwo domyślić się po nazwie, dotyczy faktu, że
bazy SQL wykorzystują język SQL do tego, aby z nimi pracować.
W przypadku SQL a już nie wykorzystujemy.
Tutaj również mamy odpowiednie interfejsy
do tego, aby wchodzić w interakcję z danymi, ale co do zasady odbywa się to już
bez SQL a o kolejnej różnicy już zdarzyło mi się wspomnieć.
Mianowicie chodzi o strukturę.
W pierwszym przypadku naprawdę mamy do
czynienia z dużym porządkiem opisywania tego jak nasza baza wygląda
oraz też przewidywania tego, jak może wyglądać również potem.
W przypadku wprowadzania nieco większych
zmian możemy mieć dość duże wyzwanie dotyczące tego, w jaki sposób zorganizować
już istniejące informacje w nowej strukturze.
W przypadku baz taki problem nie występuje ze względu na
to, że dane zorganizowane są w taki sposób, że mogą posiadać praktycznie
dowolną strukturę i możemy ją dowolnie modyfikować.
Potem po prostu jesteśmy w stanie pobierać
te dane w zależności od posiadanych właściwości.
A już nie do końca w oparciu o ścisłą
strukturę, którą określamy na samym początku.
I teraz również o tym wspomniałem, że bazy
SQL oparte są o tabele, a w przypadku nowe występują tutaj dokumenty, pary kluczy i
wartości, grafy czy też rodzaje baz opartych o klucze i wiele kolumn.
Zatem to już jasno sugeruje, że mamy tutaj do czynienia z wieloma rodzajami baz
danych, które zasadniczo wpadają w jedną albo w drugą kategorię.
Oczywiście w przypadku SQL również mówimy o kilku silnikach baz danych.
Natomiast dobra wiadomość jest taka, że
tak naprawdę w większości przypadków przyjdzie Ci decydować pomiędzy bazą np.
SGSP a np.
MongoDB lub ewentualnie Fire Base.
Kolejnym wątkiem, na który trzeba zwracać
uwagę w przypadku wyboru baz danych jest kwestia skalowalności.
Mnie osobiście na przestrzeni ostatnich 10
czy 15 lat nie dotknął taki problem, aczkolwiek chociażby w przypadku serwisu
web faktycznie przenosiliśmy bazę z SQL owej na wesele.
Zatem można tak w uproszczeniu powiedzieć, że bazy skalują się po prostu lepiej,
ponieważ skalowanie odbywa się tutaj horyzontalnie, np.
poprzez dodanie serwerów.
W przypadku SQL bardziej dostępne
skalowanie ma specyfikę wertykalne, czyli np.
zwiększania mocy serwera.
No i tak mniej więcej rysują się ogólne różnice pomiędzy bazami oraz ceną.
Jeżeli chodzi o krzywą nauki, to według
wielu osób łatwiejsze do opanowania są bazy i z tego powodu sięganie np.
po MongoDB feedback jest bardzo
uzasadnione nawet w przypadku początkujących osób.
Z kolei tak jak wspomniałem w moim
przypadku w większości projektów sięgam po bazy SQL owe ze względu na to, że rozwijam
aplikację, w przypadku której wszystkie problemy, które dotyczą tych baz raczej
nie występują lub też są dość nie zauważalne, a jednocześnie korzyści
wynikające ze składowych baz również nie stanowią aż takiej przewagi.
Z tego powodu niemal zawsze wybieram bądź ewentualnie MySQL do moich projektów,
a po MongoDB sięgam tylko wtedy, gdy mam ku temu konkretny powód.
No i teraz jeszcze szybko przejdźmy przez
MongoDB, w przypadku którego mówimy o technologii, która tak jak wspomniałeś
świetnie sprawdza się w przypadku aplikacji o dużej skali, w przypadku
których mamy do czynienia z bardzo dużymi ilościami danych.
Jednocześnie ten brak struktury początkowo może wydawać się atrakcyjny i.
Dla dewelopera w praktyce też może wiązać
się z tym, że trudno będzie zapanować nad tymi wszystkimi dokumentami i kolekcjami.
W przypadku DSA sytuacja wygląda
zasadniczo inaczej ze względu na to, że tutaj musimy opanować to, w jaki sposób
projektować struktury, które będą nam służyć przez długi czas.
Jednocześnie, tak jak powiedziałem,
wprowadzanie ewentualnych zmian w tych strukturach może być momentami albo
wymagające, albo wręcz czasami niemożliwe, czytaj bardziej nieopłacalne.
Z tego powodu ta mniejsza elastyczność może w wielu przypadkach zadziałać na
niekorzyść projektów sięgających po taki rodzaj baz danych.
Następny w kolejce jest feedback, w przypadku których również mówimy o nowej
składowej bazie danych albo fire das albo first.
Jednak w przeciwieństwie do MongoDB nie
mówimy tutaj raczej o technologii, tylko bardziej o usłudze.
Mianowicie tutaj możemy utworzyć nowy
projekt, w ramach którego mamy dostępny szereg usług, z których możemy korzystać.
Coś takiego świetnie sprawdza się
chociażby w przypadku aplikacji mobilnych, bądź też nawet w przypadku bardzo małych
projektów, które realizujemy dla siebie i jednocześnie możemy tam cenić tą wysoką
elastyczność, którą daje platforma Fire Base.
Następnie kolejną kategorią baz danych są
silniki wyszukiwania, takie jak chociażby Elastic, który jest jednym z najlepszych
narzędzi jeżeli chodzi o zbudowanie bardzo zaawansowanych systemów wyszukiwania np.
w e-commerce.
No i ostatnią z takich bardzo popularnych baz danych, o której również
prawdopodobnie było dane usłyszeć, jest RDS.
Jest to baza danych wykorzystywana do
szybkiego dostępu do informacji, ponieważ w przeciwieństwie do większości wyżej
wymienionych, list nie zapisuje danych na dysku, tylko w podręcznej pamięci.
W rezultacie efekt końcowy jest taki, że
jest niesamowicie szybki, a z drugiej strony posiada szereg ograniczeń, które
sprawiają, że możemy go wykorzystywać w naszej aplikacji.
Przede wszystkim po to, aby ułatwić
użytkownikom dostęp do informacji, po które często potrzebują sięgać, a
jednocześnie nie mówimy tutaj o jakichś szczególnie zaawansowanych strukturach.
Zatem jeżeli miałbym Ci skrócić temat baz
danych, to przede wszystkim warto nauczyć się SQL a po to, aby mieć możliwość
korzystania z SQL owych baz danych, takich jak chociażby Poznański.
Moim zdaniem jest to niezbędna umiejętność
ze względu na to, że z całą pewnością przyjdzie Ci pracować z takimi bazami.
Z drugiej jednak strony w momencie, gdy
potrzebujesz wysokiej wydajności dużej elastyczności, to np.
MongoDB bądź Base bez wątpienia jest tutaj dobrym wyborem.
Wszystkie pozostałe bazy, takie jak chociażby Rebis czy Elastic
charakteryzują się już nieco bardziej specyficznym wykorzystaniem i szczerze
mówiąc dobrym pomysłem jest po prostu poczytanie sobie na ich temat i
dowiedzenie się, w jakich przypadkach warto po nie sięgnąć.
I dopiero w momencie, gdy faktycznie spotkasz problem, który dobrze adresuje,
po prostu nabędziesz umiejętności ich obsługi.
Tymczasem Twoja uwaga powinna się skupić przede wszystkim na MongoDB oraz polsku.
I to właśnie będzie nasz główny temat zainteresowania.
Zatem myślę, że w tym momencie mogę Cię już zaprosić do kolejnej lekcji.