Hogyan definiáljuk a rendszert kóddal?
Konfiguráció menedzsment
A konfiguráció menedzsment alapvető követelmény a szoftver fejlesztésben. Segítségével reprodukálható és követhető a rendszer változása.
Hogyan definiáljuk a rendszert kóddal?
A konfiguráció menedzsment alapvető követelmény a szoftver fejlesztésben. Segítségével reprodukálható és követhető a rendszer változása.
Ezen oldal tartalma a https://www.gov.uk/service-manual/browse oldal fordítása valamint a szerző véleménye alapján készült, Open Government Licence.
A legegyszerűbb alkalmazás esetén is szükség van konfigurációs adatokra, pl. adatbáziskapcsolatok, külső szolgáltatások URL-je, stb... Egy kormányzati szoftverrendszer nagy valószínűséggel több alkalmazásból fog állni, ezenkívül több külső rendszerkapcsolata is lesz, így a konfigurációmenedzsment az egyik legfontosabb alappillére a fejlesztésnek. Jól működő konfigurációmenedzsment nélkül nem lehet robusztus, jól skálázható és hordozható rendszereket építeni.
A konfigurációmenedzsment eszközök segítségével tudjuk egy rendszer konfigurációját és függőségeit karbantartani. Ezeket a feladatokat házon belül készített szoftvereszközökkel is meg lehet oldani, de a gyakorlatban célszerűbb valamilyen létező, elterjedt eszközt használni.
Három példa a létező, elterjedt konfigurációmenedzsment eszközökre: Ansible, Chef és Puppet.
A konfiguráció menedzselésének egyik megközelítési módja, hogy a konfigurációt és a szoftver függőségeit programkódként írjuk le. Ez a megközelítés a konfigurációmenedzsment számára is elhozza a programozásnál már megszokott pozitívumokat, mint pl.:
Amint az infrastruktúra konfigurációja le van írva programkódként, úgy az egyszerűen futtatható a szervereken, hálózatokon és szoftvereken.
A szoftverrendszerek migrálása különböző szolgáltatók, operációs rendszerek és környezetek között nem egyszerű és igen időigényes feladat. Még kompatibilis szolgáltatók, környezetek esetén is könnyen függőség tud kialakulni egy-egy irányába, csupán a technológiai tehetetlenség miatt.
A konfigurációmenedzsment ösztönzi, elősegíti a rendszer felépítésének és konfigurációjának mélyebb megértését, így ez megkönnyíti a szolgáltatók, operációs rendszerek és környezetek közötti migrációt.
A hordizhatóság és egységbe zárás egyik fontos technikai eszköze a konténerizáció, napjainkban a docker megoldás hódít.
Gyakori probléma, hogy a fejlesztői- vagy tesztkörnyezetben tökéletesen működő kód nem, vagy nem jól működik az éles környezetben. Ennek a leggyakoribb oka, hogy a fejlesztésre használt környezet konfigurációja eltér az éles környezettől. Ez lehet például eltérő verziójú vagy típusú adatbáziskezelő, alkalmazásszerver vagy egyéb szoftverkomponens. Ennek a problémának a legegyszerűbb megoldása az, ha a fejlesztői és éles környezetek konfigurációja teljesen megegyezik. Az említett konténerizáció ennek a problémának a megoldásában különösen fontos.
Az konfiguráció kezelésére leginkább alkalmazott megoldások gyakran manuálisak, nehézkesek, lassúak és sok a hibalehetőség bennük. Az ember nem alkalmas a sok lépésből álló, monoton feladatok megoldásában és a szoftverek kézzel történő telepítése több tíz vagy több száz szerverre magában hordozza a hiba lehetőségét.
Ha a rendszer indulásakor még kézzel is megfelelő módon elvégezhető a feladat, akkor is idővel a konfiguráció szétcsúszhat, ha nincsen rendesen kézben tartva. A probléma egyik hagyományos megoldása az, hogy a konfiguráció változtatásait megnehezítik így korlátozva azok számát. Ha azonban agilis és rugalmas szoftverrendszert akarunk építeni, a gyors változtatás lehetősége nagyon fontos, és a kézi megoldás határait nagyon hamar elérjük.