The Twelve-Factor App

IV. Podporné služby

Spravovanie podporných služieb ako pripojených zdrojov

Podporná služba je akákoľvek služba, ktorú aplikácia konzumuje cez sieť ako súčasť je normálneho behu. Príklady zahŕňajú databázy (ako napr. MySQL alebo CouchDB), messaging/queueing systémy (napr. RabbitMQ alebo Beanstalkd), SMTP služby pre odchádzajúce emaily (napr. Postfix), a cachovacie systémy (napr. Memcached).

Podporné služby ako databázy sú tradične spravované tými istými systémovými administrátormi ako nasadenia aplikácie. Popri lokálne spravovaných službách, može mať aplikácia služby spravované tretími stranami. Príklady zahŕňajú SMTP služby (napr. Postmark), služby na zbieranie metrík (napr. New Relic alebo Loggly), úložiskové služby (napr. Amazon S3), alebo dokonca služby prístupné cez API (napr. Twitter, Google Maps, alebo Last.fm).

Kód v dvanásť faktorovej aplikácii nerozlišuje medzi službou lokálnou a od tretej strany. Pre aplikáciu sú obidve pripojené zdroje, prístupné cez URL alebo iné prístupové/prihlasovacie údaje uložené v konfigurácii. Nasadenie dvanásť faktorovej aplikácie by malo byť schopné vymeniť lokálnu MySQL databázu s databázou spravovanou treťou stranou (napr. Amazon RDS) bez akýchkoľvek zmien v kóde aplikácie. Podobne, lokálny SMTP server môže by vymenený SMTP službou od tretej strany (napr. Postmark) bez zmeny v kóde. V obidvoch prípado sa zmenia len prístupové a prihlasovacie údaje v konfigurácii.

Každá podporná služba je osobitným zdrojom. Napríklad, MySQL databáza je zdroj; dve MySQL databázy (používané na sharding na úrovni aplikácie) sú dva rôzne zdroje. Dvanásť faktorová aplikácie považuje tieto databázy ako pripojené zdroje, čo znamená ich voľné spojenie so súvisiacim nasadením.

Produkčné nasadenie pripojené ku štyrom podporným službám.

Zdroje je možné pripájať a odpájať od nasedení podľa ľubovôle. Napríklad, ak je databáza z dôvodu hardvérových problémov nestabilná, správca aplikácie môže rozbehnúť nový databázový server zo zálohy. Aktuálna produkčná databáza môže byť odpojená a nový databáza pripojená – všetko bez zmien v kóde.