MEAN vs. LAMP per il tuo prossimo progetto di programmazione

Il passaggio dalla curiosità all'avanguardia al cavallo di battaglia pratico non è quello che molte tecnologie fanno. I precoci nuovi arrivati ​​di ieri spesso non sono all'altezza delle promesse della versione 0.1. Non così per le tecnologie che compongono lo stack MEAN fortemente acronimo.

Solo pochi anni fa MongoDB, Express.js, AngularJS e Node.js stavano sollevando le sopracciglia da soli. Ora sono cresciuti e si sono uniti, e insieme stanno facendo un lavoro serio, catturando non pochi sviluppatori dal vasto campo LAMP. Ma come si colloca esattamente questo nuovo MEAN contro LAMP? Quando è meglio scegliere il LAMP maturo e ben collaudato rispetto a questa raccolta di tecnologie incentrate su JavaScript?

La risposta è quando la semplicità e la struttura comune ti semplificano la vita. MongoDB offre un livello più flessibile e accomodante per l'archiviazione dei dati. Node.js fornisce un collegamento migliore per l'esecuzione del tuo server, mentre Express aiuta a standardizzare il modo in cui costruisci i tuoi siti web. Sul client, Angular fornisce un modo pulito per aggiungere funzioni interattive e componenti ricchi basati su AJAX. Mettili tutti insieme e creano un meccanismo pulito e coerente per spostare i dati dall'utente alla disk farm e viceversa.

La vera spiegazione, tuttavia, è più profonda. Qui offriamo nove motivi per dare a MEAN una possibilità con il tuo prossimo progetto. Non tutti hanno il tempo o il budget per buttare via e ricodificare il vecchio nel framework più recente e di tendenza, né si dovrebbe buttare via la solida affidabilità di strumenti testati in battaglia come Apache, MySQL o PHP. Ma per i progetti green field che potrebbero trarre vantaggio da flessibilità, semplicità e prestazioni, scegliere MEAN può rendere la tua vita migliore di quanto pensi.

MongoDB è progettato per il cloud

Se i piani della tua app web includono il raggiungimento della promessa di centesimi per CPU del cloud, lo stack MEAN offre un interessante livello di database in MongoDB. Questo database moderno è dotato di partizionamento orizzontale automatico e supporto completo del cluster, subito fuori dalla scatola. Collega MongoDB e si diffonde nel tuo cluster di server per offrire supporto per il failover e replica automatica. Data la facilità con cui le app possono essere sviluppate, testate e ospitate nel cloud, ci sono poche ragioni per non considerare MongoDB per il tuo prossimo progetto.

La struttura di MySQL è limitata 

Chiunque abbia sviluppato o mantenuto un'app basata su LAMP per un certo periodo di tempo sa che la forza di MySQL come database relazionale può sentirsi un po 'imprigionata a volte. Come tutti i database relazionali, MySQL ti obbliga a inserire i tuoi dati nelle tabelle. Questo non è un problema se ogni singola voce rientra esattamente nello stesso formato, ma quante volte il mondo è così generoso? Cosa succede se due persone condividono lo stesso indirizzo ma non lo stesso account? E se volessi avere tre righe per l'indirizzo invece di due? Chi non ha provato a riparare un database relazionale inserendo troppi dati in una singola colonna? Oppure finisci per aggiungere un'altra colonna e la tabella cresce senza limiti.

MongoDB, d'altra parte, offre una struttura del documento che è molto più flessibile. Vuoi aggiungere un nuovo bit di informazioni personali ai tuoi profili utente? Aggiungi semplicemente il campo al modulo, arrotolalo con il resto dei dati in un documento JSON e inseriscilo nella tua raccolta MongoDB. Questo è ottimo per progetti in continuo mutamento e per gestire dati che alla fine potrebbero rivelarsi difficili da vincolare in forma tabellare.

Lo spazio su disco è economico

Tra le grandi rivelazioni dei database relazionali c'era il comando JOIN. Con JOIN, possiamo risparmiare spazio su disco rimuovendo campi ripetuti come città, stato e codice postale. Memorizzando questi dati a cui si accede frequentemente e ripetuti in tabelle separate che possono essere incluse nei risultati futuri tramite un JOIN, manteniamo in ordine il nostro database e i nostri dischi snelli.

Ma i JOIN possono essere complicati per alcuni e duri sulla RAM, e sebbene sia ancora una buona idea isolare e accedere ai dati in tabelle separate tramite JOIN, non c'è più bisogno di risparmiare spazio su disco ora che le unità disco sono misurate in più terabyte. Lo spazio è così economico che alcuni progettisti di database finiscono per denormalizzare i propri dati perché i JOIN sono troppo lenti. Una volta fatto ciò, non avrai più bisogno di un database relazionale. Perché non utilizzare invece MongoDB?

Node.js semplifica il livello del server

Navigare tra i vari livelli dello stack LAMP può essere una danza difficile di molti cappelli, che ti fa rimescolare i vari file di configurazione con sintassi diversa. MEAN semplifica questo attraverso l'uso di Node.js.

Vuoi cambiare il modo in cui la tua app indirizza le richieste? Aggiungi un po 'di JavaScript e lascia che Node.js faccia il resto. Vuoi cambiare la logica utilizzata per rispondere alle domande? Usa JavaScript anche lì. Se vuoi riscrivere URL o costruire una strana mappatura, è anche in JavaScript. La dipendenza dello stack MEAN da Node.js mette questo tipo di condutture tutto in un posto, tutto in una lingua, tutto in un mucchio di logica. Non è necessario rileggere le pagine man per PHP, Apache e qualsiasi altra cosa si aggiunga allo stack. Mentre la generazione LAMP ha file di configurazione diversi per tutto, Node.js evita del tutto questo problema. Avere tutto in un livello significa meno confusione e meno possibilità di strani bug creati da strane interazioni tra più livelli.

MEAN rende il codice isomorfo

La semplicità non si ferma all'utilizzo di JavaScript sul server. Scegliendo MEAN, puoi goderti lo stesso JavaScript anche sul client, lasciandoti alle spalle la schizofrenia client / server dello stack LAMP. Se scrivi codice per Node e decidi che è meglio posizionato in Angular, puoi spostarlo facilmente ed è quasi certo che funzioni allo stesso modo. Questa flessibilità semplifica notevolmente la programmazione di app basate su MEAN. Inoltre, se stai organizzando un progetto, non è necessario cercare un esperto PHP e un esperto JavaScript, o uno specialista front-end e back-end. Invece, è tutto JavaScript nello stack.

JSON ovunque

Angular e MongoDB parlano entrambi JSON, così come Node.js ed Express. I dati scorrono ordinatamente tra tutti i livelli senza essere riscritti o riformattati. Il formato nativo di MySQL per rispondere alle domande è, beh, tutto suo. Sì, PHP ha già il codice per importare i dati MySQL e semplificarne l'elaborazione in PHP, ma ciò non aiuta il livello client. Questo potrebbe essere un po 'minore per i veterani LAMP esperti perché ci sono così tante librerie ben testate che convertono facilmente i dati, ma sembra tutto un po' inefficiente e confuso. MEAN utilizza lo stesso formato JSON per i dati ovunque, il che lo rende più semplice e consente di risparmiare tempo nella riformattazione mentre passa attraverso ogni livello. Inoltre, l'ubiquità di JSON attraverso lo stack MEAN rende molto più semplice lavorare con API esterne: OTTIENI, manipola, presenta, POST e archivia tutto con un unico formato.

Node.js è super veloce

Apache era fantastico, ma oggigiorno Node.js è spesso più veloce. Una serie di benchmark mostrano che Node.js offre prestazioni migliori, mentre fa molto di più. Forse è l'età del codice. Forse l'architettura basata sugli eventi di Node.js è più veloce. Non importa. Oggigiorno, specialmente tra gli utenti impazienti di dispositivi mobili, è importante ridurre anche di millisecondi le prestazioni della tua app e Node.js può farlo, offrendo al contempo un meccanismo completo di Turing per riprogrammarla.

La profondità è importante

Gli amanti di PHP amano aggrapparsi alle fantastiche librerie di codice create per piattaforme dominanti come WordPress o Drupal. Hanno buone ragioni per essere orgogliosi, ma i loro vantaggi stanno svanendo man mano che Node.js raggiunge.

Il gestore di pacchetti Node.js, NPM, semplifica ulteriormente la condivisione del codice e i repository pubblici destinati a Node.js stanno crescendo rapidamente. Mentre la folla di PHP potrebbe guidare in questo momento, il futuro potrebbe favorire Node.js. Inoltre, gli operatori storici spesso si dimostrano fragili di fronte alle mutevoli tendenze. Ogni tentativo di modernizzare una piattaforma radicata come Drupal con una nuova versione significa che molti più sviluppatori potrebbero lasciare che i loro occhi vagano verso le piattaforme più nuove e più agili costruite attorno a Node.js.

Angular è fresco

Non è esattamente giusto confrontare la "A" in "MEAN" con qualsiasi cosa nello stack LAMP perché LAMP non include un analogo. Se vuoi fare qualcosa sul lato client, sei da solo. Certo, ci sono molti buoni framework basati su PHP che funzionano con MySQL, ma ognuno è un po 'diverso e si muove nella propria direzione. WordPress, Joomla e Drupal, ad esempio, offrono strategie diverse ed è difficile passare da una all'altra, per non parlare del codice di trasferimento dall'una all'altra. L'unzione di un framework client aggiunge coerenza e stabilità.

Aiuta anche il fatto che Angular sia stato creato da persone con 20 anni di esperienza nella creazione di app web. Sapevano abbastanza bene da lasciare il lavoro di progettazione a HTML e CSS. Hanno anche capito come aggiungere un po 'di JavaScript per scansionare l'HTML. I progettisti di Angular hanno esaminato ciò che gli umani fanno bene, quindi hanno adattato JavaScript per supportare gli umani. Il sistema di modelli e gli strati logici sono notevolmente più puliti di quanto visto prima, in parte perché il team ha individuato modi più semplici per sfruttare la potenza locale di JavaScript per indovinare cosa stai facendo.

Mescolare e abbinare

Ovviamente, se sei davvero esigente, non c'è motivo per cui non puoi mescolare un po '. Molti sviluppatori usano MongoDB con Apache e PHP e altri preferiscono usare MySQL con Node.js. Angular funziona abbastanza bene con qualsiasi server, anche uno che esegue PHP per fornire dati da MySQL. Non devi essere schiavo degli acronimi.