CDNs: Τι είναι, πως δουλεύουν και ποιες ειναι οι τεχνικές τους

dimitris | Παρ, 09/06/2013 - 08:28 | 12'

Πως μπορεί ένα website ή ένα web service να είναι πάντα online και διαθέσιμο στους χρήστες; Η απάντηση συχνά περιλαμβάνει τη λέξη CDN. Σε αυτό το άρθρο μαθαίνουμε τι είναι αυτό το "Content Delivery Network" και ποια ειναι η χρησιμότητά του...

Του Κωνσταντίνου Λιβιεράτου

Στην εποχή μας, ειδικά στα business-oriented projects, αυτό που μετράει είναι η ποιότητα των υπηρεσιών, το λεγόμενο Quality of Service (QoS). Μια καινούρια επιχείρηση μάλιστα ενδιαφέρεται άμεσα για την ποιότητα και/ή την ασφάλεια της ιστοσελίδας της, ιδιαίτερα όταν αποτελεί το βασικό «πρόσωπό» της προς το ευρύ κοινό. Σχετικά με την «ποιότητα ιστοσελίδας» που αναφερθήκαμε μόλις τώρα, σημαντικός παράγοντας για αυτό αποτελεί η ταχύτητα εξυπηρέτησης των χρηστών (πελατών) αλλά και η «εγγύηση» ότι η ιστοσελίδα ή η online υπηρεσία που παρέχει η κάθε επιχείρηση θα παραμένει πάντα διαθέσιμη για τον καθέναν, έτσι ώστε να μπορεί οποτεδήποτε να έχει πρόσβαση σε αυτό για το οποίο πληρώνει, ή απλά για την αύξηση της αξιοπιστία της εταιρίας. Ένας συνήθης τρόπος για να επιτευχθεί αυτό είναι η χρήση δικτύων CDN, στα οποία και θα αναφερθούμε σε αυτό το άρθρο.

Ας ξεκινήσουμε από το τί είναι ένα CDN και που μπορούμε να το χρησιμοποιήσουμε, καθώς και ποιες τεχνικές εφαρμόζονται για την υλοποίηση ενός τέτοιου δικτύου. Το CDN, δηλαδή Content Delivery (ή Distribution) Network, είναι ένα κατανεμημένο δίκτυο από servers σε διαφορετικά datacenters ανά τον κόσμο. Ο στόχος του CDN και ο βασικός λόγος ύπαρξής του, είναι η παροχή του περιεχομένου στους τελικούς χρήστες με υψηλές επιδόσεις και διαθεσιμότητα (aka high performance & availability για τους γνώστες). Τα CDNs αναπτύχθηκαν και χρησιμοποιήθηκαν πολύ τα προηγούμενα χρόνια, όταν η επικοινωνία μεταξύ δύο ηπείρων με Internet ήταν πολύ ακριβή.

Με αυτόν τον τρόπο, το περιεχόμενο μίας ιστοσελίδας (στατικά αρχεία και εικόνες, κώδικες html/php/css/javascript κοκ) που χρησιμοποιεί ένα τέτοιο δίκτυο «διαμοιράζεται» στους χρήστες από διαφορετικούς servers, αυτούς του CDN και έτσι δεν περνάει όλη η κίνηση από τον κεντρικό server της ιστοσελίδας. Με αυτό, επιτυγχάνεται το offloading του, που πρακτικά σημαίνει εξοικονόμηση πόρων, άρα και χρημάτων, της ιστοσελίδας.

Από την άλλη πλευρά, με το CDN δεν εξασφαλίζεται μόνο η γρήγορη πρόσβαση σε μια ιστοσελίδα ή ηλεκτρονική υπηρεσία αλλά και κατά κάποιον τρόπο παρέχεται ασφάλεια απέναντι στις διαδικτυακές επιθέσεις. Πιο συγκεκριμένα, ο σύγχρονος «φόβος και τρόμος» των administrators είναι οι επιθέσεις DDoS (Distributed Denial of Service), οι οποίες στοχεύουν στην υπερφόρτωση του διακομιστή με σκοπό την κατάρρευση του, καθώς θα αδυνατεί να ανταποκριθεί ορθά σε πληθώρα αιτημάτων (requests). Όμως, εάν ο διαχειριστής χρησιμοποιεί ένα CDN τότε ο φόρτος εργασιών που θα προκληθεί από την επίθεση θα κατανεμηθεί στους διακομιστές του CDN, κάτι που ουσιαστικά οδηγεί στην «απορρόφηση» των επιθέσεων αυτών. Αυτό βέβαια δεν συνεπάγεται την απόλυτη ασφάλεια του εκτεθειμένου υπολογιστικού συστήματος.

Αρχικά τα CDNs που δημιουργήθηκαν, λειτουργούσαν με την χρήση dedicated servers των εταιριών που παρείχαν ολοκληρωμένα συστήματα CDN κι έτσι διαμοιράζονταν τα δεδομένα στους clients. Αργότερα χρησιμοποιήθηκε πιο πολύ ένα υβριδικό μοντέλο με το οποίο αξιοποιούνταν η P2P τεχνολογία, οπότε τα δεδομένα μεταφέρονταν μέχρι τον τελικό χρήστη μέσω των servers του CDN αλλά και μέσω peer-user-owned υπολογιστές. Επίσης σημαντικό είναι να αναφερθεί ότι για την υλοποίηση κάθε CDN χρησιμοποιούνται ευρέως proxy servers που διευκολύνουν το έργο του.


Σχηματικό παράδειγμα του πως λειτουργεί το CDN μιας πολύ γνωστής εταιρείας του κλάδου, της AKAMAI.

 

Τεχνικές επιτάχυνσης

Κάθε CDN εφαρμόζει τεχνικές για HTTP acceleration, συγκεκριμένα για front-end acceleration. Ο στόχος του είναι να μειώσει με οποιονδήποτε τρόπο τις HTTP Requests. Παρακάτω θα αναφερθούμε στις πιο βασικές.

Αρχικά, με το web cache αποθηκεύεται δημοφιλές περιεχόμενο σε διακομιστές που έχουν μεγαλύτερη ζήτηση για το περιεχόμενο που έχει ζητηθεί. Έτσι μειώνονται οι απαιτήσεις σε bandwidth και ο φόρτος εργασίας του server, με αποτέλεσμα την ταχύτερη ανταπόκριση του. Μια άλλη τεχνική είναι το balancing του φόρτου του server, το οποίο μπορεί να επιτυγχάνεται είτε με hardware είτε με software τεχνικές. Ουσιαστικά με αυτήν την τεχνική μοιράζονται οι διεργασίες απόκρισης του διακομιστή και πρακτικά δημιουργούνται mirrors των websites σε διαφόρους διακομιστές ανά τον κόσμο που ανήκουν στα CDN, έτσι ώστε να εξυπηρετούν ταχύτερα τους χρήστες που βρίσκονται κοντά τους.

Όπως είναι λογικό, οι servers του κάθε CDN στους οποίους αποθηκεύεται μια προσωρινή κατάσταση των ιστοσελίδων ώστε να προβάλλονται στους χρήστες στην περίπτωση που αυτή δεν είναι διαθέσιμη, πρέπει να ανανεώνουν το cache που διαθέτουν για κάθε ιστοσελίδα ανά κάποιο «δυναμικό» χρονικό διάστημα. Με τον ορό «δυναμικό» εννοώ ότι δεν μπορεί για μια ιστοσελίδα με <100 επισκέψεων ανά ημέρα να δημιουργείται cache συχνότερα απ’ ότι μια ιστοσελίδα με χιλιάδες άτομα καθημερινά να την επισκέπτονται. Δηλαδή, πάντα υπάρχει ένας αλγόριθμος ο οποίος είναι υπεύθυνος για τον έλεγχο της επισημότητας και την ανανέωση του υπάρχοντος cache στον server.

Μια άλλη τεχνική είναι το anycast. Με το anycasting ουσιαστικά μια διεύθυνση IP οδηγεί σε διαφορετικούς (συνήθως χαμηλότερου latency, πρακτικά δηλαδή πιο κοντινούς) edge servers, βασιζόμενη στην γεωγραφική τοποθεσία του χρήστη. Σύμφωνα βέβαια με την γενικότερη λογική λειτουργίας των CDN, αν χρησιμοποιηθούν open DNS services, όπως αυτοί της Google, η υλοποίηση του CDN ουσιαστικά αχρηστεύεται, αφού ανιχνεύεται ως τόπος ύπαρξης της ιστοσελίδας η γεωγραφική περιοχή που είναι στημένος ο open DNS server και όχι η πραγματική γεωγραφική τοποθεσία που βρίσκεται ο server της ιστοσελίδας που μας ενδιαφέρει. Όταν μάλιστα πρόκειται για υπηρεσίες web streaming, το πρόβλημα αυτό μπορεί να κάνει ακόμη και αδύνατη την λειτουργία των υπηρεσιών αυτών.

Για να επιτευχθούν τεχνικές όπως η προηγούμενη, το anycasting, χρησιμοποιούνται επίσης βοηθητικές τεχνικές. Πιο συγκεκριμένα, με το HTTP redirection τα requests ενός client σε κάποιον κόμβο του δικτύου, μεταφέρονται και απαντώνται από έναν άλλον (που βρίσκεται πιο κοντά στον τελικό χρήστη), με αυτή την τεχνική. Σημαντικό εδώ είναι να αναφέρουμε πως όταν γίνεται redirection από έναν κόμβο σε έναν άλλον, ο δεύτερος, δηλαδή αυτός που εκ νεοτέρας αναλαμβάνει την διαχείριση του request, επιλέγεται με βάση τόσο την εγγύτητα προς τον τελικό χρήστη, όσο και σε συνάρτηση με το server load.

Η τελευταία τεχνική στην οποία θα αναφερθούμε είναι η συμπίεση ή αλλιώς compression. Ως γνωστόν, το bandwidth του τελικού χρήστη ή η εγγύτητά του στα exchange points δεν είναι δυνατόν να ρυθμιστεί από το CDN, αυτό όμως που μπορεί να κάνει είναι να μειώσει τους χρόνους απόκρισης, που επιτυγχάνεται μειώνοντας το μέγεθος των HTTP requests, με μεθόδους συμπίεσης.

Οι μέθοδοι αυτές αφορούν την βασική λειτουργία του CDN, δηλαδή τον «πυρήνα» του. Σαφώς όμως υπάρχουν και άλλες λειτουργίες, στις περισσότερες περιπτώσεις δευτερεύουσας σημασίας , όπως η καταγραφή των επισκέψεων (logging) και η παρουσίασή τους στον διαχειριστή ή η καταγραφή των επιθέσεων που δέχεται το σύστημα έτσι ώστε ο διαχειριστής να προβεί στις κατάλληλες ενέργειες.

Συνοψίζοντας, η υλοποίηση ενός CDN θεωρητικά φαίνεται εύκολη και σχετικά απλή: ένα δίκτυο από servers που καλύπτουν την υφήλιο και διανέμουν cached content στους κοντινούς χρήστες τους. Πρακτικά όμως δεν είναι έτσι τα πράγματα καθώς η υλικοτεχνική υποδομή που απαιτείται είναι ιδιαίτερα ακριβή και απαιτεί συχνή συντήρηση και ανανέωση εξοπλισμού.

 

Συμβουλή

Σε κάθε σύστημα CDN μπορούν να χρησιμοποιηθούν πρόσθετα modules ή υπηρεσίες (πχ Statistics, Thread control, DNS management κτλ) που πολλές φορές βολεύουν τους site/server administrators σε πληθώρα εφαρμογών.

 

 

 

Ποιος ειναι ο Κωνσταντίνος Λιβιεράτος

Ο Κώστας είναι φοιτητής και του αρέσει ο προγραμματισμός και το IT administration

Δώσε αστέρια!

MO: 5 (ψήφοι: 1)