Summary: | Η συγκεκριμένη διπλωματική εργασία αφορά την μελέτη ενός συστήματος
διαχείρισης containers για διαδικτυακές εφαρμογές.
Σε πρώτο στάδιο, για να πραγματοποιηθεί η μελέτη ενός τέτοιου συστήματος θα
πρέπει να σχεδιάσουμε και να μοντελοποιήσουμε μια διαδικτυακή εφαρμογή η
οποία θα τρέξει μέσα στο σύστημα μας. Στον σχεδιασμό της εφαρμογή αυτής θα
ληφθεί υπόψη ότι αυτή θα τρέξει μέσα σε ένα container και για αυτόν τον λόγο θα
ακολουθήσει μεθοδολογίες σχεδίασης λογισμικού όπως την 12-factor-app, η οποία
έχει έχει πολύ καλή συνέργεια με τέτοιες εφαρμογές.
Για την αξιολόγηση ενός τέτοιου συστήματος, πραγματοποιήθηκαν κάποια τεστ
στα οποία προσομοιώθηκαν συνεδρίες χρηστών της παραπάνω εφαρμογής οι
οποίες συνεχώς αυξανόταν με την πάροδο του χρόνου. Τα τεστ αυτά έγιναν σε δυο
αρχιτεκτονικές, εκ των οποίων μία είναι πολύ γνωστή και διαδεδομένη σήμερα, ενώ η
άλλη είναι προτεινόμενη από εμάς και στηρίζεται στο σύστημα μας. Τα αποτελέσματα
ήταν πολύ θετικά καθώς είχαμε πολύ καλύτερο χρόνο απόκρισης στην δική μας
αρχιτεκτονική σε σχέση με την διαδεδομένη, ειδικά σε αυξημένο όγκο χρηστών,
καθώς επίσης και πολύ λιγότερα σφάλματα. Το παραπάνω έχει σαν αποτέλεσμα ο
αριθμός των αιτημάτων που εξυπηρετούνταν σε πραγματικό χρόνο να είναι μεγάλος
και θεωρητικά χωρίς όριο καθώς ο αριθμός των containers τα οποία σερβίρουν την
εφαρμογή μας είναι δυναμικός και ανάλογος του φόρτου της εφαρμογής,οπότε δεν
περιορίζεται στους διαθέσιμους πόρους ενός μόνο μηχανήματος. Τα παραπάνω είναι
πολύ σημαντικά καθώς πολλές εφαρμογές, αφού ενώ φαίνεται να έχουν καλή
ποιότητα υπό χαμηλό αριθμό χρηστών, υποφέρουν από μεγάλη υποβάθμιση της
ποιότητας τους με την αύξηση του φόρτου.
Με την αυξημένη ζήτηση για αξιόπιστες και αποδοτικές υποδομές σχεδιασμένες για
την εξυπηρέτηση κρίσιμων συστημάτων, οι όροι υψηλή διαθεσιμότητα (high
availability) και επεκτασιμότητα (scalability) δεν θα μπορούσαν να είναι πιο δημοφιλή
στην σημερινή εποχή. Ενώ η ικανότητα χειρισμού αυξημένου φορτίου(load) ενός
συστήματος είναι ένα κοινό πρόβλημα και μέλημα στην κοινότητα των developers, η
μείωση του χρόνου εκτός λειτουργίας (downtime) μιας εφαρμογής και η εξάλειψη των
απλών σημείων αποτυχίας (single points of failure) είναι εξίσου σημαντικές. Η υψηλή
διαθεσιμότητα είναι μια ιδιότητα του σχεδιασμού υποδομής συστημάτων σε μεγάλη
κλίμακα που καλύπτει τις ανάγκες αυτές.
|