Εισαγωγή
Η τεχνολογία και το διαδίκτυο έχουν γίνει κεντρικές παρουσίες στην καθημερινή, ακαδημαϊκή και επαγγελματική μας ζωή. Γι' αυτό και ο τεράστιος αριθμός ιστότοπων και εφαρμογών που συνυπάρχουν δεν αποτελεί έκπληξη. Αν είστε επιχείρηση, θα θέλατε να έχετε μια σχετική διαδικτυακή πλατφόρμα. Μια εφαρμογή σάς επιτρέπει να προωθείτε και να παρέχετε τις υπηρεσίες σας στους πελάτες-στόχους σας με ευκολία.
Ανεξάρτητα από τον λόγο για τον οποίο δημιουργείτε μια διαδικτυακή εφαρμογή, πρέπει να καθορίσετε πώς θα τη δημιουργήσετε. Υπάρχουν πολλές επιλογές στη διάθεσή σας όταν πρόκειται να επιλέξετε την καλύτερη εγκατάσταση διακομιστή. Η αρχιτεκτονική διακομιστή που θα επιλέξετε θα καθορίσει τον τρόπο με τον οποίο εκτελείτε και διαχειρίζεστε τα πάντα στο περιβάλλον σας. Γι' αυτό η απόφαση πρέπει να ληφθεί μετά από προσεκτική σκέψη.
Πώς να επιλέξετε τη σωστή εγκατάσταση διακομιστή
Πώς αποφασίζετε λοιπόν ποια αρχιτεκτονική είναι η «σωστή» για την εφαρμογή σας; Για να το κάνετε αυτό, πρέπει πρώτα να σκεφτείτε ποιες είναι οι απαιτήσεις για τη διαδικτυακή σας εφαρμογή. Πρέπει να υπάρχουν ορισμένα χαρακτηριστικά που πρέπει να ενσωματώσετε ώστε να λειτουργεί αποτελεσματικά για τη συγκεκριμένη περίπτωση χρήσης σας. Για παράδειγμα, ίσως επιδιώκετε μια εφαρμογή που να είναι εύκολο να επεκταθεί. Ή, ίσως χρειάζεστε η εφαρμογή σας να λειτουργεί ομαλά τόσο σε προγράμματα περιήγησης όσο και σε κινητές συσκευές. Ταυτόχρονα, ο προϋπολογισμός σας μπορεί να είναι επίσης το κύριο μέλημά σας.
Ανεξάρτητα από το ποιες είναι οι απαιτήσεις σας, θα πρέπει να γνωρίζετε ότι μπορείτε να δημιουργήσετε μια προσαρμοσμένη λύση για την εφαρμογή σας. Σε αυτόν τον οδηγό, θα εξερευνήσουμε τους διάφορους τύπους διακομιστών που χρησιμοποιούν συνήθως πολλοί άνθρωποι για τις διαδικτυακές τους εφαρμογές. Θα μιλήσουμε για τις διάφορες περιπτώσεις χρήσης και πότε είναι καλύτερο να χρησιμοποιείται μια συγκεκριμένη εγκατάσταση. Για να σας βοηθήσουμε να αποφασίσετε αν είναι κατάλληλη για εσάς, θα σας παρουσιάσουμε επίσης ορισμένα πλεονεκτήματα και μειονεκτήματα κάθε αρχιτεκτονικής διακομιστή.
1. Όλα σε έναν διακομιστή
Όπως υποδηλώνει το όνομα, φορτώνετε ολόκληρο το περιβάλλον σε έναν, μοναδικό διακομιστή. Το περιβάλλον θα περιλαμβάνει τον διακομιστή ιστού σας, τον διακομιστή εφαρμογών σας, καθώς και τον διακομιστή βάσης δεδομένων. Για παράδειγμα, λειτουργεί στη διαμόρφωση στοίβας Linux, Apache, MySQL, και PHP (LAMP). Μπορείτε να ακολουθήσετε τους οδηγούς μας σχετικά με το πώς να εγκαταστήσετε τη στοίβα LAMP σε έναν διακομιστή Ubuntu και πώς να εγκαταστήσετε τη στοίβα LAMP στο CentOS.

Πότε να το χρησιμοποιήσετε:
Αυτός ο τύπος διάταξης λειτουργεί καλύτερα εάν δεν έχετε πολύ χρόνο. Είναι απλός και γρήγορος στην εγκατάσταση. Γι' αυτό λειτουργεί για απλές διαδικτυακές εφαρμογές.
Πλεονεκτήματα:
- Απλό και εύκολο στην κατανόηση και την υλοποίηση.
- Απαιτεί λίγο χρόνο για να εγκατασταθεί στο σύνολό του.
Μειονεκτήματα:
- Δεν επιτρέπει οριζόντια επεκτασιμότητα.
- Προσφέρει πολύ λίγα όσον αφορά την απομόνωση των στοιχείων.
- Η εφαρμογή και η βάση δεδομένων ουσιαστικά ανταγωνίζονται για τους ίδιους πόρους, καθώς βρίσκονται σε έναν μόνο διακομιστή.
- Ως αποτέλεσμα, ενδέχεται να αντιμετωπίσετε χαμηλή απόδοση.
2. Ξεχωριστός διακομιστής βάσης δεδομένων
Το κύριο πρόβλημα με τη χρήση ενός μόνο διακομιστή είναι ο ανταγωνισμός για περιορισμένους πόρους. Αυτή η εγκατάσταση στοχεύει στην επίλυση αυτού του προβλήματος. Εδώ, το σύστημα διαχείρισης βάσεων δεδομένων, ή DBMS, διατηρείται ξεχωριστά από τον διακομιστή εφαρμογών. Ο διακομιστής βάσης δεδομένων βρίσκεται σε ένα ιδιωτικό δίκτυο και έχει τους δικούς του πόρους. Αυτό έχει ως αποτέλεσμα καλύτερη απόδοση και αυξημένη ασφάλεια.

Πότε να το χρησιμοποιήσετε:
Και πάλι, αν θέλετε να αναπτύξετε μια γρήγορη εγκατάσταση, αυτή είναι αρκετά απλή στη διαμόρφωση. Είναι η ιδανική λύση εάν ανησυχείτε για τον ανταγωνισμό της βάσης δεδομένων και της εφαρμογής για τους ίδιους πόρους.
Πλεονεκτήματα:
- Ξεχωριστοί, αποκλειστικοί πόροι συστήματος για την εφαρμογή και τη βάση δεδομένων αντίστοιχα, συμπεριλαμβανομένων των CPU, μνήμης, I/O κ.λπ.
- Μεγαλύτερες δυνατότητες επεκτασιμότητας είτε στο επίπεδο της εφαρμογής είτε στο επίπεδο της βάσης δεδομένων.
- Μπορείτε να προσθέτετε και να αφαιρείτε πόρους ανάλογα με τις ανάγκες σας.
- Εάν αφαιρέσετε τη βάση δεδομένων από το δημόσιο διαδίκτυο, μπορείτε επίσης να ενισχύσετε την ασφάλειά σας.
Μειονεκτήματα:
- Λίγο πιο περίπλοκο από την εγκατάσταση σε έναν μόνο διακομιστή.
- Η χαμηλή ευρυζωνικότητα ή η υψηλή καθυστέρηση στη σύνδεση δικτύου μεταξύ των δύο διακομιστών μπορεί να προκαλέσει προβλήματα απόδοσης.
3. Αντίστροφος διαμεσολαβητής ή εξισορροπητής φορτίου
Εδώ είναι που οι εξισορροπητές φορτίου έρχονται στο προσκήνιο. Οι load balancers χρησιμοποιούνται συνήθως σε περιβάλλοντα διακομιστών για τη βελτίωση της απόδοσης και της αξιοπιστίας. Το επιτυγχάνουν αυτό «εξισορροπώντας το φορτίο», δηλαδή κατανέμοντας τον φόρτο εργασίας σε μια συστοιχία διακομιστών.

Πότε να το χρησιμοποιήσετε:
Οι load balancers είναι εξαιρετικά χρήσιμοι όταν πρέπει να πραγματοποιήσετε οριζόντια κλιμάκωση. Η οριζόντια κλιμάκωση βασικά σημαίνει την προσθήκη περισσότερων διακομιστών στο περιβάλλον. Μπορείτε επίσης να χρησιμοποιήσετε έναν αντίστροφο μεσολαβητή (reverse proxy) επιπέδου εφαρμογής για να εξυπηρετήσετε πολλές εφαρμογές ταυτόχρονα χρησιμοποιώντας ένα domain και μία θύρα. HAProxy, Nginx, και Varnish είναι παραδείγματα λογισμικού που επιτρέπουν την εξισορρόπηση φορτίου μέσω αντίστροφου μεσολαβητή (reverse proxy load balancing).
Πλεονεκτήματα:
- Σε περίπτωση που ένας διακομιστής στη σειρά αποτύχει, οι άλλοι διακομιστές αναπληρώνουν τη λειτουργία του εξισορροπώντας τον φόρτο εργασίας.
- Σας επιτρέπει να πραγματοποιήσετε οριζόντια κλιμάκωση για να αυξήσετε ή να μειώσετε τη χωρητικότητα του περιβάλλοντος.
- Επίσης, περιορίζει τις συνδέσεις πελατών, προσφέροντας προστασία από επιθέσεις DDOS.
Μειονεκτήματα:
- Σε περίπτωση που οι πόροι του συστήματος δεν είναι επαρκείς, ο load balancer ενδέχεται να περιορίσει την απόδοση της εφαρμογής σας.
- Απαιτείται κατάλληλη παραμετροποίηση για τη διασφάλιση της σωστής απόδοσης.
- Σημαντικά πιο περίπλοκο από τις ρυθμίσεις ενός μονού διακομιστή ή ξεχωριστών διακομιστών.
- Πρέπει να λάβετε υπόψη παράγοντες όπως ο τερματισμός SSL (SSL termination) και εφαρμογές που απαιτούν sticky sessions.
- Το κύριο σημείο ανησυχίας κατά τη χρήση load balancers είναι ότι αποτελούν ένα μοναδικό σημείο αποτυχίας (single point of failure). Αυτό σημαίνει ότι εάν ο load balancer αποτύχει, ολόκληρη η υπηρεσία σας θα τεθεί εκτός λειτουργίας.
4. HTTP Accelerator ή Caching Reverse Proxy
Αυτή είναι μια ρύθμιση που μπορείτε να χρησιμοποιήσετε για να αυξήσετε την ταχύτητα με την οποία παραδίδετε περιεχόμενο σε έναν χρήστη της εφαρμογής σας. Χρησιμοποιεί διάφορες τεχνικές για να μειώσει αυτόν τον χρόνο. Η πιο σημαντική είναι η προσωρινή αποθήκευση (caching) της απόκρισης από τον διακομιστή εφαρμογών. Ο επιταχυντής αποθηκεύει το περιεχόμενο στη μνήμη του όταν ένας χρήστης το ζητήσει για πρώτη φορά. Επομένως, όταν προκύψουν παρόμοια μελλοντικά αιτήματα, σερβίρει το περιεχόμενο γρήγορα χωρίς να αλληλεπιδρά με τον διακομιστή εφαρμογών. Τα Nginx, Varnish και Squid είναι ικανά για επιτάχυνση HTTP.

Πότε να το χρησιμοποιήσετε:
Όπως είναι φυσικό, αυτή η ρύθμιση είναι πιο κατάλληλη για αρχεία και περιεχόμενο που οι χρήστες ζητούν πολύ συχνά. Λειτουργεί επίσης πολύ καλά για δυναμικές εφαρμογές ιστού με πλούσιο περιεχόμενο.
Πλεονεκτήματα:
- Το caching και η συμπίεση αυξάνουν σημαντικά την ταχύτητα της εφαρμογής και της επεξεργασίας των αιτημάτων.
- Η μείωση του φορτίου στην CPU βελτιώνει επίσης την απόδοση του ιστότοπου.
- Μπορείτε επίσης να το χρησιμοποιήσετε ως reverse proxy load balancer.
Μειονεκτήματα:
- Πρέπει να το ρυθμίσετε σωστά για να επιτύχετε τη βέλτιστη απόδοσή του.
- Ενδέχεται να αντιμετωπίσετε χαμηλή απόδοση σε περίπτωση που το ποσοστό επιτυχίας της προσωρινής μνήμης (cache-hit rate) είναι χαμηλό.
5. Αναπαραγωγή Βάσης Δεδομένων Primary-Replica
Μια ρύθμιση αναπαραγωγής βάσης δεδομένων primary-replica είναι συνήθως πολύ χρήσιμη για συστήματα που εκτελούν περισσότερες αναγνώσεις (reads) παρά εγγραφές (writes). Για παράδειγμα, τα συστήματα διαχείρισης περιεχομένου (CMS) μπορούν πραγματικά να επωφεληθούν από μια τέτοια αρχιτεκτονική. Χρειάζεστε έναν κύριο (primary) και έναν ή περισσότερους κόμβους αναπαραγωγής (replicas) για την αναπαραγωγή. Κατανέμει τις αναγνώσεις σε όλους τους κόμβους. Οι ενημερώσεις πηγαίνουν μόνο στον κύριο κόμβο.

Πότε να το χρησιμοποιήσετε:
Όπως αναφέραμε, μια ρύθμιση βάσης δεδομένων που βασίζεται στην αναπαραγωγή βοηθά στη βελτίωση της απόδοσης ανάγνωσης ενός συστήματος. Μπορείτε να τη χρησιμοποιήσετε για εφαρμογές όπως τα CMS.
Πλεονεκτήματα:
- Βελτιώνει την απόδοση ανάγνωσης της βάσης δεδομένων καθώς τη διαμοιράζει στα αντίγραφα (replicas).
- Εάν χρησιμοποιείτε τον κύριο κόμβο μόνο για ενημερώσεις, μπορείτε επίσης να βελτιώσετε την απόδοση εγγραφής.
Μειονεκτήματα:
- Οποιαδήποτε εφαρμογή προσπαθεί να αποκτήσει πρόσβαση στη βάση δεδομένων πρέπει να είναι σε θέση να αποφασίσει σε ποιον κόμβο θα στείλει τις ενημερώσεις και τα αιτήματα ανάγνωσης.
- Σε περίπτωση που ο κύριος κόμβος (primary replica) αποτύχει, οι ενημερώσεις σταματούν. Πρέπει να επιλύσετε το πρόβλημα για να επιτρέψετε τη συνέχιση των ενημερώσεων.
- Δεν υπάρχει μηχανισμός failover για την αντιμετώπιση πιθανής αποτυχίας του κύριου κόμβου.
Χρήση των Ρυθμίσεων Διακομιστή σε Συνδυασμό
Ευτυχώς, είναι επίσης δυνατό να συνδυάσετε διάφορες τεχνικές για να επιτύχετε το επιθυμητό αποτέλεσμα. Αυτό σημαίνει ότι μπορείτε να κάνετε εξισορρόπηση φορτίου (load balance) στους διακομιστές εφαρμογών με τους διακομιστές προσωρινής μνήμης (caching) σε ένα ενιαίο περιβάλλον και να κάνετε αναπαραγωγή (replicate) της βάσης δεδομένων. Αυτό σας επιτρέπει να επωφεληθείτε από τη λειτουργικότητα και των δύο διακομιστών. Ωστόσο, δεν καθιστά τη ρύθμιση καθόλου πιο περίπλοκη ή προβληματική.
Παράδειγμα:
Θα προσπαθήσουμε να κατανοήσουμε ένα τέτοιο περιβάλλον με ένα παράδειγμα:

Σε ένα τέτοιο περιβάλλον, ο εξισορροπητής φορτίου θα στέλνει στατικά αιτήματα στους διακομιστές προσωρινής μνήμης.Στατικό περιεχόμενο περιλαμβάνει στοιχεία όπως CSS, εικόνες και Javascript, μεταξύ άλλων. Αντίθετα, θα κατευθύνει οποιοδήποτε άλλο είδος αιτημάτων περιεχομένου στους διακομιστές εφαρμογών.
Ας υποθέσουμε ότι ένας χρήστης ζητά κάποιο στατικό περιεχόμενο από το περιβάλλον. Δείτε τι θα συνέβαινε:
- Ο εξισορροπητής φορτίου θα καθορίσει πρώτα εάν το περιεχόμενο είναι cache-hit ή cache-miss. Το περιεχόμενο cache-hit υπάρχει στην προσωρινή μνήμη, ενώ το περιεχόμενο cache-miss δεν υπάρχει εκεί. Αυτό το κάνει ελέγχοντας το cache-backend.
- Σε περίπτωση που είναι cache-hit, ο εξισορροπητής φορτίου στέλνει το περιεχόμενο στον χρήστη.
- Σε περίπτωση που είναι cache-miss, ο διακομιστής προσωρινής μνήμης προωθεί το αίτημα στο backend της εφαρμογής.
- Το app-backend θα βρει και θα στείλει το περιεχόμενο από τη βάση δεδομένων.
- Το cache-backend λαμβάνει το περιεχόμενο από τον εξισορροπητή φορτίου. Επίσης, αποθηκεύει προσωρινά αυτό το περιεχόμενο πριν το επιστρέψει στον εξισορροπητή φορτίου.
- Ο τελευταίος στη συνέχεια προωθεί την απόκριση στον χρήστη.
Από την άλλη πλευρά, δείτε τι θα συμβεί εάν ο χρήστης ζητήσει δυναμικό περιεχόμενο:
- Το αίτημα θα φτάσει από τον χρήστη στον εξισορροπητή φορτίου.
- Αυτό το αίτημα πηγαίνει στο app-backend.
- Το app-backend εντοπίζει το περιεχόμενο που ζητήθηκε και το επιστρέφει στον εξισορροπητή φορτίου.
- Ο χρήστης λαμβάνει το περιεχόμενο.
Ένα από τα σημαντικότερα οφέλη ενός τέτοιου συνδυασμένου περιβάλλοντος είναι ότι είναι πιο αξιόπιστο. Όχι μόνο αυτό, αλλά έχει επίσης ανώτερες δυνατότητες απόδοσης. Ωστόσο, εξακολουθούν να υπάρχουν δύο μεμονωμένα σημεία αποτυχίας - ο εξισορροπητής φορτίου και ο κύριος διακομιστής βάσης δεδομένων.
Συμπέρασμα
Μπορείτε να χρησιμοποιήσετε κάθε ρύθμιση διακομιστή ξεχωριστά στο περιβάλλον σας. Από την άλλη πλευρά, θα μπορούσατε επίσης να συνδυάσετε μερικές από αυτές μαζί για να δημιουργήσετε μια εξατομικευμένη λύση. Δεν υπάρχει «σωστή» απάντηση. Όλα εξαρτώνται από τη λειτουργικότητα που θέλετε να αντλήσετε από την αρχιτεκτονική.
Η κατοχή βασικών γνώσεων σχετικά με τον τρόπο λειτουργίας κάθε ρύθμισης διακομιστή θα σας βοηθήσει να πάρετε την απόφαση για τη δική σας εφαρμογή. Το καλύτερο που έχετε να κάνετε είναι να ξεκινήσετε με κάτι μικρό και απλό. Μπορείτε να συνεχίσετε να αυξάνετε την πολυπλοκότητα της ρύθμισής σας καθώς αποκτάτε εμπειρία.
Καλή υπολογιστική!
Σχόλια
Δεν υπάρχουν σχόλια ακόμα. Γράψτε το πρώτο.