Εισαγωγή
Κάθε τρεις και λίγο έρχεται μία τεχνολογία που αλλάζει τα πάντα. Ριζικά. Στις μέρες μας αυτό είναι το Cloud Computing. Ολα τα δεδομένα βρίσκονται στο “cloud” σε διάφορα datacenters. Δείτε το google docs, ή το office365, όπου βασικά σημαίνει να τρέχεις προγράμματα χρησιμοποιώντας external resources. Ο αρχηγός στο cloud computing είναι το Amazon AWS. Η Αμαζον ανα τα χρόνια, έφτιαξε μία από τις πιο μεγάλες infrastructures στον κόσμο, με τρομακτικό scaling. Φανταστείτε ένα γιγάντιο υπολογιστή όπου μπορείς να προσθέτεις όσους CPU πυρήνες, μνήμη RAM και χωρητικότητα (δίσκο) θες. Δεν υπάρχουν ανταγωνιστές; Σίγουρα υπάρχουν, αλλά η Amazon είναι έτη φωτός μακριά τους, προσφέρει τόσα πολλά πράγματα όπου απο κει που ήθελες απλά έναν server στο cloud, στην τελική καταλήγεις με άλλα 10 πράγματα – marketing. Σε αυτή τη σειρά άρθρων θα ασχοληθούμε με τα απολύτως βασικά, με τους servers, τα websites, τους dns και ό,τιδήποτε άλλο είναι τα χρειάζεται να ξέρει ένας system administrator για να τρέξει τα services στο cloud.
Πώς θα γίνει αυτο:
-
Για να μάθετε αυτό το skill πρέπει να πραγματοποιήσετε αυτά που θα σας πω. Το διάβασμα δεν αρκεί, πρέπει να υλοποιήσετε τα tasks και συγκεκριμένα να τα επαναλάβετε τόσες φορές ώστε να το κάνετε πλέον μηχανικά.
-
Κρατήστε τις δικές σας σημειώσεις και φτιάξε τα δικά σας SOP.
-
Φτιάξτε ένα lab. Ναι, πρέπει να πληρώσετε, sorry. Θα πρέπει να έχετε πιστωτική κάρτα (συγκεκριμένα πιστωτική) και να φτιάξετε ένα account στο Amazon AWS.
-
Τέλος, να πω ξανά, ότι είναι σημαντικό να υλοποιήσετε αυτά για τα οποία θα σας μιλήσω. Είναι ένα καθαρά πρακτικό skill, το οποίο είναι ότι πιο απλό πρέπει να ξέρει ένας system administrator σήμερα, και φυσικά από κει επιβάλλεται να ψαχτείτε μόνοι σας και να βρείτε το δικό σας workflow.
-
Το interface του AWS αλλάζει συνέχεια, οπότε αν θέλετε να είστε up to date, γραφτείτε στο AWS Newsletter καθώς είναι κάτι σαν changelog.
-
Μην το φοβάσαι. Κάποτε φοβόμουν να βάλω Linux και πλέον δεν μπορώ να δουλέψω χωρίς αυτό. Ο μόνος τρόπος να αγαπήσετε το cloud computing είναι με το να το χρησιμοποιείτε. Όσο περισσότερο το χρησιμοποιείτε τόσο πιο άνετα και ευχάριστα θα νιώθετε.
Τι είναι το cloud;
Σκέψου ότι πας στην δουλειά, μπαίνεις μεσα στο server-room, φορτώνεις όλα τα μηχανήματα στο αυτοκίνητο και τα πας και τα αφήνεις σε ένα datacenter. Αυτό ήταν. Είναι ένα off-site infrastructure καθώς και κάποια όμορφα σπέσιαλ features που έρχονται μαζί με αυτό. Μιλάμε για τον παραδοσιακό τρόπο, όπου εδώ ο κυρ Μήτσος αποφάσισε να φτιάξει το δικό του προσωπικό cloud – αυτό που λέμε on-premise ή αλλιώς bare-metal. Το πρώτο πράγμα που κάνει είναι να βρει ένα datacenter (συνήθως βρίσκονται σε περιοχές που δεν έχει σεισμούς και άλλες καταστροφές).
btw έχετε μπει ποτέ σε datacenter; Αν, όχι, απλά κάντε το. Χωρίς πλάκα, κανονίστε να πάτε σε ένα μεγάλο datacenter στην Ευρώπη και να βάλετε ένα 20 raspberry pi. Όταν θα μπείτε μέσα είναι σαν να βρίσκεσαι στο Death Star! Τεράστιοι ανεμιστήρες, φωτάκια παντού, κλπ. Εκεί λοιπόν, ο κυρΜήτσος νοικιάζει ένα rack για να βάλει τον εξοπλισμό του. Για το rack αυτό (απλά και μόνο για τον χώρο) θα πληρώσει κάποια χρήματα. Για το ρεύμα, το internet και όλα τα υπόλοιπα θα πληρώσει επιπλέον χρήματα εννοείται. Εκεί, έχουμε κάποιες εταιρείες οι οποίες εδραιώνονται ενεργά μέσα στο datacenter, και είναι υπεύθυνοι για το σετάρισμα των switches, firewalls, servers, storages κλπ. Οπότε αν θέλετε να αναβαθμίσετε το δίκτυο σας σε fiber optics, πρέπει να απευθυνθείτε σε μία από αυτές, και οι engineers τους θα φροντίσουν και ό,τι χρειάζεται. Είναι σαν να χτίζεις ένα σπίτι. Επιλέγεις τα καλώδια, το firewall, το πως θα κάνεις το power cycle, τα UPS, τους servers σου, κλπ. Το rack σου είναι σαν το σπίτι σου, μέσα στο datacenter και οι network engineers οι εργολάβοι.
Θέλω λοιπόν να τρέξω έναν web server. Θελω να τρέξω ένα remote desktop server. Θελω να τρέξω έναν SFTP server. Θέλω να τρέξω έναν mail server. Ο,τι θες να τρέξεις, τώρα μπορείς να το κάνεις, χρησιμοποιώντας το off-site infrastructure σου, όπου για σένα είναι πλέον το “cloud” σου. Μπορείς να σηκώσεις ένα ωραιότατο OpenStack!
Και φυσικά, μπορείς να κάνεις expand και σε άλλο datacenter. πχ να έχεις ένα στην Ευρώπη και ένα στην Αμερική. Αν κάτι πάει στραβά, πχ χαλάσει το air-condition και αρχίσουν να ψήνονται οι servers, τι θα κάνεις; Ναι, μπορεί να σου λένε ότι έχουν 100% SLA uptime, αλλά θα το ρισκάρεις; Οι εγγύηση αυτή ισχύει εφόσον το datacenter είναι ΟΚ, αν πιάσει φωτιά τότε προφανώς και θα πέσουν offline τα services σου. Πέρα από αυτό, αν προσφέρει πχ voice over IP services, και οι πελάτες σου είναι στην Κίνα, θες ένα datacenter στην Κίνα, διαφορετικά θα υπάρχει delay και lag. Το οποίο σημαίνει, ότι με τον παραδοσιακό τρόπο, ο Μήτσος πρέπει να πάει ταξίδι στην Κίνα!
Τι είναι το AWS (Amazon Web Services);
Το πρώτο πράγμα: δεν φορτώνεις τίποτα στο αμάξι σου. Δεν αγοράζεις καλώδια, δεν αγοράζεις rack, δεν πας στην Κίνα, δεν, δεν, δεν, δεν. Απλά μπαίνεις σε ένα website και επιλέγεις τι θες να κανεις. Το πρώτο πράγμα που επιλέγεις είναι το Region, δηλαδή την περιοχή που η Amazon εχει datacenters. πχ eu-west-1, us-east-1, us-east2-, κλπ. Κάθε region εχει ένα pool από Availability Zones, τα οποία είναι datacenters που λειτουργούν ανεξάρτητα το ένα από το άλλο. Οπότε, region = περιοχή, availability-zones=datacenters στην περιοχή αυτή.
Για κάθε region υπάρχουν περισσότερα ή λιγότερα availability zones. Δεν σημαίνει ότι η τάδε region είναι καλύτερη από την άλλη. Ολα τα datacenters εχουν τις ίδιες προδιαγραφές και ISO.
Επιλέγουμε λοιπόν μία region και μία availability zone, και πλέον μπορούμε να κάνουμε provision τον server μας. Κάνουμε λοιπόν launch ενα instance (πχ ubuntu) και ένα instance type (πχ micro). Το instance type είναι το πόσο μεγάλος ή μικρός είναι αυτός ο server. Δύο πράγματα δηλαδή: το operating system και τα hardware specs (instance type). Εχοντας το server να τρέχει, πλέον μπορούμε να σηκώσουμε τα services που θέλουμε. Εναν webserver, εναν mailserver, ενα ZNC, ο,τι θέλουμε … Το επόμενο βήμα είναι να κάνει expand σε άλλο datacenter (availability zone) γιατί θέλουμε να υπάρχει redundancy. Υποθέτοντας ότι έχουμε τον server στην Αμερική στο us-west-1a datacenter, τότε μπορούμε να τον επεκτείνουμε και στην us-west-1c availability zone. Είναι στην ίδια τοποθεσία, αλλά σε διαφορετικό datacenter. Οπότε τώρα, με 2 κλικ έχω multi-datacenter redundancy. Αν έχω πάλι του Κινέζους πελάτες, τότε μπορώ να κάνω extend και σε άλλο Region, κοντά στη Κίνα, ώστε να έχω multi-region redundancy.
Ας τα βάλουμε κάτω, pros and cons:
Bare Metal / Private Cloud:
-
Πληρώνεις εξαρχής ένα σκασμό λεφτά, καθώς δεν ξερεις πόσα περίπου πράγματα θα χρησιμοποιήσεις (καλώδια, servers, UPS, κλπ), οπότε πληρώνεις ένα σκασμό λεφτά για να είσαι σίγουρος ότι θα σου φτάσουν. Επειδή δεν θες να απογοητεύσεις τους πελάτες σου, συνήθως αγοράζεις παραπάνω από ότι χρειάζεσαι, με αποτέλεσμα να πληρώνεις τζάμπα λεφτά.
-
Οι τεχνικοί στο datacenter δεν ειναι φθηνοι. Ολοι αυτοί οι δικτυάδες με τα Cisco και AT&T που συνδέουν και πατσάρουν και σετάρουν και ρυθμίζουν και συνδέουν και τρέχουν πάνω κάτω, είναι προσωπικό που παρέχει ένα service το οποίο χρειάζεσαι.
-
Και φυσικά, μιλάμε για μία custom λύση, αναλόγως την εμπειρία που έχεις και την εμπειρία που έχει ο εκάστοτε engineer που υλοποιεί τη λύση που πιστεύει ότι είναι η καλύτερη. Οπότε πολλές φορές ανακαλύπτουμε τον τροχό ξανά και ξανά, χωρίς η επόμενη φορά να είναι καλύτερη από τη προηγούμενη.
-
Πλεονέκτημα είναι προφανώς όλα αυτά σου ανοίκουν, δεν τα νοικιάζεις, αλλά είναι αγορασμένα στο όνομά σου, αλλά στην ουσία εξαρτάσαι αρκετά σε άλλους παράγοντες, στους μηχανικούς, στο datacenter το ίδιο, και ελπίζεις ότι όλα θα πάνε καλά.
-
Μπορείς να φτιάξεις όσο πιο μεγάλο “θηρίο” server θες. Δεν υπάρχειν micro, small, medium, large, xxl, και άλλα μεγέθη. Οργίασε όσο θες με τα specs.
Amazon AWS
-
Εδώ το μοντέλο είναι pay-as-you-go και μάλιστα σου δίνουν και δωρεάν services για τον πρώτο χρόνο για το transitioning period. Μπορείς πολύ εύκολο να αυξήσεις και να μειώσεις ότι resources θες, απλά με μερικά κλικ.
-
Δεν θες να πληρώνεις ένα σκασμό λεφτά για πράγμτα που δε χρειάζεσαι, σωστά; Αυτό λέγεται ELASTIC. Καλώς ήρθες στο Elastic Computing, οπου λέξη κλειδί είναι το: grow-as-needed. Οταν βλέπεις οτι ο χώρος στο δίσκο αρχίζει να τελειώνει, τότε automagically (μου αρέσει αυτή η λέξη) σηκώνεται κι άλλα μηχανήματα και μεγαλέι έτσι η χωρητικότητα! Φυσικά αυτό το ρυθμίζεις, πχ όταν ο του πελάτη φρικάρει λόγω κίνησης, το οποίο συμβαίνει συνήθως σε ώρες αιχμής (πχ 13:00 με 16:00), τότε θέλω για αυτό το διάστημα να σηκώσεις άλλους δύο servers για να μοιράσει το φόρτο. Μόλις πάει 16:00 να σκοτώσεις τον έναν, και μόλις πάει 17:00 να σκοτώσεις και τον άλλο, ώστε να μείνει πάλι με αυτόν που είχε. Φυσικά αυτό μπορεί να ρυθμιστεί και με άλλα quota, οχι απαραίτητα με βάση την ώρα. Λεφτά να έχεις, και pricing models θα βρεις. Στο Amazon λοιπόν, αυτό λέγεται EC2 - Elastic Computing: το οποίο είπαμε ότι σημαίνει add-more-as-you-need και τα αφαιρείς όταν είσαι ΟΚ. Οπως είπα στην αρχή, η Amazon δεν έχει πρόβλημα με το scaling, οπότε ότι κι αν ζητήσετε, οι τύποι θα το κάνουν deliver.
-
Επίσης έχουν ένα κάρο security compliances, όπου εκεί έχουμε τα legal/δικηγορικά στη μέση. Μερικοί πελάτες λένε: “παιδιά εμείς παίζουμε μόνο με το X ISO, ή με το Y ISO”. Εχοντας το infrastructure στο AWS, είναι 100% σίγουρο (ότι καν χρειάζεται να το σκεφτείς) ότι είναι compliant με το πρότυπο που ζητάει ο πελάτης.
-
Πολλαπλά datacenters, με ένα κλικ. Διαφορετικά, δοκιμάστε να φορτώσετε τα πάντα σε ένα αμάξι και να στήσετε δεύτερο infrastructure.
-
Οι Engineers στο Amazon δουλεύουν στην αιχμή της τεχνολογία όσον αφορά τα datacenters. Πρώτα θα το ανακαλύψουν αυτοί, και μετά θα το πάρουν όλοι οι άλλοι. Οπότε η εξειδίκευση που υπάρχει είναι τεράστια, συνεπώς έχεις το καλύτερο support που θα μπορούσες να έχεις από την άποψη του consulting – και θα πληρώσεις για αυτό.
-
Horizontal Scaling. Τι είναι αυτό; Υπάρχει και vertical scaling; Ναι! πχ Θέλεις περισσότερη επεξεργαστική ισχύ; Αγοράζεις περισσότερους επεξεργαστές. Θέλεις περισσότερη RAM, αγοράζεις περισσότερη RAM. Με το Amazon είναι λίγο διαφορετική η φιλοσοφία. Αντί να προσθέτεις hardware, προσθέτεις instances. Στο AWS τα πάντα είναι virtualized. Προφανώς αυτά τρέχουν σε κάποιο bare metal hardware, αλλά η φάση είναι ότι μέσω ένος wizard μπορούμε να φτιάξουμε ένα custom server, virtualized, το οποίο λέγεται AMI. Οπότε αντί να κάνουμε το AMI μεγαλύτερο (πχ να προσθέσουμε περισσότερους επεξεργαστές σε αυτό, ή περισσότερη RAM), αντί δηλαδή να κάνουμε vertical scaling, το AWS σου προτείνει να σηκώσει ένα δεύτερο AMI. πχ ας πούμε ότι τρέχεις ένα website που έχει πολλή κίνηση και γίνεται χαμός. Ολη μέρα όλοι μπαίνουν στο site σου, και βλέπεις ότι 8:00 - 17:00, μπαίνουν όλοι μέσα και κάνουν το ΑΜΙ σου να βογκάει. Οπότε, εδώ έρχεται το horizontal scaling του AWS όπου σου επιτρέπει να κάνεις clone το AMI, και να φτιάξεις όσους κλώνους του webserver θες. (btw Όλοι αυτοί μιλάνε με την ίδια database προφανώς). Σηκώνεις και έναν loadbalancer μπροστά, ο οποίος ανακατευθύνει το traffic και έτσι σώθηκες. Το website σου παραμένει online και παρόλο που δεν είχε υπολογίσει ότι θα γίνει τόσο χαμός, με 5 κλικ σηκώθηκαν αμέσως τα cloned AMIs και έβαλες μπροστά τους και έναν LB. Αυτό είναι το horizontal scaling.
Με απλά λόγια: wow! Αυτό είναι μία τεχνολογία που αλλάζει τα πράγματα! Το AWS εντάσεται στην κατηγορία του public cloud, δηλαδή όλα τα τα features, λίγο-πολύ, τα παρέχουν κι άλλοι, όπως Microsoft Azure, Google GCP, DigitalOcean, OVH κλπ. Φυσικά, το public cloud δεν είναι καινούριο, ο κόσμος το χρησιμοποιεί εδώ και αρκετό καιρό.
Οπότε:
- Πρέπει να μάθεις να χρησιμοποιείς το public cloud.
- Το AWS είναι μακράν το πιο ευρέως διαδεδομένο public cloud. Ξεκίνα από αυτό!
ΥΣ: Το 70% των public cloud services παγκοσμίως τρέχουν σε AWS. Με άλλα λόγια, αν πάτε να πιάσετε δουλειά σήμερα: ΠΡΕΠΕΙ ΝΑ ΞΕΡΕΤΕ ΤΑ ΒΑΣΙΚΑ ΤΟΥ AWS.