7. Port binding
Szolgáltatások kikötése portkötéssel¶
Webalkalmazások néha webkiszolgáló-konténeren belül futnak. Például a PHP alkalmazások modulként futnak az Apache HTTPD-ben, vagy a Java alkalmazások Tomcat-ban futnak.
A tizenkét tényezős alkalmazás teljesen önmagában működik, és nem támaszkodik a webkiszolgáló futásidejű beinjektálására a futási környezetbe annak érdekében, hogy létrehozzon egy webes szolgáltatást. A webalkalmazás HTTP-t szolgáltatásként exportál azzal, hogy kiköti magát egy portra, és hallgatja a bejövő kéréseket ezen a porthoz.
A fejlesztő a helyi fejlesztési környezetben egy olyan szolgáltatás URL-t látogat meg, mint például http://localhost:5000/, hogy elérje az alkalmazás által exportált szolgáltatást. A telepítés során egy útvonalazó réteg kezeli a kéréseket a nyilvánosan hozzáférhető hosztnevetől a porthoz kötött webes folyamatokhoz.
Ezt általában függőségdeklarációval valósítják meg, amikor egy webszerver könyvtárat adnak hozzá az alkalmazáshoz, például a Tornado-t Pythonhoz, a Thin-t Ruby-hoz vagy a Jetty-t Java-hoz és más JVM alapú nyelvekhez. Ez teljes mértékben a felhasználói területen belül történik, azaz az alkalmazás kódjában. A szerződés a futási környezettel a kikötés a porton, hogy kiszolgálja a kéréseket.
Az HTTP nem az egyetlen szolgáltatás, amelyet portkötés révén lehet exportálni. Szinte bármilyen típusú szerver szoftver futtatható egy olyan folyamat által, amely kiköt egy porthoz, és várja a bejövő kéréseket. Példák erre az ejabberd (amely XMPP protokollt használ) és a Redis (amely a Redis protokollt beszéli).
Megjegyzés: a portkötési megközelítés azt jelenti, hogy egy alkalmazás a másik alkalmazás hátuljává válhat, azáltal, hogy a konfigurációban a fogyasztó alkalmazás erőforráskezelőjének megadja a hátulsó alkalmazás URL-jét.