portaldacalheta.pt
  • Κύριος
  • Επιστήμη Δεδομένων Και Βάσεις Δεδομένων
  • Κατανεμημένες Ομάδες
  • Ευκίνητο Ταλέντο
  • Κερδοφορία & Αποδοτικότητα
Τεχνολογία

Zero Downtime Jenkins Συνεχής Ανάπτυξη με Terraform στο AWS



Στον σημερινό κόσμο του Διαδικτύου, όπου κυριολεκτικά τα πάντα πρέπει να είναι όλο το 24ωρο, η αξιοπιστία είναι βασική. Αυτό μεταφράζεται σε σχεδόν μηδενικό χρόνο διακοπής λειτουργίας για τους ιστότοπούς σας, αποφεύγοντας τη φοβερή σελίδα σφάλματος 'Not found: 404' ή άλλες διακοπές υπηρεσίας κατά την κυκλοφορία της νεότερης κυκλοφορίας σας.

Ας υποθέσουμε ότι έχετε δημιουργήσει μια νέα εφαρμογή για τον πελάτη σας, ή ίσως τον εαυτό σας και έχετε καταφέρει να αποκτήσετε μια καλή βάση χρηστών που της αρέσει η εφαρμογή σας. Συλλέξατε σχόλια από τους χρήστες σας και μεταβείτε στους προγραμματιστές σας και τους ζητάτε να δημιουργήσουν νέες λειτουργίες και να προετοιμάσουν την εφαρμογή για ανάπτυξη. Με αυτό το έτοιμο, μπορείτε είτε να σταματήσετε ολόκληρη την εφαρμογή και να αναπτύξετε τη νέα έκδοση είτε να δημιουργήσετε έναν αγωγό ανάπτυξης CI / CD μηδενικού χρόνου διακοπής που θα έκανε όλη την κουραστική δουλειά να ωθήσει μια νέα έκδοση στους χρήστες χωρίς χειροκίνητη παρέμβαση.



Σε αυτό το άρθρο, θα μιλήσουμε ακριβώς για το τελευταίο, πώς μπορούμε να έχουμε έναν αγωγό συνεχούς ανάπτυξης μιας τριεπίπεδης εφαρμογής ιστού ενσωματωμένη στο Node.js στο AWS Cloud χρησιμοποιώντας το Terraform ως ενορχηστρωτή υποδομής. Θα χρησιμοποιούμε Τζένκινς για το τμήμα συνεχούς ανάπτυξης και το Bitbucket να φιλοξενεί τη βάση δεδομένων μας.



Αποθήκη κώδικα

Θα χρησιμοποιήσουμε μια επίδειξη τριών επιπέδων διαδικτυακή εφαρμογή για την οποία μπορείτε να βρείτε τον κωδικό εδώ .



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

Η δομή του repo έχει ως εξής:



  • ΦΩΤΙΑ: Κωδικός για το επίπεδο API
  • Ιστός: Κωδικός για το επίπεδο ιστού
  • Terraform: Κωδικός για ενορχήστρωση υποδομής χρησιμοποιώντας το Terraform
  • Τζένκινς: Κωδικός για ενορχηστρωτή υποδομής για διακομιστή Jenkins που χρησιμοποιείται για τον αγωγό CI / CD.

Τώρα που καταλαβαίνουμε τι πρέπει να αναπτύξουμε, ας συζητήσουμε πράγματα που πρέπει να κάνουμε για να αναπτύξουμε αυτήν την εφαρμογή στο AWS και στη συνέχεια θα μιλήσουμε για το πώς να κάνουμε αυτό το μέρος του αγωγού CI / CD.

Εικόνες ψησίματος

Εφόσον χρησιμοποιούμε το Terraform για ενορχηστρωτή υποδομής, είναι πιο λογικό να έχουμε προκατασκευασμένες εικόνες για κάθε επίπεδο ή εφαρμογή που θέλετε να αναπτύξετε. Και για αυτό, θα χρησιμοποιούσαμε ένα άλλο προϊόν από την Hashicorp - δηλαδή, Packer.



Το Packer είναι ένα εργαλείο ανοιχτού κώδικα που βοηθά στη δημιουργία ενός Amazon Machine Image ή AMI, το οποίο θα χρησιμοποιηθεί για ανάπτυξη σε AWS. Μπορεί να χρησιμοποιηθεί για τη δημιουργία εικόνων για διαφορετικές πλατφόρμες όπως EC2, VirtualBox, VMware και άλλα.

Ακολουθεί ένα απόσπασμα του τρόπου με τον οποίο το αρχείο διαμόρφωσης Packer (terraform/packer-ami-api.json) χρησιμοποιείται για τη δημιουργία ενός AMI για το επίπεδο API.



{ 'builders': [{ 'type': 'amazon-ebs', 'region': 'eu-west-1', 'source_ami': 'ami-844e0bf7', 'instance_type': 't2.micro', 'ssh_username': 'ubuntu', 'ami_name': 'api-instance {{timestamp}}' }], 'provisioners': [ { 'type': 'shell', 'inline': ['mkdir api', 'sudo apt-get update', 'sudo apt-get -y install npm nodejs-legacy'], 'pause_before': '10s' }, { 'type': 'file', 'source' : '../api/', 'destination' : 'api' }, { 'type': 'shell', 'inline': ['cd api', 'npm install'], 'pause_before': '10s' } ] }

Και πρέπει να εκτελέσετε την ακόλουθη εντολή για να δημιουργήσετε το AMI:

packer build -machine-readable packer-ami-api.json

Θα εκτελέσουμε αυτήν την εντολή από το Jenkins build αργότερα σε αυτό το άρθρο. Με παρόμοιο τρόπο, θα χρησιμοποιήσουμε και το αρχείο διαμόρφωσης Packer (terraform/packer-ami-web.json) για το επίπεδο ιστού.



Ας δούμε το παραπάνω αρχείο διαμόρφωσης Packer και ας κατανοήσουμε τι προσπαθεί να κάνει.

  1. Όπως αναφέρθηκε προηγουμένως, το Packer μπορεί να χρησιμοποιηθεί για τη δημιουργία εικόνων για πολλές πλατφόρμες , και δεδομένου ότι αναπτύσσουμε την εφαρμογή μας στο AWS, θα χρησιμοποιούσαμε το πρόγραμμα δημιουργίας 'amazon-ebs', καθώς αυτό είναι το πιο εύκολο εργαλείο δημιουργίας.
  2. Το δεύτερο μέρος του config παίρνει μια λίστα παροχέων που μοιάζουν περισσότερο με σενάρια ή μπλοκ κώδικα που μπορείτε να χρησιμοποιήσετε για να διαμορφώσετε την εικόνα σας.
    • Βήμα 1 εκτελεί έναν παροχέα κελύφους για να δημιουργήσει ένα φάκελο API και να εγκαταστήσει το Node.js στην εικόνα χρησιμοποιώντας το inline ιδιότητα, το οποίο είναι ένα σύνολο εντολών που θέλετε να εκτελέσετε.
    • Βήμα 2 εκτελεί έναν παροχέα αρχείων για να αντιγράψει τον πηγαίο κώδικα από τον φάκελο API στην παρουσία.
    • Βήμα 3 εκτελεί ξανά ένα κέλυφος προμηθευτή, αλλά αυτή τη φορά χρησιμοποιεί μια ιδιότητα σεναρίου για να καθορίσει ένα αρχείο (terraform / scripts / install_api_software.sh) με τις εντολές που πρέπει να εκτελεστούν.
    • Βήμα 4 αντιγράφει ένα αρχείο διαμόρφωσης στην παρουσία που απαιτείται για το Cloudwatch, το οποίο είναι εγκατεστημένο στο επόμενο βήμα.
    • Βήμα 5 εκτελεί έναν παροχέα κελύφους για να εγκαταστήσει τον παράγοντα AWS Cloudwatch. Η είσοδος σε αυτήν την εντολή θα ήταν το αρχείο config που αντιγράφηκε στο προηγούμενο βήμα. Θα μιλήσουμε για το Cloudwatch λεπτομερώς αργότερα στο άρθρο.

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



Ρύθμιση μιας συνεχούς ανάπτυξης Jenkins

Στη συνέχεια, θα εξετάσουμε τη δημιουργία ενός διακομιστή Jenkins που θα χρησιμοποιηθεί για τον αγωγό CI / CD. Θα χρησιμοποιήσουμε το Terraform και το AWS για να το ρυθμίσουμε επίσης.

Ο κωδικός Terraform για τη ρύθμιση του Jenkins βρίσκεται μέσα στο φάκελο jenkins/setup. Ας δούμε μερικά από τα ενδιαφέροντα πράγματα σχετικά με αυτήν τη ρύθμιση.

  1. Διαπιστευτήρια AWS: Μπορείτε είτε να παρέχετε το αναγνωριστικό κλειδιού πρόσβασης AWS και το μυστικό κλειδί πρόσβασης στον πάροχο Terraform AWS (instance.tf) ή μπορείτε να δώσετε τη θέση του αρχείου διαπιστευτηρίων στην ιδιοκτησία shared_credentials_file στον πάροχο AWS.
  2. Ρόλος IAM: Δεδομένου ότι θα εκτελούμε Packer και Terraform από τον διακομιστή Jenkins, θα έχουν πρόσβαση σε υπηρεσίες S3, EC2, RDS, IAM, load balancing και autoscaling στο AWS. Έτσι είτε παρέχουμε τα διαπιστευτήριά μας στο Jenkins για Packer & Terraform για πρόσβαση σε αυτές τις υπηρεσίες είτε μπορούμε να δημιουργήσουμε ένα προφίλ IAM (iam.tf), χρησιμοποιώντας το οποίο θα δημιουργήσουμε μια παρουσία Jenkins.
  3. Κατάσταση Terraform: Το Terraform πρέπει να διατηρήσει την κατάσταση της υποδομής κάπου σε ένα αρχείο και, με το S3 (backend.tf), θα μπορούσατε απλώς να το διατηρήσετε εκεί, ώστε να μπορείτε να συνεργαστείτε με άλλους συναδέλφους και οποιοσδήποτε μπορεί να αλλάξει και να αναπτύξει αφού το κράτος είναι διατηρείται σε απομακρυσμένη τοποθεσία.
  4. Ζευγάρι δημόσιου / ιδιωτικού κλειδιού: Θα χρειαστεί να ανεβάσετε το δημόσιο κλειδί του ζεύγους κλειδιών σας μαζί με την παρουσία, ώστε να μπορείτε να μεταβείτε στην παρουσία Jenkins μόλις τελειώσει. Έχουμε ορίσει ένα aws_key_pair πόρος (key.tf) στον οποίο καθορίζετε τη θέση του δημόσιου κλειδιού σας χρησιμοποιώντας μεταβλητές Terraform.

Βήματα για τη δημιουργία του Jenkins:

Βήμα 1: Για να διατηρήσετε την απομακρυσμένη κατάσταση του Terraform, θα πρέπει να δημιουργήσετε χειροκίνητα έναν κάδο στο S3 που μπορεί να χρησιμοποιηθεί από την Terraform. Αυτό θα ήταν το μόνο βήμα έξω από το Terraform. Βεβαιωθείτε ότι έχετε εκτελέσει AWS configure πριν εκτελέσετε την παρακάτω εντολή για να καθορίσετε τα διαπιστευτήριά σας AWS.

aws s3api create-bucket --bucket node-aws-jenkins-terraform --region eu-west-1 --create-bucket-configuration LocationConstraint=eu-west-1

Βήμα 2: Εκτέλεση terraform init. Αυτό θα προετοιμάσει την κατάσταση και θα το ρυθμίσει ώστε να αποθηκεύεται στο S3 και θα κατεβάζει την προσθήκη του παρόχου AWS.

διαφορά στην εταιρεία s και c

Βήμα 3: Εκτέλεση terraform apply. Αυτό θα ελέγξει όλο τον κώδικα Terraform και θα δημιουργήσει ένα σχέδιο και θα δείξει πόσους πόρους θα δημιουργηθούν μετά την ολοκλήρωση αυτού του βήματος.

Βήμα 4: Πληκτρολογήστε yes και, στη συνέχεια, το προηγούμενο βήμα θα ξεκινήσει τη δημιουργία όλων των πόρων. Μετά την ολοκλήρωση της εντολής, θα λάβετε τη δημόσια διεύθυνση IP του διακομιστή Jenkins.

Βήμα 5: Μεταβείτε στον διακομιστή Jenkins, χρησιμοποιώντας το ιδιωτικό σας κλειδί. ubuntu είναι το προεπιλεγμένο όνομα χρήστη για παρουσίες που υποστηρίζονται από AWS EBS. Χρησιμοποιήστε τη διεύθυνση IP που επιστράφηκε από το terraform apply εντολή.

ssh -i mykey [email protected]

Βήμα 6: Ξεκινήστε το περιβάλλον εργασίας χρήστη του Jenkins μεταβαίνοντας στο http://34.245.4.73:8080. Ο κωδικός πρόσβασης μπορεί να βρεθεί στο /var/lib/jenkins/secrets/initialAdminPassword.

Βήμα 7: Επιλέξτε 'Εγκατάσταση προτεινόμενων προσθηκών' και Δημιουργήστε έναν χρήστη διαχειριστή για τη Jenkins.

Ρύθμιση του αγωγού CI μεταξύ Jenkins και Bitbucket

  1. Για αυτό, πρέπει να εγκαταστήσουμε την προσθήκη Bitbucket στο Jenkins. Παω σε Διαχείριση Jenkins → Διαχείριση προσθηκών και από Διαθέσιμα πρόσθετα εγκαταστήστε το Bitbucket συνδέω.
  2. Από την πλευρά repo του Bitbucket, μεταβείτε στο Ρυθμίσεις → Webhooks , προσθέστε ένα νέο webhook. Αυτό το άγκιστρο θα στείλει όλες τις αλλαγές στο αποθετήριο στη Jenkins και αυτό θα ενεργοποιήσει τους αγωγούς.

Jenkins Pipeline για ψήσιμο / κατασκευή εικόνων

  1. Το επόμενο βήμα θα είναι η δημιουργία αγωγών στο Jenkins.
  2. Ο πρώτος αγωγός θα είναι ένα έργο Freestyle που θα χρησιμοποιηθεί για την κατασκευή του AMI της εφαρμογής χρησιμοποιώντας το Packer.
  3. Πρέπει να καθορίσετε τα διαπιστευτήρια και τη διεύθυνση URL για το αποθετήριο Bitbucket.
  4. Καθορίστε τη σκανδάλη Build.
  5. Προσθέστε δύο βήματα κατασκευής, ένα για τη δημιουργία AMI για λειτουργική μονάδα εφαρμογών και άλλα για τη δημιουργία AMI για τη λειτουργική μονάδα ιστού.
  6. Μόλις γίνει αυτό, μπορείτε να αποθηκεύσετε το έργο Jenkins και τώρα, όταν ωθείτε οτιδήποτε στο αποθετήριο Bitbucket, θα ενεργοποιήσει μια νέα έκδοση στο Jenkins που θα δημιουργούσε το AMI και θα σπρώξει ένα αρχείο Terraform που περιέχει τον αριθμό AMI αυτής της εικόνας στο Κάδος S3 που μπορείτε να δείτε από τις δύο τελευταίες γραμμές στο βήμα κατασκευής.
echo 'variable 'WEB_INSTANCE_AMI' { default = ''${AMI_ID_WEB}'' }' > amivar_web.tf aws s3 cp amivar_web.tf s3://node-aws-jenkins-terraform/amivar_web.tf

Jenkins Pipeline to Trigger Terraform Script

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

  1. Δημιουργούμε ένα άλλο ελεύθερο έργο Jenkins, nodejs-terraform, το οποίο θα εκτελούσε τον κωδικό Terraform για την ανάπτυξη της εφαρμογής.
  2. Αρχικά θα δημιουργήσουμε διαπιστευτήρια τύπου 'μυστικού κειμένου' στον τομέα των καθολικών διαπιστευτηρίων, το οποίο θα χρησιμοποιηθεί ως είσοδος στο σενάριο Terraform. Δεδομένου ότι δεν θέλουμε να κωδικοποιήσουμε τον κωδικό πρόσβασης για την υπηρεσία RDS εντός των Terraform και Git, μεταβιβάζουμε αυτήν την ιδιότητα χρησιμοποιώντας διαπιστευτήρια Jenkins.
  3. Πρέπει να ορίσετε τα διαπιστευτήρια και τη διεύθυνση URL παρόμοια με το άλλο έργο.
  4. Στην ενότητα build trigger, θα συνδέσουμε αυτό το έργο με το άλλο κατά τρόπο ώστε αυτό το έργο να ξεκινά όταν ολοκληρωθεί το προηγούμενο.
  5. Τότε θα μπορούσαμε να διαμορφώσουμε τα διαπιστευτήρια που προσθέσαμε νωρίτερα στο έργο χρησιμοποιώντας δεσμεύσεις, οπότε είναι διαθέσιμο στο βήμα κατασκευής.
  6. Τώρα είμαστε έτοιμοι να προσθέσουμε ένα βήμα κατασκευής, το οποίο θα κατεβάσει τα αρχεία σεναρίων Terraform (amivar_api.tf και amivar_web.tf) που μεταφορτώθηκαν στο S3 από το προηγούμενο έργο και στη συνέχεια εκτελέσαμε τον κώδικα Terraform για να δημιουργήσουμε ολόκληρη την εφαρμογή AWS.

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

Terraform Zero Downtime Config για AWS

Τώρα ας συζητήσουμε τι είναι στον κώδικα Terraform που κάνει αυτόν τον αγωγό να αναπτύξει τον κώδικα με μηδενικό χρόνο διακοπής λειτουργίας.

Το πρώτο πράγμα είναι ότι το Terraform τα παρέχει μπλοκ διαμόρφωσης κύκλου ζωής Για πόροι εντός του οποίου έχετε μια επιλογή create_before_destroy ως σημαία που κυριολεκτικά σημαίνει ότι η Terraform πρέπει να δημιουργήσει έναν νέο πόρο του ίδιου τύπου πριν καταστρέψει τον τρέχοντα πόρο.

Τώρα εκμεταλλευόμαστε αυτήν τη δυνατότητα στο aws_autoscaling_group και aws_launch_configuration πόροι. Λοιπόν aws_launch_configuration διαμορφώνει ποιος τύπος παρουσίας EC2 πρέπει να παρέχεται και πώς εγκαθιστούμε λογισμικό σε αυτήν την παρουσία και το aws_autoscaling_group ο πόρος παρέχει μια ομάδα αυτόματης κλιμάκωσης AWS.

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

Η Terraform χειρίζεται αυτόν τον περιορισμό παρέχοντας ένα name_prefix ιδιοκτησία στο aws_launch_configuration πόρος. Μόλις οριστεί αυτή η ιδιότητα, το Terraform θα προσθέσει ένα μοναδικό επίθημα σε όλα τα aws_launch_configuration πόροι και στη συνέχεια μπορείτε να χρησιμοποιήσετε αυτό το μοναδικό όνομα για να δημιουργήσετε ένα aws_autoscaling_group πόρος.

Μπορείτε να ελέγξετε τον κωδικό για όλα τα παραπάνω στο terraform/autoscaling-api.tf

resource 'aws_launch_configuration' 'api-launchconfig' { name_prefix = 'api-launchconfig-' image_id = '${var.API_INSTANCE_AMI}' instance_type = 't2.micro' security_groups = ['${aws_security_group.api-instance.id}'] user_data = '${data.template_file.api-shell-script.rendered}' iam_instance_profile = '${aws_iam_instance_profile.CloudWatchAgentServerRole-instanceprofile.name}' connection { user = '${var.INSTANCE_USERNAME}' private_key = '${file('${var.PATH_TO_PRIVATE_KEY}')}' } lifecycle { create_before_destroy = true } } resource 'aws_autoscaling_group' 'api-autoscaling' { name = '${aws_launch_configuration.api-launchconfig.name}-asg' vpc_zone_identifier = ['${aws_subnet.main-public-1.id}'] launch_configuration = '${aws_launch_configuration.api-launchconfig.name}' min_size = 2 max_size = 2 health_check_grace_period = 300 health_check_type = 'ELB' load_balancers = ['${aws_elb.api-elb.name}'] force_delete = true lifecycle { create_before_destroy = true } tag { key = 'Name' value = 'api ec2 instance' propagate_at_launch = true } }

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

Για να λύσετε αυτό το πρόβλημα, aws_launch_configuration έχει μια ιδιότητα user_data που υποστηρίζει την εγγενή αυτόματη κλιμάκωση AWS user_data ιδιότητα χρησιμοποιώντας την οποία μπορείτε να μεταβιβάσετε οποιοδήποτε σενάριο θέλετε να εκτελέσετε κατά την εκκίνηση νέων παρουσιών ως μέρος της ομάδας αυτόματης κλιμάκωσης. Στο παράδειγμά μας, παρακολουθούμε το αρχείο καταγραφής του διακομιστή εφαρμογών και περιμένουμε να φτάσει το μήνυμα εκκίνησης. Μπορείτε επίσης να ελέγξετε τον διακομιστή HTTP και να δείτε πότε είναι ενεργοποιημένοι.

until tail /var/log/syslog | grep 'node ./bin/www' > /dev/null; do sleep 5; done

Μαζί με αυτό, μπορείτε επίσης να ενεργοποιήσετε έναν έλεγχο ELB στο aws_autoscaling_group επίπεδο πόρου, το οποίο θα διασφαλίσει ότι η νέα παρουσία έχει προστεθεί για να περάσει τον έλεγχο ELB προτού η Terraform καταστρέψει τις παλιές εμφανίσεις. Έτσι φαίνεται ο έλεγχος ELB για επίπεδο API. ελέγχει για το /api/status τελικό σημείο για να επιστρέψετε την επιτυχία.

πώς να διορθώσετε διαρροές μνήμης στη java
resource 'aws_elb' 'api-elb' { name = 'api-elb' subnets = ['${aws_subnet.main-public-1.id}'] security_groups = ['${aws_security_group.elb-securitygroup.id}'] listener { instance_port = '${var.API_PORT}' instance_protocol = 'http' lb_port = 80 lb_protocol = 'http' } health_check { healthy_threshold = 2 unhealthy_threshold = 2 timeout = 3 target = 'HTTP:${var.API_PORT}/api/status' interval = 30 } cross_zone_load_balancing = true connection_draining = true connection_draining_timeout = 400 tags { Name = 'my-elb' } }

Περίληψη και επόμενα βήματα

Αυτό μας φέρνει στο τέλος αυτού του άρθρου. Ας ελπίσουμε ότι, έως τώρα, είτε έχετε ήδη αναπτύξει την εφαρμογή σας και εκτελείτε με έναν αγωγό CI / CD μηδενικού χρόνου διακοπής χρησιμοποιώντας τις βέλτιστες πρακτικές ανάπτυξης του Jenkins και Terraform ή είστε λίγο πιο άνετοι να εξερευνήσετε αυτήν την περιοχή και να κάνετε τις αναπτύξεις σας να χρειάζονται τόσο μικρή χειροκίνητη παρέμβαση όσο δυνατόν.

Σε αυτό το άρθρο, η στρατηγική ανάπτυξης που χρησιμοποιείται ονομάζεται ανάπτυξη Blue-Green όπου έχουμε μια τρέχουσα εγκατάσταση (Blue) η οποία λαμβάνει ζωντανή κίνηση ενώ αναπτύσσουμε και δοκιμάζουμε τη νέα έκδοση (Green) και στη συνέχεια τις αντικαθιστούμε μόλις η νέα έκδοση είναι όλα έτοιμα. Εκτός από αυτήν τη στρατηγική, υπάρχουν και άλλοι τρόποι ανάπτυξης της εφαρμογής σας, η οποία εξηγείται όμορφα σε αυτό το άρθρο, Εισαγωγή στις στρατηγικές ανάπτυξης . Η προσαρμογή μιας άλλης στρατηγικής είναι τώρα τόσο απλή όσο η διαμόρφωση του αγωγού Jenkins.

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

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

Αν σας ενδιαφέρει να μάθετε περισσότερα σχετικά με το πώς λειτουργεί το Terraform και πώς μπορείτε να το αναπτύξετε στο AWS χρησιμοποιώντας την τεχνολογία, προτείνω Terraform AWS Cloud: Διαχείριση Sane Infrastructure όπου ο συνάδελφός σας ApeeScapeer Radosław Szalski εξηγεί την Terraform και, στη συνέχεια, σας δείχνει τα βήματα που απαιτούνται για να διαμορφώσετε μια εγκατάσταση Terraform πολλαπλών περιβαλλόντων και έτοιμων για παραγωγή για μια ομάδα

Σχετίζεται με: Terraform εναντίον CloudFormation: Ο οριστικός οδηγός

Κατανόηση των βασικών

Τι είναι το Terraform;

Το Terraform είναι ένα εργαλείο που διευκολύνει τη σύνταξη κώδικα υποδομής ελεγχόμενης έκδοσης. Μπορείτε να το χρησιμοποιήσετε για να ενορχηστρώσετε την υποδομή σε περισσότερους από 100 διαφορετικούς παρόχους υπηρεσιών όπως AWS, Alicoud, GCP, Azure, OpenStack και πολλά άλλα.

Τι είναι το CI / CD και ποια είναι τα οφέλη του;

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

Ποιες είναι οι διαφορετικές στρατηγικές ανάπτυξης;

Ανάλογα με το προϊόν σας και πώς είναι η τεχνική εφαρμογή σας, μπορείτε να επιλέξετε να κάνετε μια κυλιόμενη στρατηγική, να δημιουργήσετε ξανά μια στρατηγική, μπλε-πράσινο, δοκιμές A / B, ανάπτυξη καναρινιών ή στρατηγική σκιών.

Τι είναι το Packer;

Το Packer είναι ένα εργαλείο που διευκολύνει τη δημιουργία εικόνων μηχανών για διαφορετικές πλατφόρμες όπως AWS EC2, Virtual Box και VMWare.

Τι μπορείτε να κάνετε με τη Jenkins;

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

Είναι το Terraform μια γλώσσα;

Όχι. Το Terraform είναι ένα εργαλείο, το οποίο με τη σειρά του χρησιμοποιεί τη γλώσσα διαμόρφωσης Hashicorp (HCL) για να περιγράψει την υποδομή σας ως κωδικό. Το HCL είναι μια δηλωτική γλώσσα, που ορίζει την επιθυμητή κατάσταση και όχι τα βήματα που χρειάζονται για να είναι εκεί.

Γνωριμία με τους Έλληνες: Ο πλήρης οδηγός για τις τιμές επιλογών

Διαδικασίες Χρηματοδότησης

Γνωριμία με τους Έλληνες: Ο πλήρης οδηγός για τις τιμές επιλογών
Επιχειρηματικός αναλυτής - Επιχειρηματική ευφυΐα & Analytics

Επιχειρηματικός αναλυτής - Επιχειρηματική ευφυΐα & Analytics

Αλλα

Δημοφιλείς Αναρτήσεις
Πώς να επιλέξετε το καλύτερο πλαίσιο Front-End
Πώς να επιλέξετε το καλύτερο πλαίσιο Front-End
Χρειάζεστε έναν ήρωα: Ο υπεύθυνος έργου
Χρειάζεστε έναν ήρωα: Ο υπεύθυνος έργου
Πώς να βελτιώσετε την απόδοση της εφαρμογής ASP.NET στο Web Farm με προσωρινή αποθήκευση
Πώς να βελτιώσετε την απόδοση της εφαρμογής ASP.NET στο Web Farm με προσωρινή αποθήκευση
Οι δοκιμασμένοι και αληθινοί νόμοι του UX (με Infographic)
Οι δοκιμασμένοι και αληθινοί νόμοι του UX (με Infographic)
Ανώτερος συνεργάτης πελάτη, υγειονομική περίθαλψη και βιοεπιστήμες
Ανώτερος συνεργάτης πελάτη, υγειονομική περίθαλψη και βιοεπιστήμες
 
Η άνοδος των αυτοματοποιημένων συναλλαγών: Μηχανές που εμπορεύονται το S&P 500
Η άνοδος των αυτοματοποιημένων συναλλαγών: Μηχανές που εμπορεύονται το S&P 500
10 πιο κοινές ευπάθειες ασφαλείας στον Ιστό
10 πιο κοινές ευπάθειες ασφαλείας στον Ιστό
Σκέψεις για τη συγκέντρωση του ιδιωτικού σας αμοιβαίου κεφαλαίου
Σκέψεις για τη συγκέντρωση του ιδιωτικού σας αμοιβαίου κεφαλαίου
Διευθυντής έργου και διαχείρισης προϊόντων
Διευθυντής έργου και διαχείρισης προϊόντων
Η σημασία της διατήρησης πελατών - μια εμπειρική μελέτη
Η σημασία της διατήρησης πελατών - μια εμπειρική μελέτη
Δημοφιλείς Αναρτήσεις
  • adobe experience design vs σκίτσο
  • εργολάβος ωριαία αμοιβή σε μισθό
  • πώς να αποκτήσετε το power pivot
  • Οι επιχειρήσεις αποφασίζουν πόσα θα επενδύσουν συγκρίνοντας το ποσοστό απόδοσης των έργων τους με
  • γραφικό σχέδιο εναντίον ψηφιακού σχεδιασμού
Κατηγορίες
  • Επιστήμη Δεδομένων Και Βάσεις Δεδομένων
  • Κατανεμημένες Ομάδες
  • Ευκίνητο Ταλέντο
  • Κερδοφορία & Αποδοτικότητα
  • © 2022 | Ολα Τα Δικαιώματα Διατηρούνται

    portaldacalheta.pt