Polc #003: Adam Wiggins – The Twelve-Factor App

Ismét egy “must-read”, legalább is ha backend szolgáltatásokat fejleszt az ember. Ráadásul a könyv maga elég lényegretörő, rövid – fél óra alatt át lehet rágni magunkat rajta.

A The Twelve-Factor App akkortájt született, amikor a felhő-programozás (már ha mindenképpen le akarjuk ferdíteni a cloud-computingot) épp csak kezdett realitássá válni. A fejlesztők elkezdtek a felhő segítségével új megoldásokat találni a már jó ideje létező problémákra, mint a magas rendelkezésre állás biztosítása, vagy a gyors, egyszerű skálázhatóság. Azzal, hogy hirtelen nem heteket/hónapokat, csak perceket kellett várni arra, hogy üzembe tudjunk helyezni +1 szervert, vagy, hogy erősebb hardvert tudjunk rakni a meglévők alá, egy csapásra megváltoztatta a felhőre építő cégek életét. Gyorsabb fejlesztési/telepítési ciklusok, biztosabb kiszolgálás…

…viszont az új módszer új problémákat is magával hozott, amelyek megoldásukhoz új gondolkodást igényeltek. A szerverek elkezdtek egyenként elnevezett, karbantartott “háziállatokból” “csordává” válni: már hatékonyabb volt, ha egy elhasaló szervert nem feltámasztott a dev/ops csapat, hanem egyszerűen rádobták a közmondásos földet, és szolgálatba állítottak helyette egy másikat néhány perc alatt. Hogy ez kivitelezhető legyen, és az új szervert is minden különösebb specializáció nélkül bárki karban tudja tartani a csapatból, bizonyos dolgok egységesítésére volt szüksé. Néhány évtizeddel korábban az objektum-orientált nyelvek fejlesztői közül sokan ugyanazokhoz a programozási struktúrákhoz jutottak el, amikor hasonló problémákat próbáltak megoldani – ezeket foglalta aztán össze programozási minták néven a “Gang of Four”. Nem teljesen azonos, de eléggé hasonló módon Adam Wiggins a The Twelve-Factor Appban foglalta össze, hogy hogyan érdemes a modern környezetben jól karbantartható, jól skálázható “appokat” fejleszteni. (Itt az “app” maga a szerveralkalmazás.)

A könyv nevének megfelelően 12 fejezetre oszlik, és minden kb. 3-6 oldalas fejezet egy-egy részét tárgyalja át a felhőalkalmazás-fejlesztés, -telepítés, és -karbantartás mikéntjének. Tömören, elmondva, hogy hogyan kell csinálni, és miért kell úgy csinálni. Emiatt tehát nem egy kifejezetten mély könyvről van szó, de pont azért jó, mert innen el lehet indulni bármelyik témában mélyebb részek felé.

Egy-két mondatban összefoglalva:

  • Ugyanazt a verziókezelt kódbázist kell használni minden telepítéshez.
  • A függőségeket izolálni kell, hogy az alkalmazás módosítása nélkül is cserélhetők legyenek.
  • A konfigurációt a környezetben tároljuk. (Hülyén hangzik az Environment, én is tudom…)
  • Az appot kiszolgáló szolgáltatásokat erőforrásként kell kezelni. (Megint csak az izoláció…)
  • El kell választani a “build” és “run” fázisokat. (Ezt pl. manapság dockernél is gyönyörűen látni, szinte kötelező.)
  • Az alkalmazásoknak lehetőleg állapotmentes folyamatokként kell futniuk.
  • A szolgáltatásokat portok külvilág felé csatolásával valósítsuk meg.
  • A párhuzamosságot a folyamatok többszörözésével érjük el.
  • Az alkalmazásoknak eldobhatónak kell lenniük. Ha egy kiesett, újraindítjuk a folyamatot, és megy minden tovább.
  • Ugyanaz fusson a tesztkörnyezetben, mint élesben.
  • A naplózást egy esemény-folyamként valósítsuk meg, amellyel igazából az app nem törődik – csak ír a logba, de nem tudja, mi történik aztán.
  • Ha szükség van adminisztratív elérésre, azt egyszerű mellékfolyamatokkal valósítsuk meg.

Nem mondom, hogy mindenben 100%-ig egyetértek a szerző érvelésével és logikájával, de lehet, hogy csak a könyv megjelenése óta eltelt évek hozta változás miatt. Mindenesetre, ettől függetlenül, ha betartjuk a “12 szabályt” – itt-ott talán kis változtatásokkal -, csak jól járhatunk.

Képet a könyvről sajnos nem tudok mellékelni, mert nem gyártottak neki. 🙂

Cserébe viszont ingyen elérhető itt html, itt pedig epub formában. Szerintem dobjátok rá azt a fél-egy órát, amikor buszoztok valahova. 🙂

Megjelent azóta egy másik könyv is a témában, legközelebb arról írok.

Megjegyzések, kérdések, ötletek, ajánlások jöhetnek itt, e-mailben, twitteren, vagy ahol épp megtaláltok.

 

Hírdetés

Szerző: Fülöp Dávid

I'm a software developer, trainer, Microsoft MVP interested in .NET and related technologies. Currently mostly .NET Core, Docker, Kubernetes...

Vélemény, hozzászólás?

Adatok megadása vagy bejelentkezés valamelyik ikonnal:

WordPress.com Logo

Hozzászólhat a WordPress.com felhasználói fiók használatával. Kilépés /  Módosítás )

Twitter kép

Hozzászólhat a Twitter felhasználói fiók használatával. Kilépés /  Módosítás )

Facebook kép

Hozzászólhat a Facebook felhasználói fiók használatával. Kilépés /  Módosítás )

Kapcsolódás: %s

%d blogger ezt szereti: