Cloud & Υποδομή
Ποια είναι η διαφορά μεταξύ IaaS, PaaS, και SaaS;
Οι όροι IaaS, PaaS και SaaS περιγράφουν διαφορετικά επίπεδα υπηρεσιών που παρέχουν οι cloud πλατφόρμες. Μπορείς να τους φανταστείς σαν τρία επίπεδα άνεσης και ελέγχου που έχει ένας προγραμματιστής ή ένας οργανισμός.
Στο IaaS (Infrastructure as a Service), ο πάροχος cloud σού δίνει την «υποδομή» — εικονικούς υπολογιστές, δίσκους αποθήκευσης, δίκτυα. Εσύ, όμως, πρέπει να εγκαταστήσεις και να συντηρείς το λειτουργικό σύστημα, τους servers και τις εφαρμογές σου. Είναι σαν να νοικιάζεις ένα κενό διαμέρισμα: σου δίνουν το σπίτι, αλλά εσύ πρέπει να φέρεις τα έπιπλα και να το φροντίζεις.
Παραδείγματα: AWS EC2, Google Compute Engine.
Στο PaaS (Platform as a Service), το cloud δεν σου δίνει μόνο «χώρο», αλλά και έτοιμο περιβάλλον για να αναπτύξεις εφαρμογές. Δεν σε απασχολεί το λειτουργικό σύστημα ή η εγκατάσταση του web server, απλώς γράφεις και ανεβάζεις τον κώδικά σου. Είναι σαν να μπαίνεις σε ένα πλήρως επιπλωμένο γραφείο, όπου μπορείς κατευθείαν να δουλέψεις.
Παραδείγματα: Heroku, AWS Elastic Beanstalk, Google App Engine.
Τέλος, στο SaaS (Software as a Service), δεν φτιάχνεις τίποτα εσύ απλώς χρησιμοποιείς μια εφαρμογή που είναι ήδη έτοιμη και λειτουργεί στο cloud. Είναι σαν να πηγαίνεις σε ένα εστιατόριο, δεν μαγειρεύεις, απλώς απολαμβάνεις το φαγητό.
Παραδείγματα: Gmail, Microsoft 365, Salesforce.
Με λίγα λόγια, όσο ανεβαίνουμε από IaaS σε PaaS και SaaS, μειώνεται ο έλεγχος που έχεις αλλά αυξάνεται η ευκολία.
Πώς διασφαλίζεις fault tolerance και high availability σε ένα σύστημα στο cloud;
Η ανθεκτικότητα (fault tolerance) και η υψηλή διαθεσιμότητα (high availability) είναι δύο έννοιες που στοχεύουν στο ίδιο πράγμα: να μη «πέφτει» το σύστημα, ακόμη κι αν κάτι πάει στραβά. Στον κόσμο του cloud, οι αποτυχίες είναι αναπόφευκτες, ένας server μπορεί να χαλάσει, μια σύνδεση να κοπεί ή μια υπηρεσία να καθυστερήσει. Το σημαντικό δεν είναι να τις αποφύγεις, αλλά να έχεις σχεδιάσει έτσι το σύστημά σου ώστε να συνεχίζει να λειτουργεί.
Η ανθεκτικότητα επιτυγχάνεται με πλεονασμό. Δεν έχεις μόνο έναν server ή μια βάση, αλλά πολλούς. Αν ένας αποτύχει, κάποιος άλλος αναλαμβάνει αυτόματα. Η υψηλή διαθεσιμότητα διασφαλίζεται με τη χρήση load balancers, αντιγράφων δεδομένων (replicas) και auto-scaling μηχανισμών. Στο cloud, μπορείς να διασπείρεις το σύστημά σου σε πολλές ζώνες διαθεσιμότητας (availability zones) ή και σε διαφορετικές γεωγραφικές περιοχές, ώστε μια τοπική βλάβη να μην επηρεάσει όλους τους χρήστες.
Με απλά λόγια, φτιάχνεις το σύστημα σαν ένα δίκτυο δρόμων με εναλλακτικές διαδρομές. Αν κλείσει ένας δρόμος, η κίνηση περνάει αυτόματα από άλλον. Έτσι πετυχαίνεις σταθερότητα και αδιάλειπτη λειτουργία.
Τι είναι ένα load balancer και πότε χρειάζεται;
Ένας load balancer είναι ένας «διαχειριστής κυκλοφορίας» του συστήματος. Στέκεται μπροστά από πολλούς servers και φροντίζει να μοιράζει τα αιτήματα των χρηστών ισότιμα, έτσι ώστε να μην επιβαρύνεται υπερβολικά κανένας.
Αν, για παράδειγμα, έχεις δέκα web servers που σερβίρουν την ίδια εφαρμογή, ο load balancer θα στέλνει το πρώτο αίτημα στον πρώτο server, το επόμενο στον δεύτερο, και ούτω καθεξής. Αν κάποιος server πάψει να λειτουργεί, ο load balancer το αντιλαμβάνεται και σταματά να του στέλνει αιτήματα. Αυτή η λειτουργία κάνει το σύστημα πιο αξιόπιστο και πιο επεκτάσιμο.
Ο load balancer είναι απαραίτητος όταν έχεις πολλαπλά instances της ίδιας εφαρμογής, δηλαδή όταν έχεις ήδη περάσει στο στάδιο της οριζόντιας κλιμάκωσης. Χωρίς αυτόν, οι χρήστες δεν θα μπορούσαν να συνδεθούν σταθερά και δίκαια με τους διαθέσιμους servers. Στην πράξη, λειτουργεί σαν ένας «διαιτητής» που κρατάει την ισορροπία ανάμεσα στη ζήτηση και στην απόδοση.
Πώς θα σχεδίαζες ένα multi-region deployment για εφαρμογή web;
Ένα multi-region deployment σημαίνει ότι η εφαρμογή σου «ζει» σε περισσότερες από μία γεωγραφικές περιοχές του cloud, για λόγους ταχύτητας και ασφάλειας. Η ιδέα είναι απλή, αν ένας χρήστης βρίσκεται στην Αθήνα, είναι προτιμότερο να εξυπηρετείται από έναν server στην Ευρώπη, ενώ κάποιος από τη Νέα Υόρκη να εξυπηρετείται από έναν server στις ΗΠΑ. Έτσι μειώνεται η καθυστέρηση και αυξάνεται η ταχύτητα απόκρισης.
Πέρα όμως από την ταχύτητα, το multi-region προσφέρει και ανθεκτικότητα. Αν για οποιονδήποτε λόγο πέσει μία περιοχή (π.χ. διακοπή ρεύματος ή βλάβη στο δίκτυο του παρόχου), το σύστημα μπορεί να μεταφέρει αυτόματα την κίνηση σε μια άλλη. Ένας global load balancer ή ένας έξυπνος DNS διαχειρίζεται αυτή τη διαδικασία, κατευθύνοντας τους χρήστες εκεί που υπάρχει διαθεσιμότητα.
Η πρόκληση βρίσκεται στον συγχρονισμό των δεδομένων. Πρέπει οι βάσεις δεδομένων σε κάθε περιοχή να είναι όσο το δυνατόν πιο ενημερωμένες, κάτι που γίνεται με replication ή event streaming. Η απόλυτη συνέπεια είναι δύσκολη σε παγκόσμια κλίμακα, οπότε πολλές φορές οι αρχιτέκτονες επιλέγουν ένα μοντέλο eventual consistency, όπου τα δεδομένα συγχρονίζονται σταδιακά, αρκεί να υπάρχει συνοχή σε εύλογο χρόνο.
Πώς συγκρίνεται το AWS, Azure και Google Cloud σε επίπεδο αρχιτεκτονικής;
Οι τρεις μεγάλοι πάροχοι cloud, Amazon Web Services (AWS), Microsoft Azure και Google Cloud Platform (GCP), έχουν κοινή φιλοσοφία, αλλά διαφορετική «προσωπικότητα».
Το AWS είναι το πιο ώριμο και πλούσιο οικοσύστημα. Έχει τη μεγαλύτερη ποικιλία υπηρεσιών και προσφέρει τεράστια ευελιξία σε αρχιτεκτονικό επίπεδο. Είναι συχνά η επιλογή οργανισμών που χρειάζονται λεπτομερή έλεγχο και προηγμένες δυνατότητες αυτοματοποίησης.
Το Azure ξεχωρίζει για τη στενή του σχέση με τον επιχειρηματικό κόσμο και το οικοσύστημα της Microsoft. Ενσωματώνεται φυσικά με τεχνολογίες όπως το Active Directory, το Office 365 και το Windows Server, γεγονός που το καθιστά ιδανικό για εταιρικά περιβάλλοντα και hybrid υποδομές, όπου το cloud συνδυάζεται με εσωτερικά data centers.
Το Google Cloud είναι νεότερο, αλλά τεχνολογικά πολύ καθαρό και μοντέρνο. Η Google το έχει σχεδιάσει πάνω στις ίδιες αρχές που χρησιμοποιεί για τα δικά της προϊόντα, όπως το YouTube ή το Gmail, και δίνει ιδιαίτερη έμφαση σε τομείς όπως το machine learning, το data analytics και την αυτοματοποίηση μέσω Kubernetes (το οποίο η ίδια δημιούργησε).
Να θυμάσαι..
AWS σημαίνει ισχύς και ευελιξία, Azure σημαίνει ολοκλήρωση με τον εταιρικό κόσμο, και Google Cloud σημαίνει καθαρή τεχνολογική καινοτομία.
Βασικές έννοιες
AWS EC2 (Amazon Elastic Compute Cloud)
Το EC2 είναι η βασική υπηρεσία υπολογιστικής ισχύος του AWS και αποτελεί χαρακτηριστικό παράδειγμα IaaS (Infrastructure as a Service).
Με το EC2, ουσιαστικά «νοικιάζεις» εικονικούς servers στο cloud. Εσύ αποφασίζεις το λειτουργικό σύστημα, την ισχύ του επεξεργαστή, τη μνήμη και το δίκτυο. Έχεις πλήρη έλεγχο στο περιβάλλον σου, όπως θα είχες σε έναν φυσικό server στο data center. Είναι το θεμέλιο πάνω στο οποίο μπορείς να χτίσεις οποιοδήποτε σύστημα, από απλά websites έως μεγάλης κλίμακας πλατφόρμες.
Google Compute Engine (GCE)
Το GCE είναι το αντίστοιχο της Google στο ίδιο επίπεδο, επίσης IaaS.
Και εδώ, δημιουργείς και διαχειρίζεσαι εικονικές μηχανές (VMs) στο cloud. Προσφέρει εξαιρετική απόδοση, δυνατότητες αυτοματοποίησης και βαθύ έλεγχο στο hardware και το λειτουργικό. Η βασική του διαφορά από το EC2 είναι κυρίως στο οικοσύστημα και στις ενσωματώσεις του με τις υπόλοιπες υπηρεσίες του Google Cloud (όπως BigQuery, Kubernetes Engine κ.λπ.).
Heroku
Το Heroku είναι ένα από τα πιο γνωστά PaaS (Platform as a Service) περιβάλλοντα.
Εδώ δεν σε απασχολεί καθόλου ο server, το λειτουργικό σύστημα ή η υποδομή. Το μόνο που κάνεις είναι να ανεβάζεις τον κώδικά σου, και η πλατφόρμα αναλαμβάνει αυτόματα τη φιλοξενία, το scaling και τη διαχείριση. Είναι εξαιρετικά δημοφιλές για developers που θέλουν να επικεντρωθούν αποκλειστικά στην ανάπτυξη και όχι στη διαχείριση υποδομής.
AWS Elastic Beanstalk
Το Elastic Beanstalk είναι η αντίστοιχη PaaS λύση του AWS.
Δουλεύει σαν «γέφυρα» ανάμεσα στην απλότητα του Heroku και τη δύναμη του EC2. Ανέβαζεις την εφαρμογή σου και το Beanstalk αναλαμβάνει αυτόματα να δημιουργήσει τα EC2 instances, να ρυθμίσει το load balancing, το auto-scaling και το monitoring. Αν θελήσεις, μπορείς πάντα να μπεις στο κατώτερο επίπεδο και να παρέμβεις χειροκίνητα — κάτι που το κάνει ιδανικό για μεγαλύτερα projects με αυξανόμενες ανάγκες.
Google App Engine
Το App Engine είναι η PaaS πλατφόρμα της Google.
Σου επιτρέπει να γράφεις τον κώδικά σου σε γλώσσες όπως Python, Go, Java ή Node.js και να τον ανεβάζεις στο cloud χωρίς να αγγίξεις υποδομή. Το σύστημα φροντίζει για το scaling, την ασφάλεια και τη διαχείριση των πόρων. Είναι ιδιαίτερα αξιόπιστο για web εφαρμογές που χρειάζονται δυναμική κλιμάκωση με ελάχιστο κόπο από τον προγραμματιστή.
Gmail
Το Gmail είναι καθαρό παράδειγμα SaaS (Software as a Service).
Δεν εγκαθιστάς τίποτα, δεν διαχειρίζεσαι servers, απλώς χρησιμοποιείς μια εφαρμογή που λειτουργεί εξολοκλήρου στο cloud. Η Google διαχειρίζεται τα πάντα: αποθήκευση, ασφάλεια, ενημερώσεις, backup. Ο χρήστης έχει πρόσβαση μόνο στη λειτουργικότητα της υπηρεσίας.
Microsoft 365 (πρώην Office 365)
Το Microsoft 365 είναι επίσης SaaS, και περιλαμβάνει το σύνολο των εργαλείων παραγωγικότητας της Microsoft (Word, Excel, Outlook, Teams κ.ά.) σε μορφή cloud υπηρεσίας.
Ο χρήστης δεν ασχολείται με εγκαταστάσεις ή ενημερώσεις — όλα γίνονται αυτόματα. Είναι ένα εξαιρετικό παράδειγμα του πώς οι παραδοσιακές desktop εφαρμογές μεταφέρθηκαν σε μοντέλο Software-as-a-Service, προσφέροντας συνεργασία και πρόσβαση από οπουδήποτε.
Salesforce
Το Salesforce είναι ίσως το πιο εμβληματικό SaaS προϊόν για επιχειρήσεις.
Προσφέρει ένα πλήρες οικοσύστημα CRM (Customer Relationship Management), όπου οι εταιρείες διαχειρίζονται πελάτες, πωλήσεις, υποστήριξη και ανάλυση δεδομένων μέσα από το cloud. Ολόκληρη η πλατφόρμα είναι διαθέσιμη μέσω browser και API, και δεν χρειάζεται καμία τοπική εγκατάσταση. Επιπλέον, διαθέτει μεγάλη δυνατότητα επέκτασης μέσω πρόσθετων και custom εφαρμογών, διατηρώντας όμως το SaaS μοντέλο.
Δείτε και τις 20 ερωτήσεις για IT Systems Architect (Αρχιτέκτονας Συστημάτων Πληροφορικής)
nikosst
Top comments (0)