Προγραμματισμός

MEAN εναντίον LAMP για το επόμενο πρόγραμμα προγραμματισμού σας

Η μετάβαση από την πρωτοποριακή περιέργεια στο πρακτικό άλογο δεν είναι αυτή που κάνουν πολλές τεχνολογίες. Οι χθεσινοί πρόωροι πρώτοι συχνά αποτυγχάνουν να ανταποκριθούν στην υπόσχεση Έκδοση 0.1. Όχι έτσι για τις τεχνολογίες που συνθέτουν την έντονα ακρωνυμοποιημένη στοίβα MEAN.

Μόλις πριν από λίγα χρόνια, οι MongoDB, Express.js, AngularJS και Node.js ανέβαζαν τα φρύδια μόνα τους. Τώρα έχουν μεγαλώσει και συγκεντρωθεί, και μαζί κάνουν σοβαρή δουλειά, λαθροθηρία σε μικρό αριθμό προγραμματιστών από το τεράστιο στρατόπεδο LAMP. Αλλά πώς ακριβώς συσσωρεύεται αυτό το νέο παιχνίδι MEAN εναντίον του LAMP; Πότε είναι καλύτερο να επιλέξετε το καλά δοκιμασμένο, ώριμο LAMP έναντι αυτής της αρχικής συλλογής τεχνολογιών που βασίζονται σε JavaScript;

Η απάντηση είναι όταν η απλότητα και η κοινή δομή κάνουν τη ζωή σας πιο εύκολη. Το MongoDB προσφέρει ένα πιο ευέλικτο, εξυπηρετικό στρώμα για την αποθήκευση δεδομένων. Το Node.js παρέχει ένα καλύτερο Nexus για τη λειτουργία του διακομιστή σας, ενώ το Express βοηθά στην τυποποίηση του τρόπου δημιουργίας των ιστότοπών σας. Στον πελάτη, το Angular παρέχει έναν καθαρό τρόπο προσθήκης διαδραστικών συναρτήσεων και εμπλουτισμένων στοιχείων AJAX. Συγκεντρώστε τα όλα και δημιουργούν έναν καθαρό, συνεκτικό μηχανισμό για τη μεταφορά δεδομένων από χρήστη σε μονάδα δίσκου και ξανά.

Η πραγματική εξήγηση, ωστόσο, είναι βαθύτερη. Εδώ προσφέρουμε εννέα λόγους για να δώσετε στο MEAN μια ευκαιρία με το επόμενο έργο σας. Δεν έχει ο καθένας τον χρόνο ή τον προϋπολογισμό για να πετάξει και να ξανακωδικοποιήσει το παλιό στο πιο πρόσφατο, πιο μοντέρνο πλαίσιο, ούτε θα πρέπει να πετάξετε τη σταθερή αξιοπιστία των δοκιμασμένων με μάχη εργαλείων όπως το Apache, το MySQL ή το PHP Αλλά για έργα πρασίνου που θα μπορούσαν να επωφεληθούν από την ευελιξία, την απλότητα και την απόδοση, το MEAN μπορεί να κάνει τη ζωή σας καλύτερη από ό, τι νομίζετε.

Το MongoDB έχει δημιουργηθεί για το cloud

Εάν τα σχέδια της εφαρμογής ιστού σας περιλαμβάνουν την ικανοποίηση της υπόσχεσης πένες ανά CPU του cloud, η στοίβα MEAN προσφέρει ένα συναρπαστικό επίπεδο βάσης δεδομένων στο MongoDB. Αυτή η σύγχρονη βάση δεδομένων είναι εξοπλισμένη με αυτόματη θραύση και πλήρη υποστήριξη συμπλέγματος, άμεσα. Συνδέστε το MongoDB και απλώνεται σε όλο το σύμπλεγμα διακομιστών για να προσφέρει υποστήριξη failover και αυτόματη αναπαραγωγή. Δεδομένης της ευκολίας με την οποία μπορούν να αναπτυχθούν, να δοκιμαστούν και να φιλοξενηθούν εφαρμογές στο cloud, δεν υπάρχει λόγος να μην λάβετε υπόψη το MongoDB για το επόμενο έργο σας.

Η δομή της MySQL είναι περιορισμένη

Όποιος έχει αναπτύξει ή συντηρήσει μια εφαρμογή που βασίζεται σε LAMP για οποιοδήποτε χρονικό διάστημα γνωρίζει ότι η ισχύς της MySQL ως σχεσιακή βάση δεδομένων μπορεί να αισθάνεται κάπως φυλακισμένη κατά καιρούς. Όπως όλες οι σχεσιακές βάσεις δεδομένων, η MySQL σας αναγκάζει να προωθήσετε τα δεδομένα σας σε πίνακες. Αυτό δεν είναι πρόβλημα αν κάθε είσοδος ταιριάζει ακριβώς στην ίδια μορφή, αλλά πόσο συχνά είναι ο κόσμος τόσο γενναιόδωρος; Τι γίνεται αν δύο άτομα μοιράζονται την ίδια διεύθυνση αλλά όχι τον ίδιο λογαριασμό; Τι γίνεται αν θέλετε να έχετε τρεις γραμμές στη διεύθυνση αντί για δύο; Ποιος δεν έχει προσπαθήσει να επιδιορθώσει μια σχεσιακή βάση δεδομένων με την υπερβολική λήψη δεδομένων σε μία στήλη; Διαφορετικά, καταλήγετε να προσθέσετε μια ακόμη στήλη και ο πίνακας αυξάνεται χωρίς περιορισμούς.

Το MongoDB, από την άλλη πλευρά, προσφέρει μια δομή εγγράφων που είναι πολύ πιο ευέλικτη. Θέλετε να προσθέσετε ένα νέο κομμάτι προσωπικών πληροφοριών στα προφίλ χρηστών σας; Απλώς προσθέστε το πεδίο στη φόρμα σας, τυλίξτε το με τα υπόλοιπα δεδομένα σε ένα έγγραφο JSON και μετακινήστε το στη συλλογή σας MongoDB. Αυτό είναι ιδανικό για έργα σε ροή και για την αντιμετώπιση δεδομένων που μπορεί τελικά να αποδειχθούν δύσκολο να περιοριστούν σε μορφή πίνακα.

Ο χώρος στο δίσκο είναι φθηνός

Μεταξύ των μεγάλων αποκαλύψεων σχεσιακών βάσεων δεδομένων ήταν η εντολή JOIN. Με το JOIN, θα μπορούσαμε να εξοικονομήσουμε χώρο στο δίσκο καταργώντας επαναλαμβανόμενα πεδία όπως πόλη, πολιτεία και ταχυδρομικό κώδικα. Αποθηκεύοντας αυτά τα συχνά προσπελάσιμα και επαναλαμβανόμενα δεδομένα σε ξεχωριστούς πίνακες που μπορούν να συμπεριληφθούν σε μελλοντικά αποτελέσματα μέσω ενός JOIN, διατηρούμε τη βάση δεδομένων μας καθαρή και τους δίσκους μας λεπτούς.

Ωστόσο, οι συνδυασμοί μπορεί να είναι δύσκολοι για μερικούς και σκληρούς στη μνήμη RAM, και παρόλο που είναι ακόμα καλή ιδέα να απομονώσετε και να αποκτήσετε πρόσβαση σε δεδομένα σε ξεχωριστούς πίνακες μέσω JOIN, δεν χρειάζεται τόσο πολύ να εξοικονομήσετε χώρο στο δίσκο τώρα που οι μονάδες δίσκου μετρώνται σε πολλά terabyte. Ο χώρος είναι τόσο φθηνός που ορισμένοι σχεδιαστές βάσεων δεδομένων καταλήγουν να αποδιαμορφώσουν τα δεδομένα τους, επειδή οι συνδυασμοί είναι πολύ αργοί. Μόλις το κάνετε αυτό, δεν χρειάζεστε σχεσιακή βάση δεδομένων. Γιατί να μην χρησιμοποιήσετε το MongoDB αντ 'αυτού;

Το Node.js απλοποιεί το επίπεδο διακομιστή

Η πλοήγηση στα διάφορα επίπεδα της στοίβας LAMP μπορεί να είναι ένας δύσκολος χορός πολλών καπέλων, κάτι που σας κάνει να ανακατεύετε διάφορα αρχεία ρυθμίσεων με διαφορετική σύνταξη. Το MEAN το απλοποιεί μέσω της χρήσης του Node.js.

Θέλετε να αλλάξετε τον τρόπο με τον οποίο ζητάει η εφαρμογή σας τα δρομολόγια; Πασπαλίστε σε κάποια JavaScript και αφήστε το Node.js να κάνει τα υπόλοιπα. Θέλετε να αλλάξετε τη λογική που χρησιμοποιείται για την απάντηση ερωτημάτων; Χρησιμοποιήστε επίσης JavaScript εκεί. Αν θέλετε να ξαναγράψετε διευθύνσεις URL ή να δημιουργήσετε μια περίεργη αντιστοίχιση, είναι επίσης σε JavaScript. Η εξάρτηση της στοίβας MEAN στο Node.js βάζει αυτό το είδος σωληνώσεων σε ένα μέρος, όλα σε μία γλώσσα, όλα σε ένα σωρό λογικής. Δεν χρειάζεται να ξαναδιαβάσετε τις σελίδες για PHP, Apache και οτιδήποτε άλλο προσθέσετε στη στοίβα. Ενώ η γενιά LAMP έχει διαφορετικά αρχεία ρυθμίσεων για τα πάντα, το Node.js αποφεύγει το ζήτημα εντελώς. Έχοντας τα πάντα σε ένα επίπεδο σημαίνει λιγότερη σύγχυση και λιγότερες πιθανότητες παράξενων σφαλμάτων που δημιουργούνται από παράξενες αλληλεπιδράσεις μεταξύ πολλαπλών επιπέδων.

Το MEAN κάνει τον κώδικα ισομορφικό

Η απλότητα δεν σταματά με τη χρήση JavaScript στον διακομιστή. Μεταβαίνοντας στο MEAN, μπορείτε να απολαύσετε την ίδια JavaScript και στον πελάτη, αφήνοντας πίσω τη σχιζοφρένεια πελάτη / διακομιστή στοίβας LAMP. Εάν γράψετε κώδικα για τον κόμβο και αποφασίσετε ότι είναι καλύτερα τοποθετημένος στο Angular, μπορείτε να τον μετακινήσετε με ευκολία και είναι σχεδόν βέβαιο ότι θα εκτελεστεί με τον ίδιο τρόπο. Αυτή η ευελιξία καθιστά τον προγραμματισμό εφαρμογών που βασίζονται σε MEAN σημαντικά πιο εύκολη. Επιπλέον, εάν στελεχώνετε ένα έργο, δεν χρειάζεται να αναζητήσετε έναν ειδικό PHP και έναν εμπειρογνώμονα JavaScript, ή έναν ειδικό front-end και back-end. Αντ 'αυτού, είναι όλο το JavaScript σε όλη τη στοίβα.

JSON παντού

Το Angular και το MongoDB μιλούν και τα δύο JSON, όπως και το Node.js και το Express. Τα δεδομένα ρέουν τακτοποιημένα μεταξύ όλων των επιπέδων χωρίς επανεγγραφή ή αναδιαμόρφωση. Η εγγενής μορφή της MySQL για την απάντηση ερωτημάτων είναι, λοιπόν, η δική της. Ναι, η PHP έχει ήδη τον κωδικό για την εισαγωγή δεδομένων MySQL και διευκολύνει την επεξεργασία σε PHP, αλλά αυτό δεν βοηθά το επίπεδο πελάτη. Αυτό μπορεί να είναι λίγο μικρό για τους έμπειρους βετεράνους LAMP, επειδή υπάρχουν τόσες πολλές καλά δοκιμασμένες βιβλιοθήκες που μετατρέπουν τα δεδομένα εύκολα, αλλά όλα φαίνονται λίγο αναποτελεσματικά και μπερδεμένα. Το MEAN χρησιμοποιεί την ίδια μορφή JSON για δεδομένα παντού, γεγονός που το καθιστά απλούστερο και εξοικονομεί χρόνο αναδιαμόρφωσης καθώς περνά μέσα από κάθε επίπεδο. Επιπλέον, η πανταχού παρούσα JSON μέσω της στοίβας MEAN καθιστά την εργασία με εξωτερικά API πολύ πιο εύκολη: GET, χειρισμός, παρουσίαση, POST και αποθήκευση όλων με μία μορφή.

Το Node.js είναι εξαιρετικά γρήγορο

Το Apache ήταν υπέροχο, αλλά αυτές τις μέρες, το Node.js είναι πιο γρήγορο. Ορισμένα σημεία αναφοράς δείχνουν ότι το Node.js προσφέρει καλύτερη απόδοση, ενώ κάνει πολύ περισσότερα. Ίσως είναι η εποχή του κώδικα. Ίσως η αρχιτεκτονική που βασίζεται σε εκδηλώσεις Node.js είναι πιο γρήγορη. Δεν πειράζει. Αυτές τις μέρες, ειδικά μεταξύ ανυπόμονων χρηστών κινητών συσκευών, το ξύρισμα ακόμη και χιλιοστά του δευτερολέπτου από την απόδοση της εφαρμογής σας είναι σημαντικό και το Node.js μπορεί να το κάνει αυτό, ενώ προσφέρει έναν ολοκληρωμένο μηχανισμό Turing για τον επαναπρογραμματισμό του.

Το βάθος έχει σημασία

Οι λάτρεις της PHP θέλουν να προσκολληθούν στις μεγάλες βιβλιοθήκες κώδικα που δημιουργήθηκαν για κυρίαρχες πλατφόρμες όπως το WordPress ή το Drupal. Έχουν καλούς λόγους να είναι περήφανοι, αλλά τα πλεονεκτήματά τους εξαφανίζονται καθώς το Node.js πλησιάζει.

Ο διαχειριστής πακέτων Node.js, NPM, διευκολύνει την κοινή χρήση κώδικα και τα δημόσια αποθετήρια που στοχεύουν το Node.js αναπτύσσονται γρήγορα. Ενώ το πλήθος της PHP μπορεί να ηγηθεί αυτή τη στιγμή, το μέλλον μπορεί να ευνοήσει το Node.js. Επιπλέον, οι κατεστημένοι φορείς αποδεικνύονται συχνά εύθραυστοι απέναντι σε μεταβαλλόμενες τάσεις. Κάθε προσπάθεια εκσυγχρονισμού μιας παγιωμένης πλατφόρμας όπως το Drupal με μια νέα έκδοση σημαίνει ότι πολλοί περισσότεροι προγραμματιστές ενδέχεται να αφήνουν τα μάτια τους να περιπλανηθούν προς τις νεότερες, πιο ευέλικτες πλατφόρμες που χτίστηκαν γύρω από το Node.js.

Η γωνιακή είναι φρέσκια

Δεν είναι απολύτως δίκαιο να συγκρίνετε το "A" στο "MEAN" με οτιδήποτε στη στοίβα LAMP, επειδή το LAMP δεν περιλαμβάνει αναλογικό. Αν θέλετε να κάνετε οτιδήποτε από την πλευρά του πελάτη, είστε μόνοι σας. Σίγουρα, υπάρχουν πολλά καλά πλαίσια PHP που λειτουργούν με τη MySQL, αλλά το καθένα είναι λίγο διαφορετικό και κινείται προς τη δική του κατεύθυνση. Το WordPress, το Joomla και το Drupal, για παράδειγμα, προσφέρουν διαφορετικές στρατηγικές και είναι δύσκολο να κάνετε εναλλαγή μεταξύ τους, πόσο μάλλον να μεταφέρετε κώδικα από το ένα στο άλλο. Ο διορισμός ενός πλαισίου πελάτη προσθέτει συνέπεια και σταθερότητα.

Βοηθά επίσης ότι το Angular δημιουργήθηκε από άτομα με 20 χρόνια εμπειρίας στην κατασκευή εφαρμογών ιστού. Ήξεραν αρκετά καλά για να αφήσουν τη δουλειά του σχεδιασμού σε HTML και CSS. Επέλεξαν επίσης πώς να προσθέσουν λίγο JavaScript για τη σάρωση του HTML. Οι σχεδιαστές του Angular εξέτασαν τι κάνουν καλά οι άνθρωποι και έπειτα προσαρμόστηκαν το JavaScript για να υποστηρίξουν τους ανθρώπους. Το σύστημα templating και τα επίπεδα λογικής είναι εντυπωσιακά καθαρότερα από αυτά που έχουμε ξαναδεί, εν μέρει επειδή η ομάδα βρήκε απλούστερους τρόπους για να αξιοποιήσει την τοπική δύναμη της JavaScript για να μαντέψει τι κάνετε.

Ανακατεψε και ταιριαξε

Φυσικά, εάν είστε πραγματικά επιλεκτικοί, δεν υπάρχει κανένας λόγος για τον οποίο δεν μπορείτε να το ανακατέψετε λίγο. Πολλοί προγραμματιστές χρησιμοποιούν το MongoDB με Apache και PHP και άλλοι προτιμούν να χρησιμοποιούν το MySQL με το Node.js. Το Angular λειτουργεί αρκετά καλά με οποιονδήποτε διακομιστή, ακόμη και με έναν PHP για την παράδοση δεδομένων από τη MySQL. Δεν χρειάζεται να είσαι σκλάβος στα ακρωνύμια.