Django - podział projektu oraz DRF

0

Hej,
zaznaczę na początku, że w przypadku webdev jestem raczej początkującym :)
Mam kilka pytań dotyczących projektowania back-end w Django.
W przypadku aplikacji pisanej jako monolit:
Powiedzmy, że chcę zbudować blog + sklep internetowy. Rozumiem, że sklep internetowy oraz blog rozdzielam jako różne app's.
Często spotkałem się, że jako oddzielne app buduje się system logowania - nazwijmy je "accounts". Tu buduję swoje widoki, modele odpowiedzialne za logowanie, rejestrację.
W takim przypadku powinienem stworzyć 3 apps:

  • accounts,
  • blog,
  • shop
  1. Czy taka praktyka jest prawidłowa?

Druga kwestia dotyczy mikroserwisów i DRF.
Oczywiste jest dla mnie, że w przypadku dużych aplikacji lepiej kompletnie oddzielić back-end od front-end zamiast budować aplikacje w czystym Django. Czyste Django ewentualnie jedynie pod PoC.
2. I teraz moje pytanie - jak buduje się tego typu aplikacje? Jak wykorzystuje się DRF? Jak oddziela back- od front-end?

1

sklep internetowy oraz blog rozdzielam jako różne app's. <- tak, możesz. w zasadzie pewnie powstanie ci troszkę więcej appsów. Ja osobiście bym rozdzialił to raczej na dwa oddzielne projekty djangowe - jeden ze sklepem, drugi z blogiem. A w appsach jeszcze mniejsze moduły, np. w sklepie coś jak "users", "orders", "invetory" i tak dalej. Ogólnie jak zrobisz cały sklep jako jedną appkę będącą częścią projektu tylko, to może się okazać, że bardzo ci ona spuchnie i ciężko się będzie odnaleźć w kodzie. Nie bój się dzielić rzeczy na mniejsze klocuszki.

Często spotkałem się, że jako oddzielne app buduje się system logowania - nazwijmy je "accounts". Tu buduję swoje widoki, modele odpowiedzialne za logowanie, rejestrację. tak, autentykacja i autoryzacja to zazwyczaj osobna appka. Przy czym polecam ci, byś sam nie wymyślał tutaj koła na nowo, zwłaszcza jak o security idzie, i skorzystał z gotowców wbudowanych w django. Pisząc samemu od postaw system autoryzacji/autentykacji istnieje 99,9% szansy na to, że coś grubo popsujesz. Więc twoja appka accounts czu też users, jak nazwiesz, bez różnicy, powinna być tylko lekką nakładką na auth z django.

W takim przypadku powinienem stworzyć 3 apps: jak napisałem wyżej - ja bym to bardziej rozbił na dwa projekty złożone z wielu appek. Ilu? Trudno powiedzieć, zależy od requirementsów.

Czy taka praktyka jest prawidłowa? - tutaj moim zdaniem upchniesz za dużo rzeczy odpowiedzialnych za różne funkcjonalności w jedną appke typu shop, spróbuj zaprojektować swój kod tak, by był on w miarę logicznie podzielony na małe paczuszki/fragmenty (appki), które odpowiadają za jakiś konkretny fragment funkcjonalności.

zamiast budować aplikacje w czystym Django mikroserwisik też możesz napisać w czystym django bez użycia django templates. DRF to tylko nakładka, która to ułatiwa. Nic nie stoi na przeszkodzie robienia RESTowych API za pomocą czystego Django.

I teraz moje pytanie - jak buduje się tego typu aplikacje? Jak wykorzystuje się DRF? Jak oddziela back- od front-end? <- zazwyczaj dzieli się je na wiele małych klocuszków. Dlaczego? Zamykasz pewną funkcjonalność, pewien kontekst i logikę biznesową, w jednym jakimś miejscu. To tam jest, jest do ogarnięcia. Jeśli wszystko jest wymieszane razem, czasem trudno to ogarnąć i robi się bałaganik.
Co do pytania - jak się je buduje... Cóż, książkę można by o tym napisać. W zasadzie kilka. Kilkadziesiąt, kilkaset w sumie. Ludzie dalej nie są do końca tego pewni i dalej powstają badania, książki, publikacje, zgłębiająće ten temat.

Jedno jest pewne, obecnie mamy tak wysoki poziom specjalizacji, że fronty są kompletnie oddzielne (często teraz nawet front się dzieli - jest gość od html/css, jest gość od reacta, jest gość o czystego jsa) - zazwyczaj to jakaś aplikacja napisana w react, która korzysta z backendowego restowego api. Oprócz frontu, backendu, zazwyczaj mamy też osoby odpowiedzialne za projekty interfejsu graficznego - tego co widzi użytkownik, tego jak to ma działać - UX ogółem, OPSi, zajmujący się infrastrukturą, admini. Ogółem przy dużych appkach ten podział pracy jest bardzo wyspecjalizowany.

Pod przykrywką api może się czaić wiele serwisów skupionych w jednym gatewayu, albo i nie - front może korzystać jednocześnie z wielu api. Temat rzeka ogółem.

DRF wykorzystuje się do budowy restowych api z użyciem django - tak po prostu. Ułatwia i rzyśpiesza on pracę. Wszystko, co zrobisz w drfie, możesz oczywiście też naklepać sam w gołym django, ale to bez sensu - wymyślanie koła na nowo.

Front od backendu jest oddzielany tak, że to po prostu dwie różne aplikacje, dwa różne repo, dwa rózne codebasy. Zazwyczaj. Oczywiście można wszystko nasrać w jednym repo, da się, ale... ;)

Nie wiem cóż ci mogę więcej napisać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1