As dori sa creez o platforma de socializare unde utilizatorii pot posta, comenta, da like-uri si asa mai departe. Ce limbaj de programare imi recomandati? Avand in vedere ca de abia sunt iesit de pe bancile liceului. Ce parere aveti de NodeJS? Dar de PHP? Personal ma gandeam sa pornesc cu React JS pentru front-end, iar pentru back-end sa folosesc NodeJS, dar totusi as vrea sa aud si parerea cuiva mai avansat! As vrea pareri pro si contra daca se poate!
Ai experiență cu vreunul dintre cele două și vrei să faci ceva repede? Mergi cu ce știi.
Vrei să înveți ceva nou cu conștientizarea faptului că o să dureze mai mult? Învață chestia nouă.
Dacă nu știi nici, nici, vezi exemple de la fiecare, vezi care îți pare mai ușor de înțeles și poate mergi pe ăla. Sau dai cu banul.
Dacă nu știi nici, nici, de ce te-ai oprit la astea două și de ce nu alt ecosistem?
IMO nu te uita la eventuale dezavantaje de performanță, asta e o optimizare prematură. Șansele mari sunt că nu ai să te lovești de probleme de astea, de exemplu, că ți-ar merge platforma prea greu cu mulți oameni conectați concomitent. Și dacă da, ai să rezolvi atunci cumva.
Până atunci, tu vrei să lansezi platforma repede sau să înveți un sistem nou în timp ce faci ceva de la 0, deci oricum ai să ieși câștigat.
Well, in astfel de proiecte nu e o buna practica sa pleci de la ce sti ci de la necesitatile tehnice ale aplicatiei iar primele la care ma gandesc ar fi numarul mare de utilizatori concurenti si nevoia de scalabilitate. Daca pornesti pe idea ca faci aplicatia cu ceva si apoi o optimizezi la nevoie vei esua pentru ca la un moment dat unele lucruri nu le vei mai putea optimiza (de luat ca exemplu toate platformele celebre de care auzim pe la televizoare ca s-au blocat cand au fost accesate simultan de multi utilizatori ).
Eu in locul tau as incepe cu arhitectura care probabil va trebui sa fie una distribuita, scalabila. Abia dupa ce ai o arhitectura buna care sta in picioare te gandesti la ce tehnologii si limbaje vei folosi (aici poti merge chiar pe o abordare agnostica ).
Daca e un proiect mic de learning uita ce am zis mai sus (desi ar prinde bine in dezvoltari ulterioare)
Tip: pentru backend si nu numai, arunca o privire peste limbajul Go .
Nu vei concura cu Facebook sau alti giganti, probabil nici cu miile de alte platforme dezvoltate in scop educational de altii.
Scopul va fi deci sa inveti sa faci o aplicatie cap-coada, ce poate avea utilizatori reali. Prin urmare, in locul tau as:
Pune aplicatia opensource pe github si as invata cu ocazia asta atat version control (evolutia codului in timp) si as profita la maxim de parerile gratuite oferite de cei mai experimentati.
Scrie niste idei de arhitectura a aplicatiei si as cere pareri inainte sa scriu cod cu saptamanile.
Alege C# sau Java ca limbaje pentru backend. Mai curate/sanatoase pentru incepatori.
Typescript pentru frontend
O baza de date relationala pentru inceput. N-o fi ideala pentru orice dar va trece mult timp pana ii vei simti lipsurile. Postgresql are un manual foarte bine scris si te invata mai multe lucruri & ofera mai multe decat Mysql la acelasi pret PostgreSQL: Documentation: 16: PostgreSQL 16.1 Documentation
Revitalizez un pic conversatia ca m-am lovit si eu recent de intrebarea “ce naiba e cu toata lumea de vrea nodejs pe server?” Din cate am citit e foarte rapid dar nu foloseste decat un singur “CPU core”. Fiind JS se potriveste bine cu bazele de date gen mongoDB care folosesc JSON pentru manipularea datelor. In consecinta cazurile ideale de utilizare sunt aplicatiile in timp real, ex. chat-urile.
Pe de alta parte, oricand e nevoie de o baza de date relationala si continut livrat prin HTTP, solutiile traditionale sunt raspunsul, adica NU NodeJS.
Mie-mi pare ca cei care cer nodejs in proiecte sunt:
constienti ca au nevoie de raspuns instant pentru chatul lor, deci stiu ce fac (cazul ideal)
nu au habar de solutia potrivita, dar e la moda nodejs si cred ca daca e rapid e suficient
au sefi zgarciti care nu vor sa plateasca un programator front-end JS si unul backend in PHP/Python/etc
Ma refeream la timpul de executie de 58 de milisecunde din care vreo 47 e timpul de trimis/primit pachetele de la masina unde e host-at.
Adica vreo 11 milisecunde ii ia sa valideze utilizatorul, sa ia datele din baza de date, sa le proceseze, sa incarce template-ul HTML, sa-l parseze si sa returneze toata pagina.
Foloseste un singur core, dar n-ai nevoie de mai mult. Pentru microservicii e decent din cauza faptului ca porneste aproape instant si manipulezi JSON la el acasa. Nu iti trebuie serializare, deserializare mai speciala (chiar daca exista librarii). La fiecare request creezi serverul si il inchizi cum returneaza, iti faci un pool (se poate ocupa k8s sau pm2 de asta), cache-ul il tii extern in redis.
Ai librarii foarte bune de validare, programare functionala, sockets, tutoriale bune, ORM-uri interesante.
Implementarea la GraphQL e probabil cea mai buna in nodejs.
Simpatic, dar nu asa testeze performanta unei aplicatii web. Deloc.
ping trimite cativa bytes de test care trec prin toate routerele de pe drum ajung la serverul cu IP-ul respectiv si raspunde nivelul de networking de pe server. Adica nu ajunge nici la server web, apoi la cod PHP.