Ένα έτος κατά την εκκίνηση. Πώς να βελτιστοποιήσετε το κόστος AWS κατά την εκκίνηση.

Το Cloud computing είναι απλώς ένας καλύτερος τρόπος για να εκτελέσετε την επιχείρησή σας

Πριν από την ίδρυση μιας εταιρείας, υποτίμησα πόσο σημαντικές είναι οι υπηρεσίες υπολογιστικού νέφους για το οικοσύστημα εκκίνησης. AWS, GCE, Azure, Digital Ocean έχουν διαδραματίσει κρίσιμο ρόλο στη διάδοση των νεοσύστατων επιχειρήσεων. Έχοντας πρόσβαση σε σχεδόν απεριόριστους πόρους, επιλύει πολλές τεχνικές δυσκολίες, επιτρέποντάς σας να εστιάσετε σε αυτό που είναι απαραίτητο για την ανάπτυξη της επιχείρησής σας και όχι να ασχοληθείτε με τη συντήρηση του υλικού. Αλλά όπως και με κάθε μεγάλη δύναμη έρχεται μεγάλη ευθύνη.

Η Snap Inc., εταιρεία πίσω από τη δημοφιλή εφαρμογή ανταλλαγής μηνυμάτων Snapchat και κοινή χρήση φωτογραφιών, συμφώνησε να αγοράσει υπηρεσίες cloud της Amazon ύψους 1 δισεκατομμυρίου δολαρίων κατά τα επόμενα πέντε χρόνια, σύμφωνα με νέα καταχώριση στην Επιτροπή Κεφαλαιαγοράς των ΗΠΑ.

Μόλις ιδρύσαμε Visely, το πρόβλημα της πληρωμής του νομοσχεδίου AWS έχει γίνει πολύ πραγματικό. Ακολουθεί μια σύντομη περίληψη του τρόπου με τον οποίο κόβουμε τον λογαριασμό δύο φορές με προσεκτική κατασκευή μιας υποδομής από τις καλύτερες διαθέσιμες επιλογές που παρέχει η AWS.

Τύποι στιγμιότυπων AWS

Το AWS παρέχει μια μεγάλη ποικιλία από διάφορες περιπτώσεις. Για το Visely, απαιτήσαμε VM που θα εκτελούν αποτελεσματικά διακομιστές ιστού για εξυπηρέτηση πελατών, εξυπηρετητές βάσεων δεδομένων (hosting MongoDB) και φορτίο εκμάθησης μηχανών (Cassandra + Spark).

Η επιλογή των καλύτερων διαθέσιμων επιλογών μπορεί εύκολα να συνοψιστεί σε ένα μηνιαίο λογαριασμό μερικών χιλιάδων δολαρίων, το οποίο για μια εκκίνηση που ξεκινάει είναι μια βαριά τιμή για να πληρώσει. Μια κανονική βελτιστοποιημένη περίπτωση υπολογισμού με 4 CPU και 8GB μνήμης RAM μπορεί να κοστίσει μέχρι και $ 125 το μήνα.

Αυτοί είναι οι λόγοι που μας ανάγκασαν να εξετάσουμε πιο προσεκτικά τις περιπτώσεις τύπου Τ2.

T2 στη διάσωση

Οι περιπτώσεις T2 παρέχουν μια βασική απόδοση με την ικανότητα να ξεσπάσουν σε ένα υψηλότερο επίπεδο για μια περίοδο που προέρχεται από τις πιστώσεις που εκχωρούνται στο επιλεγμένο VM.

Οι πιστώσεις και ο ρυθμός κατανάλωσης τους ήταν λίγο κρυφά, αλλά μόλις διαβάσαμε προσεκτικά μέσω των εγγράφων AWS, όλα έγιναν υγιή.

Επιτρέψτε μου να δώσω ένα παράδειγμα. T2 μικρό (με ένα vCPU, 2GB), ξεκινά με 288 πιστώσεις που εκχωρούνται. Η απόδοση της γραμμής βάσης είναι 20% CPU, πράγμα που σημαίνει ότι μόλις περάσετε το κατώτατο όριο του 20%, οι πιστώσεις σας θα αρχίσουν να καίγονται ταχύτερα από ό, τι τους περιμένετε. Πόσο γρήγορα καίγονται; Πολύ γρήγορα, σε 100% χρήση CPU θα καταναλώσετε 288 μονάδες σε περίπου τέσσερις ώρες.

T2 μικρή πιστωτική χρήση

Ακόμα και κάτω από αυτές τις συνθήκες, χρειάζεστε σχεδόν 100% CPU όλη την ώρα. Πολλές νεοσύστατες επιχειρήσεις έχουν προβλέψιμο μοτίβο χρήσης, με μία ή δύο κορυφές (δηλ. Πελάτες της Ανατολικής και της Δυτικής ακτής) που συμβαίνουν καθ 'όλη τη διάρκεια της ημέρας. Αυτή είναι μια ιδανική περίπτωση χρήσης για περιπτώσεις T2, οι οποίες μπορούν να καλύψουν τις κορυφές χρήσης με πιστώσεις και να ανακάμψουν κατά τη διάρκεια της νύχτας. Όλες οι μικροεπιχειρήσεις μας εκτελούνται σε VMs T2, επιτυχώς ανακτώνται σε ώρες εκτός αιχμής.

Λάθη που πρέπει να αποφύγετε όταν χρησιμοποιείτε στιγμιότυπα T2

Μόλις καταναλώσετε όλες τις πιστώσεις σας, το στιγμιότυπό σας θα λειτουργήσει στο βασικό επίπεδο, για το T2 μικρό αυτό είναι 20% CPU. Η διαδικασία ανάκτησης είναι αρκετά αργή (δηλ. 12 μονάδες ανά ώρα για το μικρό T2), επομένως πρέπει να είστε πολύ προσεκτικοί στην επιλογή του τύπου εμφάνισης που χρειάζεστε για την εργασία, έτσι ώστε να μην καταναλώνει ποτέ όλες τις πιστώσεις κατά τις ώρες αιχμής.

Χωρίς πιστωτικές μονάδες και φορτίο μεγαλύτερο από τη γραμμή βάσης, η παρουσία σας θα γίνει ασταθής.

Ops 'έκθεση: τρεις από τις πέντε συμπεριφορές των διακομιστών εφαρμογών είναι λίγο παράξενο (πιστώσεις @devopsreactions)

Το τελευταίο πράγμα που θέλετε είναι να έχετε ένα στιγμιότυπο χωρίς πιστωτικά υπόλοιπα κατά τις ώρες αιχμής. Η μόνη επιλογή σας, σε αυτή την περίπτωση, θα είναι η παροχή ενός νέου και η ανακατεύθυνση του φορτίου προς αυτό. Το έχουμε μάθει με τον σκληρό τρόπο. Παρακολουθήστε προσεκτικά τη χρήση της πίστωσης. Το AWS παρέχει ένα εύχρηστο εργαλείο CloudWatch, το οποίο μπορείτε να ρυθμίσετε ώστε να σας στέλνει ειδοποιήσεις μόλις υπερβείτε ένα καθορισμένο όριο.

Πώς να επιλέξετε τις περιπτώσεις T2 με τον καλύτερο τρόπο

Ξεκινήστε με περιπτώσεις που παρέχουν σαφώς αρκετή ιπποδύναμη για το φορτίο σας. Παρακολουθήστε το για μερικές ημέρες και αν δείτε ένα επίπεδο γράφημα της πιστωτικής χρήσης, είτε αλλάξτε τον τύπο εμφάνισης είτε τοποθετήστε περισσότερες υπηρεσίες σε αυτό.

Το παράδειγμα κάνει πολύ καλό

Αυτό ήταν το βασικό μήνυμα ότι μπορούμε να βάλουμε περισσότερο φορτίο σε περιπτώσεις που είχαν αυτή την καμπύλη της χρήσης πιστώσεων. Η στρατηγική μας ήταν απλή. Μόλις εντοπίσαμε VM που δεν χρησιμοποιήθηκαν, ξεκινήσαμε να αναπτύσσουμε περισσότερες υπηρεσίες χαμηλής κατανάλωσης CPU.

Μετά από ένα μήνα παρακολούθησης και τελειοποίησης, μειώσαμε σχεδόν τον αριθμό των στιγμιότυπων VM που τρέχουν σχεδόν στο μισό.

Σημειώσεις Spot για κλιμάκωση μη κρίσιμων πόρων και φόρτου εργασίας εκτός σύνδεσης

Εκτός από τις περιπτώσεις τύπου T2, η AWS παρέχει επίσης στιγμιαία στιγμιότυπα, τα οποία μπορούν να χρησιμοποιηθούν για να μειώσουν το κόστος από τον μηνιαίο σας λογαριασμό. Η μόνη διαφορά μεταξύ VMs On Demand και Spot Instances είναι ότι αργότερα μπορεί να διακοπεί από το EC2 με δύο λεπτά ειδοποίησης όταν το AWS τα χρειάζεται πίσω.

Μια σκληρή διακοπή (ή χειμερία νάρκης) με ειδοποίηση δύο λεπτών ακούγεται σκληρή, αλλά για εργασίες χωρίς παρτίδες ή για κλιμάκωση κατά παραγγελία, αυτή μπορεί να είναι μια ιδανική λύση.

Εδώ στο nemo.ai, χρησιμοποιούμε το Apache Spark για δύο τύπους εργασιών:

  • offline αναλυτικά στοιχεία για τα ταμπλό των επιχειρήσεων
  • διεξαγωγή συνεργατικού αλγορίθμου φιλτραρίσματος για τον εντοπισμό των πελατών που αγόρασαν επίσης αγόρασαν / είδαν το είδος της σχέσης

Και οι δύο αυτές εργασίες είναι εκτός σύνδεσης και μπορούν να εκτελεστούν σε παρτίδες, τέλειο σενάριο για την κατανομή στιγμιαίων στιγμάτων.

Πώς λειτουργούν τα στιγμιαία στιγμιότυπα;

Το AWS παρέχει έναν εκτενή οδηγό χρήσης σχετικά με τον τρόπο χρήσης στιγμιότυπων στιγμιότυπων. Με απλά λόγια, παρέχετε μια προσφορά τιμής για τον πόρο που θέλετε να χρησιμοποιήσετε. Ο πόρος διατίθεται μόλις η τιμή για αυτό πέσει κάτω από την προσφορά σας.

Θα μπορούσαμε να ζητήσουμε τρεις περιπτώσεις M3 (μνήμης βελτιστοποιημένες) Spark με καθορισμένη μέγιστη τιμή που τρέχει στο CentOS. Μόλις ολοκληρωθεί η αίτηση, το επόμενο βήμα είναι απλά να αναπτύξετε δοχεία Docker με διαμορφωμένους Workers Spark σε αυτό.

Η εργασία δέσμης αρχίζει να εκτελείται διαδοχικά για κάθε έναν από τους πελάτες που έχουμε. Χρειάζεται περίπου μία ώρα για να εκτελεστεί όλη η απαιτούμενη επεξεργασία για όλους τους πελάτες. Κατά τη διάρκεια αυτού του χρονικού διαστήματος, τα στιγμιαία στιγμιότυπα μπορούν να ανακτηθούν με ειδοποίηση διάρκειας δύο λεπτών, η οποία δεν είναι ποτέ πρόβλημα, αφού η εργασία είναι εκτός σύνδεσης και μπορεί να επαναληφθεί για τους πελάτες που έχουν απομείνει μόλις συμπληρωθεί το αίτημα.

Για να συνοψίσω είναι αν θέλετε να οικοδομήσουμε μια εφαρμογή που εκμεταλλεύεται Spot Instances εδώ είναι κορυφαία takeaways σχεδιασμό λογισμικού:

  • παρέχοντας στιγμιότυπα AWS με το TerraForm (ή οποιοδήποτε άλλο εργαλείο αυτοματισμού) για την εκκίνηση του στιγμιότυπου σας με τις απαιτούμενες υπηρεσίες όσο το δυνατόν γρηγορότερα. Η χρήση μιας προσχεδιασμένης εικόνας AMI είναι επίσης μια λύση, αν και αποφασίσαμε να τρέξουμε το Terra Form, αφού είναι απλά ευκολότερο για εμάς.
  • η δουλειά που εκτελείτε στο Spot δεν πρέπει να φοβάται τη διακοπή ή την αδρανοποίηση.
  • η ανάπτυξη των απαιτούμενων εφαρμογών σε Spot Instances θα πρέπει να είναι πλήρως αυτοματοποιημένη, διαφορετικά θα αφιερώσετε πολύτιμο χρόνο στην εγκατάσταση πριν γίνει η χρήση του VM. Η χρήση των εικόνων του Docker μπορεί να είναι η βέλτιστη λύση για αυτό.

Για να επαληθεύσετε τη διαθεσιμότητα στιγμιότυπων στιγμής στην περιοχή σας, μπορείτε να χρησιμοποιήσετε αυτόν τον εύχρηστο πόρο.

Διάφορα έξοδα

Το δίκτυο και η συνεχής αποθήκευση είναι οι δεύτεροι πιο ακριβοί πόροι που έπρεπε να βελτιστοποιήσουμε. Εδώ έχετε λιγότερες επιλογές για να παίξετε και αποφασίσαμε να χρησιμοποιήσουμε SSD για υπηρεσίες που απαιτούν ταχεία επίμονη I / O (δηλαδή, MongoDB, Apache Solr). Οι υπηρεσίες απάτης κάνουν εξαιρετικά την αποθήκευση με μαγνητική κάλυψη.

Όσον αφορά το δίκτυο, υπάρχουν πολύ λίγα που μπορείτε να ρυθμίσετε, αν και σίγουρα πρέπει να δώσετε προσοχή εάν η χρήση του δικτύου σας βρίσκεται εντός των αναμενόμενων ορίων.

Ως εκκίνηση που απαιτούσε πολλαπλά VM για να τρέξει τις υπηρεσίες της, η προσπάθεια βελτιστοποίησης του κόστους αποπληρώθηκε ωραία, εξοικονομώντας μας χρήματα που μπορούσαμε να ξοδέψουμε για άλλα πράγματα.

Εάν σας άρεσε αυτή η ιστορία, μπορείτε να ελέγξετε την άλλη από αυτή τη σειρά

Ένα έτος κατά την εκκίνηση. Πώς ξεκίνησα μια εκκίνηση.