XII. Διεργασίες διαχείρισης
Εκτέλεση εργασιών διαχείρισης ως διεργασίες μια και έξω
Ο σχηματισμός διεργασιών (process formation) είναι η συστοιχία των διεργασιών που κάνουν τη συνήθη εργασία της εφαρμογής (όπως να χειρίζονται αιτήσεις ιστού) καθώς τρέχει. Ξεχωριστά, οι προγραμματιστές θα θέλουν συχνά να κάνουν διαχειριστικές εργασίες ή εργασίες συντήρησης μια και έξω, όπως:
- Να τρέξουν αλλαγές στη βάση δεδομένων (database migrations) (π.χ.
manage.py migrate
στο Django,rake db:migrate
στο Rails). - Να τρέξουν μια κονσόλα (επίσης γνωστή ως κέλυφος REPL) για να εκτελέσουν οποιοδήποτε κώδικα ή να επιθεωρήσουν τα μοντέλα της εφαρμογής σε σχέση με μια ζωντανή βάση δεδομένων. Οι περισσότερες γλώσσες προγραμματισμού προσφέρουν ένα REPL μέσω της εκτέλεσης του διερμηνέα χωρίς άλλα ορίσματα (π.χ.
python
ήperl
) ή σε ορισμένες περιπτώσεις έχουν μια ξεχωριστή εντολή (π.χ.irb
για τη Ruby,rails console
για το Rails). - Να τρέξουν σενάρια εντολών μια και έξω τα οποία είναι εισηγμένα στο αποθετήριο της εφαρμογής (π.χ.
php scripts/fix_bad_records.php
).
Οι διεργασίες διαχείρισης μια και έξω θα πρέπει να εκτελούνται σε ένα πανομοιότυπο περιβάλλον όπως το κανονικό περιβάλλον των διεργασιών μακράς διάρκειας της εφαρμογής. Εκτελούνται πάνω σε μια έκδοση (release), χρησιμοποιώντας την ίδια βάση κώδικα (codebase) και παραμέτρους (config) όπως κάθε διεργασία που εκτελείται με βάση την ίδια έκδοση της εφαρμογής. Ο κώδικας διαχείρισης πρέπει να εξάγεται μαζί με τον κώδικα της εφαρμογής για να αποφευχθούν ζητήματα συγχρονισμού.
Οι ίδιες τεχνικές απομόνωσης εξαρτήσεων θα πρέπει να χρησιμοποιούνται σε όλους τους τύπους διεργασιών. Για παράδειγμα, εάν η διεργασία ιστού της Ruby χρησιμοποιεί την εντολή bundle exec thin start
, τότε μια αλλαγή της βάσης δεδομένων (database migration) θα πρέπει να χρησιμοποιήσει τη bundle exec rake db:migrate
. Παρομοίως, ένα πρόγραμμα Python που χρησιμοποιεί το Virtualenv θα πρέπει να χρησιμοποιήσει το προμηθευμένο (vendored) bin/python
για να τρέξει και τον εξυπηρετητή ιστού Tornado και οποιαδήποτε διεργασία διαχείρισης τύπου manage.py
.
ΟΙ δώδεκα παράγοντες έχουν ισχυρή προτίμηση στις γλώσσες προγραμματισμού που προσφέρουν ένα κέλυφος REPL έτοιμο για χρήση, και το οποίο καθιστά εύκολο να τρέξουν σενάρια εντολών μια και έξω. Σε μια τοπική ανάπτυξη (local deploy), οι προγραμματιστές καλούν τις διεργασίες διαχείρισης μια και έξω μέσω μιας εντολής απευθείας στο κέλυφος εντολών (shell) μέσα στο φάκελο του αποθετηρίου της εφαρμογής. Σε μια ανάπτυξη παραγωγής (production deploy), οι προγραμματιστές μπορούν να χρησιμοποιήσουν το ssh ή άλλο μηχανισμό απομακρυσμένης εκτέλεσης εντολών ο οποίος παρέχεται από το περιβάλλον εκτέλεσης για να τρέξουν μια τέτοια διεργασία.