This Is Why We Don't Push To Production On Fridays

This commit is contained in:
2024-01-25 22:44:07 +02:00
parent 1ac13aac00
commit f2dddac150

View File

@@ -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 σε περιβάλλοντα νέφους