This Is Why We Don't Push To Production On Fridays
This commit is contained in:
@@ -32,7 +32,7 @@ AWS (Amazon Web Services). Η AWS άρχισε να προσφέρει υπηρ
|
||||
Λόγω της ευρείας αποδοχής των υπηρεσιών IaaS της AWS και των πολλών
|
||||
πλεονεκτημάτων που αυτές παρέχουν, πολλές άλλες εταιρείες, όπως η Google, IBM
|
||||
και Microsoft, άρχισαν να προσφέρουν και αυτές υπηρεσίες του ίδιου τύπου.
|
||||
Σήμερα, ο μέσος καταναλωτής έχει στην διάθεση του μια πληθώρα εταιρειών που
|
||||
Σήμερα, ο μέσος καταναλωτής έχει στην διάθεσή του μια πληθώρα εταιρειών που
|
||||
προσφέρουν υπηρεσίες νεφο-υπολογιστικής και μάλιστα μερικές από αυτές, όπως η
|
||||
Linode, Vultr και Digital Ocean, προσφέρουν ως την κύρια υπηρεσία τους τη
|
||||
δυνατότητα διάθεσης υπολογιστικών πόρων στους χρήστες με τη μορφή ενοικίασης
|
||||
@@ -42,7 +42,7 @@ Linode, Vultr και Digital Ocean, προσφέρουν ως την κύρια
|
||||
|
||||
Η ασφάλεια των περιβαλλόντων νέφους είναι ένα θέμα που απασχολεί πολύ τους
|
||||
χρήστες και ακόμα περισσότερο τις επιχειρήσεις που βασίζονται σε υπηρεσίες
|
||||
νεφο-υπολογιστικής για την διάθεση των δικών τους υπηρεσιών. Η επίτευξη της
|
||||
νεφο-υπολογιστικής για την διάθεση των δικών τους υπηρεσιών. Η επίτευξή της
|
||||
εξαρτάται από τρεις βασικούς παράγοντες. Ο πρώτος είναι η ασφάλεια των υποδομών
|
||||
νέφους, όπου στην περίπτωση χρήσης υπηρεσιών IaaS υπεύθυνος είναι ο πάροχος
|
||||
νέφους. Ο δεύτερος παράγοντας είναι η ασφάλεια των τεχνολογιών εικονικοποίησης
|
||||
@@ -100,8 +100,8 @@ MySQL \footfullcite{mysql} και το διακομιστή ιστού Nginx \fo
|
||||
είναι η εικονικοποίηση διακομιστών και λειτουργικών συστημάτων (δοχειοποίηση).
|
||||
|
||||
Στην εικονικοποίηση διακομιστών, ένας φυσικός διακομιστής χωρίζει με την
|
||||
βοήθεια ενός υπερ-επόπτη τους πόρους του όπως τη μνήμη, τον αποθηκευτικό χώρο
|
||||
και τον επεξεργαστή του σε πολλά μικρότερα εικονικά μηχανήματα. Κάθε εικονικό
|
||||
βοήθεια ενός υπερ-επόπτη τους πόρους του, όπως η μνήμη, ο αποθηκευτικός χώρος
|
||||
και ο επεξεργαστής του, σε πολλά μικρότερα εικονικά μηχανήματα. Κάθε εικονικό
|
||||
μηχάνημα μπορεί να εκτελεί διαφορετικό λειτουργικό σύστημα και να έχει
|
||||
διαφορετικές ρυθμίσεις από τα υπόλοιπα. Η διάθεση ενός εικονικού μηχανήματος
|
||||
δεν περιορίζεται μονάχα σε τοπικούς υπολογιστές και έτσι πολλές φορές
|
||||
@@ -110,15 +110,15 @@ MySQL \footfullcite{mysql} και το διακομιστή ιστού Nginx \fo
|
||||
|
||||
Η δοχειοποίηση αποτελεί μια ειδική περίπτωση εικονικοποίησης όπου αντί για το
|
||||
υλικό, εικονικοποιείται το λειτουργικό σύστημα. Αυτό, καθιστά την δοχειοποίηση
|
||||
πιο αποδοτική από την εικονικοποίηση διακομιστών καθώς δεν χρειάζεται να
|
||||
πιο αποδοτική από την εικονικοποίηση διακομιστών, καθώς δεν χρειάζεται να
|
||||
εκτελεστεί ένας υπερ-επόπτης για την διαχείριση υπολογιστικών πόρων. Επιπλέον,
|
||||
η δοχειοποίηση επιτρέπει την εκτέλεση περισσότερων εικονικών περιβαλλόντων στον
|
||||
ίδιο φυσικό διακομιστή και έτσι, η απόδοση του υλικού αυξάνεται ακόμα
|
||||
περισσότερο. Συνήθως χρησιμοποιείται για την διάθεση προγραμμάτων στο ευρύ
|
||||
κοινό, τα οποία ακολουθούν την αρχιτεκτονική μικρο-υπηρεσιών (microservices)
|
||||
και επειδή περιέχουν όλες τις απαραίτητες βιβλιοθήκες για την εκτέλεσή τους,
|
||||
χωρίς να βασίζονται στο υποκείμενο νέφος στο οποίο στεγάζονται, αποτελούν
|
||||
αρκετά δημοφιλή επιλογή τεχνολογίας διάθεσης υπηρεσιών.
|
||||
και λόγω του ότι τα παράγωγά της περιέχουν όλες τις απαραίτητες βιβλιοθήκες για
|
||||
την εκτέλεσή τους, χωρίς να βασίζονται στο υποκείμενο νέφος στο οποίο
|
||||
στεγάζονται, αποτελούν αρκετά δημοφιλή επιλογή τεχνολογίας διάθεσης υπηρεσιών.
|
||||
|
||||
Τα δοχεία είναι ένα προϊόν της δοχειοποίησης και αποτελούν το αποτέλεσμα της
|
||||
εικονικοποίησης σε επίπεδο λειτουργικού συστήματος. Με την βοήθεια του
|
||||
@@ -134,8 +134,8 @@ MySQL \footfullcite{mysql} και το διακομιστή ιστού Nginx \fo
|
||||
εικονικοποίηση και είθισται να προτιμάται για την ανάπτυξη και διάθεση
|
||||
εφαρμογών. Αυτό οφείλεται στο γεγονός ότι η μεταφορά και αναδημιουργία των
|
||||
δοχείων μπορεί να πραγματοποιηθεί σε κάθε περιβάλλον και νέφος, καθώς και στο
|
||||
γεγονός ότι αυτά απαιτούν λιγότερους πόρους σε σχέση με τις εικονικές μηχανές
|
||||
διότι οι υποκείμενοι πόροι του συστήματος μπορούν να μοιραστούν μεταξύ των
|
||||
γεγονός ότι αυτά απαιτούν λιγότερους πόρους σε σχέση με τις εικονικές μηχανές,
|
||||
αφού οι υποκείμενοι πόροι του συστήματος μπορούν να μοιραστούν μεταξύ των
|
||||
διαφορετικών δοχείων.
|
||||
|
||||
\subsection{Πλεονεκτήματα δοχείων έναντι εικονικών μηχανών} \label{containerAdvantages}
|
||||
@@ -144,7 +144,7 @@ MySQL \footfullcite{mysql} και το διακομιστή ιστού Nginx \fo
|
||||
ένα δοχείο εξομοιώνει μονάχα το περιβάλλον εκτέλεσης ενός λογισμικού. Αυτό
|
||||
σημαίνει πως εάν θεωρηθεί ως τελικός στόχος η εκτέλεση ενός λογισμικού
|
||||
απομονωμένο από το υπόλοιπο σύστημα, αυτό επιτυγχάνεται με δύο διαφορετικούς
|
||||
τρόπους αφού οι εικονικές μηχανές και τα δοχεία χρησιμοποιούν διαφορετικού
|
||||
τρόπους, αφού οι εικονικές μηχανές και τα δοχεία χρησιμοποιούν διαφορετικού
|
||||
είδους εικονικοποίηση. Στην περίπτωση των δοχείων δεν έχουμε απομόνωση μηχανών
|
||||
αλλά διεργασιών. Γεγονός που συμβάλλει στην αποφυγή της επιβάρυνσης του
|
||||
συστήματος που θα επιβάλλονταν από τις διεργασίες του υπερ-επόπτη και της
|
||||
@@ -211,7 +211,7 @@ Windows δε μπορούν να εκτελεστούν σε ένα περιβά
|
||||
|
||||
Εν γένει, τα βασικότερα πλεονεκτήματα των δοχείων σε σχέση με τις εικονικές
|
||||
μηχανές είναι ο διαμοιρασμός του πυρήνα του λειτουργικού συστήματος φιλοξενίας
|
||||
και η μεταφερσιμότητα τους. Το γεγονός ότι μοιράζονται τον ίδιο πυρήνα έχει ως
|
||||
και η μεταφερσιμότητά τους. Το γεγονός ότι μοιράζονται τον ίδιο πυρήνα έχει ως
|
||||
αποτέλεσμα να μην χρειάζεται να απονεμηθούν πόροι για εικονικοποίηση μηχανών με
|
||||
σκοπό την στέγαση ενός ολόκληρου ξεχωριστού λειτουργικού συστήματος (όπως
|
||||
γίνεται στις εικονικές μηχανές). Επιπλέον, τα δοχεία μπορούν να εκτελεστούν σε
|
||||
@@ -226,7 +226,7 @@ Docker) όπου μάλιστα η ταχύτητα δημιουργίας το
|
||||
και Container (δοχείο) αν και είναι διαφορετικοί. Παρ' όλα αυτά, η ιδέα της
|
||||
δημιουργίας απομονωμένων περιβαλλόντων εκτέλεσης λογισμικού υπήρχε προτού βγει
|
||||
το Docker στην αγορά. Ιστορικά, οι πρώτες τεχνολογίες περί δοχείων έκαναν την
|
||||
είσοδο τους από το 1979, όταν εισήχθη το chroot \cite{chrootCommand} στην
|
||||
είσοδό τους από το 1979, όταν εισήχθη το chroot \cite{chrootCommand} στην
|
||||
έβδομη έκδοση του Unix \cite{containerHistory}. Πρόκειται για μια εντολή που
|
||||
περιορίζει την πρόσβαση αρχείων που διαθέτει μια εφαρμογή, σε ένα συγκεκριμένο
|
||||
φάκελο, ο οποίος ορίζεται ως ο καινούριος αρχικός (root). Ο κύριος σκοπός του
|
||||
@@ -245,10 +245,10 @@ chroot ήταν η ενίσχυση της ασφάλειας ούτως ώστ
|
||||
2008 ήρθε στο προσκήνιο το LXC (Linux Container Technology) \footfullcite{LXC}.
|
||||
Το πρώτο εργαλείο που χρησιμοποιούσε τεχνολογίες δοχείων για την δημιουργία και
|
||||
εκτέλεση πολλαπλών λειτουργικών συστημάτων Linux στο ίδιο μηχάνημα.
|
||||
Χρησιμοποιώντας μηχανισμούς που προσέφερε το λειτουργικό σύστημα επέτρεπε πλήρη
|
||||
εικονικοποίηση ενός στιγμιότυπου Linux σε μορφή δοχείου και παρείχε αρκετές
|
||||
λειτουργίες όπως η δημιουργία, η εκκίνηση και η διαγραφή LXC δοχείων. Παρ' όλα
|
||||
αυτά, επικεντρωνόταν στην δοχειοποίηση λειτουργικών συστημάτων και όχι
|
||||
Χρησιμοποιώντας μηχανισμούς που προσέφερε το λειτουργικό σύστημα, επέτρεπε
|
||||
πλήρη εικονικοποίηση ενός στιγμιότυπου Linux σε μορφή δοχείου και παρείχε
|
||||
αρκετές λειτουργίες όπως η δημιουργία, η εκκίνηση και η διαγραφή LXC δοχείων.
|
||||
Παρ' όλα αυτά, επικεντρωνόταν στην δοχειοποίηση λειτουργικών συστημάτων και όχι
|
||||
εφαρμογών \cite{LXCvsDocker}, καθιστώντας δύσκολη και περίπλοκη την χρήση του
|
||||
όταν η κύρια ανάγκη ήταν η απομόνωση εφαρμογών.
|
||||
|
||||
@@ -299,7 +299,8 @@ Integration/Continuous Delivery) (Συνεχής Ενοποίηση/Συνεχή
|
||||
\cite{cicd}. Κατά το μοντέλο αυτό, δημιουργούνται αυτοματοποιημένες διαδικασίες
|
||||
που εκτελούνται κατά την διάρκεια της ανάπτυξης και παράδοσης μιας εφαρμογής
|
||||
προκειμένου να πραγματοποιείται έλεγχος της ποιότητας του κώδικα, να
|
||||
εντοπίζονται σφάλματα και να παράγονται εκτελέσιμα πακέτα.
|
||||
εντοπίζονται σφάλματα και να παράγονται εκτελέσιμα πακέτα τα οποία μετά μπορούν
|
||||
απευθείας να διατίθενται στο κοινό (continuous deployment).
|
||||
|
||||
Τα δοχεία αποτελούν ιδανική επιλογή για την εφαρμογή των παραπάνω μεθοδολογιών
|
||||
και πρακτικών καθώς επιτρέπουν το γρήγορο και αποτελεσματικό πακετάρισμα
|
||||
@@ -358,9 +359,9 @@ Service), όπως η ECS (Elastic Container Service) της Amazon. Μια υπ
|
||||
ταυτόχρονα προσφέρει και τα πλεονεκτήματα των δοχείων, όπως η ταχεία διάθεση
|
||||
και απόσυρσή τους αλλά και η υψηλή τους απόδοση κατά την εκτέλεση.
|
||||
Συγκεκριμένα, μέσω των υπηρεσιών CaaS, οι χρήστες διαθέτουν δυνατότητες
|
||||
ενορχήστρωσης δοχείων \cite{howCaasWorks} χωρίς την ανάγκη χειροκίνητου
|
||||
στησίματος πλατφορμών αυτού του είδους όπως είναι το Kubernetes
|
||||
\cite{kubernetes} και το Docker Swarm \cite{dockerSwarm}.
|
||||
ενορχήστρωσης δοχείων χωρίς την ανάγκη χειροκίνητου στησίματος πλατφορμών όπως
|
||||
το Kubernetes \cite{kubernetes} και το Docker Swarm \cite{dockerSwarm}, που
|
||||
παρέχουν αυτή την δυνατότητα.
|
||||
|
||||
Σε κάθε περίπτωση, λόγω των πλεονεκτημάτων που παρέχει η χρήση δοχείων, είναι
|
||||
πολύ συνήθης η θέση σε λειτουργία, εφαρμογών μέσω Docker σε περιβάλλοντα νέφους
|
||||
|
||||
Reference in New Issue
Block a user