Η AWS CodePipeline είναι μιας πλήρως διαχειριζόμενη υπηρεσίας συνεχούς παράδοσης που διευκολύνει την αυτοματοποίηση των αγωγών εκδόσεων (release pipelines) για γρήγορες και αξιόπιστες ανανεώσεις εφαρμογών και υποδομών. Αυτοματοποιεί τις φάσεις κατασκευής, δομικής και διάταξης της διαδικασίας παραγωγής εκδόσεων όποτε υπάρχει αλλαγή στον κώδικα με βάση το μοντέλο εκδόσεων που ορίζεται από τον χρήστη. Αυτό επιτρέπει την ταχεία και αξιόπιστη παράδοση χαρακτηριστικών και ανανεώσεων. Είναι εύκολη επίσης η ενοποίηση της AWS CodePipeline με υπηρεσίες τρίτων μερών όπως το GitHub ή με ιδιωτικά plugins των χρηστών. Με την υπηρεσία αυτή, η χρέωση πραγματοποιείται με βάση την χρήση. Δεν υπάρχουν προκαταβολικά τέλη ή μακροπρόθεσμες δεσμεύσεις. Τα κυριότερα πλεονεκτήματα και οφέλη της AWS CodePipeline είναι τα ακόλουθα:
- Ταχεία παράδοση: αυτοματοποίηση της διαδικασίας εκδόσεων λογισμικού που επιτρέπει την ταχεία έκδοση νέων χαρακτηριστικών στους πελάτες και την ανάκτηση της αντίστοιχης ανάδρασης (feedback) από αυτούς. Επίσης, η αυτοματοποίηση των φάσεων κατασκευής, δοκιμής και παραγωγής εκδόσεων επιτρέπει την ταχεία και εύκολη δοκιμή για κάθε αλλαγή κώδικα και την σύλληψη σφαλμάτων που είναι μικρά και εύκολα ως προς την διόρθωση. Συνεπώς, δίνεται η δυνατότητα εξασφάλισης της ποιότητας του κώδικα της εφαρμογής ή της υποδομής μέσω της εκτέλεσης κάθε αλλαγής δια μέσου της διαδικασίας σταδιοποίησης (staging) & εκδόσεων.Διαμορφώσιμη ροή εργασίας: είναι δυνατή η μοντελοποίηση των διαφορετικών σταδίων της διαδικασίας έκδοσης λογισμικού μέσω της χρήσης της διεπαφής κονσόλας, της διεπαφής γραμμής εντολών (CLI) της AWS, της AWS CloudFormation ή των AWS SDKs (software development kits). Επιπλέον, υπάρχει δυνατότητα για τον εύκολο προσδιορισμό των δοκιμών προς εκτέλεση και της προσωποποίησης (customization) των βημάτων διάταξης της εφαρμογής και των εξαρτήσεών της.
- Γρήγορη εκκίνηση χρήσης: Είναι δυνατή η άμεση μοντελοποίηση της διαδικασίας έκδοσης λογισμικού. Δεν υπάρχουν εξυπηρετητές προς τροφοδοσία ή εγκατάσταση. Διότι η CodePipeline είναι μια πλήρως διαχειριζόμενη υπηρεσία συνεχούς παράδοσης που συνδέεται με υπάρχοντα εργαλεία και συστήματα.
- Ευκολία ενοποίησης: η AWS CodePipeline μπορεί εύκολα να επεκταθεί ώστε να προσαρμοστεί στις ανάγκες του πελάτη. Μπορούν να χρησιμοποιηθούν από αυτόν προ-κατασκευασμένα plugins ή ιδία plugins σε οποιοδήποτε βήμα της διαδικασίας έκδοσης λογισμικού. Για παράδειγμα, είναι δυνατή η έλξη (pull) του πηγαίου κώδικα από το GitHub, η χρήση ενός επιτόπιου εξυπηρετητή αυτοματοποίησης Jenkins ή το πέρασμα πληροφορίας διάταξης σε ιδιωτικό ταμπλό (dashboard) λειτουργιών.
Υπάρχουν διάφορες επιτυχείς μελέτες περιπτώσεων που αφορούν επιχειρήσεις, οι οποίες χρησιμοποιούν την AWS CodePipeline. Θα αναφερθεί παρακάτω μια από αυτές.
Lululemon Athletica
Είναι μια Καναδέζικη επιχείρηση που πουλάει ενδύματα εμπνευσμένα από το Yoga και άλλα είδη ρουχισμού σε 350 περιοχές παγκοσμίως. Η επιχείρηση αυτή μπορεί να στήσει και να εκτελέσει τα περιβάλλοντά της ανάπτυξης και δοκιμής σε ορισμένα λεπτά αντί για ημέρες μέσω της χρήσης του νέφους της Amazon (AWS Cloud).
Πριν από ορισμένα χρόνια, η lululemon αποφάσισε να προσφέρει περισσότερες υπηρεσίες καθώς και να προωθήσει νέες εφαρμογές και χαρακτηριστικά πιο γρήγορα. Όμως, η επιχείρηση είχε περιορισμένη ικανότητα στην γρήγορη ανάπτυξη νέων εφαρμογών λόγω του συστεγασμένου περιβάλλοντος ΤΠ της. Για παράδειγμα, χρειαζόταν πολλές ημέρες για το στήσιμο και εκτέλεση περιβαλλόντων ανάπτυξης για την δοκιμή νέων χαρακτηριστικών. Επιπλέον, η lululemon επιθυμούσε να εξορθολογήσει τις διαδικασίες ανάπτυξης για να υποστηρίξει την νέα εστίαση σε συνεχή ενοποίηση και παράδοση (CI/CD).
Η lululemon επέλεξε την Amazon Web Services (AWS) ως την πλατφόρμα για τα περιβάλλοντα ανάπτυξης, δοκιμής και παραγωγής της διότι η AWS είναι ένας αξιόπιστος πάροχος νέφους με μια μεγάλη γκάμα από υπηρεσίες που επιτρέπει στην lululemon να εστιάσει στην ανάπτυξη της δικής της βάσης κώδικα. Οπότε, η lululemon αποφάσισε να χρησιμοποιήσει μια ποικιλία από AWS υπηρεσίες για να κατασκευάσει ένα πλήρως αυτοματοποιημένο σύστημα CI/CD. Συγκεκριμένα, χρησιμοποιούνται AWS CloudFormation πρότυπα (templates) για τον ορισμό ολόκληρου του περιβάλλοντος ανάπτυξης. Επίσης, αμετάβλητα (immutable) συστατικά μέρη αποθηκεύονται κατανεμημένα με την χρήση της υπηρεσίας Amazon Simple Storage Service (Amazon S3). Έπειτα, διατάσσονται σε εξυπηρετητές μέσω της AWS CodePipeline. Ακόμη, τα συστατικά μέρη αυτά διατάσσονται και στο AWS Elastic Beanstalk, μια υπηρεσία για την διάταξη και κλιμάκωση εφαρμογών και υπηρεσιών ιστού. Τέλος, χρησιμοποιείται η υπηρεσία Amazon Cognito για την δημιουργία μοναδικών αναγνωριστικών χρηστών και την αυθεντικοποίησή τους μέσω της χρήσης εσωτερικών δεξαμενών χρηστών (internal user pools).
Μέσω της χρήσης των AWS υπηρεσιών η lululemon μείωσε τον χρόνο ανάπτυξης. Για παράδειγμα, η κατασκευή ενός λογαριασμού παραγωγής παίρνει ορισμένα λεπτά αντί για δύο ημέρες. Αυτό σημαίνει πως είναι δυνατή η εκκίνηση έργων μικρής κλίμακας που κοστίζουν λίγο και παίρνουν λίγο χρόνο ώστε να στηθούν. Με αυτή την ευκινησία, είναι δυνατός ο πειραματισμός και η επιλογή των καλύτερων λύσεων. Επιπλέον, είναι δυνατή η προώθηση νέων χαρακτηριστικών και εφαρμογών πολύ πιο γρήγορα από πριν. Η διαχειρισιμότητα των περιβαλλόντων της επιχείρησης έχει επίσης επεκταθεί.
Ουσιαστικά, ένα περιβάλλον ορίζεται σε ένα αρχείο AWS CloudFormation και οποιαδήποτε σχετική αλλαγή πραγματοποιείται μόνο σε αυτό το αρχείο. Να τονιστεί εδώ πως εφόσον μιλάμε για αρχείο αυτό μπορεί να περάσει και στον πηγαίο έλεγχο (source control). Ακόμη, η lululemon έχει βελτιώσει την διαφάνεια του συστήματος ανάπτυξής της. Διότι υπάρχει η σχετική οπτικοποίηση του αγωγού ανάπτυξης καθώς αυτός εκτελείται με αυτοματοποιημένο τρόπο. Τέλος, η επιχείρηση μπορεί να κατασκευάσει ψηφιακά εργαλεία που επιτρέπουν μια καλύτερη σύμπλεξη (engagement) των τοπικών κοινοτήτων. Ως αποτέλεσμα, οι εργαζόμενοι της lululemon μπορούν εύκολα να κατασκευάσουν δυναμικό περιεχόμενο που ευθυγραμμίζεται καλύτερα με τα ενδιαφέροντα των καταναλωτών. Μάλιστα, λόγω αυτής της επιτυχίας, η lululemon σχεδιάσει να δημιουργήσει και να εκτελέσει νέες εφαρμογές στην πλατφόρμα AWS.
Πηγές: