The Twelve-Factor App

XII. Διεργασίες διαχείρισης

Εκτέλεση εργασιών διαχείρισης ως διεργασίες μια και έξω

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

Οι διεργασίες διαχείρισης μια και έξω θα πρέπει να εκτελούνται σε ένα πανομοιότυπο περιβάλλον όπως το κανονικό περιβάλλον των διεργασιών μακράς διάρκειας της εφαρμογής. Εκτελούνται πάνω σε μια έκδοση (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 ή άλλο μηχανισμό απομακρυσμένης εκτέλεσης εντολών ο οποίος παρέχεται από το περιβάλλον εκτέλεσης για να τρέξουν μια τέτοια διεργασία.