Polc #001: Michael T. Nygard – Release It!

Ebben a posztban egy kifejezetten hasznos könyvet ajánlanék, Mihael T. Nygard több mint egy évtizedes klasszikusát arról, hogy hogyan omlanak össze a komplex szoftverrendszerek, és hogyan lehet enyhíteni a problémát.

Tavaly volt szerencsém végigrágni, majd többedmagammal elemezgetni a Release It!: Design and Deploy Production-Ready Software című könyvet. Most, hogy már túl vagyok rajta, azt kell mondjam, kár, hogy nem korábban került a látóterembe!

A szoftverek fura, komplex állatok. Hajlamosak arra, hogy látszólag értelmetlenül viselkedjenek, megmakacsolják magukat, hibákat kezdjenek dobálni minden ok nélkül, ne szolgálják ki a kéréseket, ésatöbbi. A hangsúly persze a látszólagon van…

Nygard könyve arra az alapgondolatra épül, hogy teljesen mindegy, mennyire tesztelték az alkalmazást/rendszert, hány lehetséges hibát gondoltak végig, egy komplex rendszer mindig tud fájdalmas meglepetésekkel szolgálni. Többnyire este 6 után. Hétvégén.

Az előbbiből kifolyólag eleve úgy kell felépítenünk a rendszerünket, hogy

  • egyrészt, amennyire lehet, hibatűrő legyen, vagyis ha a rendszer egyik része épp megszűnik létezni, vagy akár csak lassabban reagál, mint kellene, akkor ne rántsa magával a világmindenséget,
  • másrészt, mivel úgyis gáz lesz, és úgyis nekünk kell kijavítani (este hatkor, hétvégén), lehetőleg segítsen tervezzük úgy, hogy ha baj van, ne legyen indokolatlanul nehéz lokalizálni a probémát.

Ezen célok eléréséhez nyújt támpontokat a könyv, és meglehetősen jó formában! Egy-egy történettel kezdi arról, hogy a szerző éppen milyen rendszerrel állt szemben, mi történt, hogyan omlott össze minden, hogyan találta/találták meg a problémát, hogyan sikerült kijavítani, és mi a tanulság. Bár a történetek itt-ott kicsit terjengősek, legalább könnyen megjegyezhetők.

Mindezek után pedig a történetből leszűrt tanulságok mentén sorol fel olyan patterneket/antipatterneket, amiket érdemes ismerni, hogy a hasonló helyzeteket el tudjuk kerülni. Általában tisztán, viszonylag röviden ír, de néha becsúszik egy-egy “ez meg most miért kellett?” rész.

A minták egyébként szinte kivétel nélkül elég időtállók, szóval nem váltak elavulttá a könyv kiadása óta eltelt 10+ évben.

Az olykor felbukkanó kicsit felesleges mellékvágányok mellett a könyv másik talán-negatívuma a vége. Az utolsóelőtti néhány fejezet elég erősen a Javara és annak betegségeire koncentrál. Önmagában ez nem lenne baj, sőt, egy Java fejlesztőnek valószínűleg különösen hasznos, de nekem, akinek a Springről csak a rugó és a tavasz ugrik be, nem annyira. Szóval, ha nem Java-fejlesztő vagy, akkor a könyv utolsó harmadában-negyedében lehet “előre tekerni”.

Mindent összevetve én erősen ajánlom a Release It!-et mindenkinek, aki backendet fejleszt, tart karban, vagy akár csak használ is, kliens oldali alkalmazást írva rá. Elég olvasmányos, és ha a sallangokat lehúzza az ember, akkor a konkrét példák, minták, “antiminták” jól megjegyezhetők, beépíthetők a mindennapi tudásba.

Íme a könyv.

Az első kiadást már nem biztos, hogy be lehet szerezni, de körülbelül egy hónapja jelent meg a második kiadás, elvileg hozzáigazítva az eltelt 10 évhez. Egyelőre értékelés nincs róla, de majd, ha időm futja rá, átrágom az új verziót is. A fülszöveg alapján belekerültek többek között DevOpsszal és microservice-ekkel kapcsolatos példák is, szóval emelkedik a hasznosság-faktor!

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

 

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: