The Twelve-Factor App

VII. Port binding

Export služieb cez port binding

Webové aplikácie sú niekedy vykonávané vnútri webserverového kontainera. Napríklad PHP aplikácie bežia ako modul vnútri Apache HTTPD, alebo Java aplikácie môžu bežať vnútri Tomcat.

Dvanásť faktorová aplikácia je úplne sebestačn a nespolieha sa na vsunutie webservera v exekučnom prostredí na to, aby vytvorila webovú službu. Webová aplikácia exportuje HTTP ako službu bindovaním na port, a počúvaním požiadaviek prichádzajúcich na daný port.

V lokálnom vývojárskom prostredí developer pristupuje na službu exportovanú jeho aplikáciou cez URL napríklad http://localhost:5000/. Pri nasadení, smerovacia vrstva presmerúva požiadavky z verejnej domény na port web procesu.

Toto sa typicky implementuje použitím deklarácie závislostí a pridá sa tak knižnica webservera do aplikácie. Napríklad Tornado pre Python, Thin pre Ruby, alebo Jetty pre Javu a iných jazykoch bežiacich na JVM. Deje sa to úplne v používateľskom priestore, takže v kóde aplikácie. Dohoda s exekučným prostredím je je bindovanie na port na ktorom bude obsluhovať požiadavky.

HTTP nie je jediná služba, ktorú je možné exportovať bindovaním na port. Skoro každý serverový softvér môže bežať na otvorenom porte a čakať na prichádzajúce požiadavky. Príklady zahŕňajú ejabberd (protokol XMPP), a Redis (protokol Redis).

Všimnite si, že pripojenie na port znamená, že aplikácia sa môže stať podpornou službou pre inú aplikáciu, poskytnutím URL na podpornú službu ako zdroj v configu pre konzumujúcu aplikáciu.