Szeparált fejlesztői környezet: VM, container vagy ?

 ( Zozz | 2019. március 15., péntek - 10:23 )

Egy project fejlesztéséhez szükség van 3-4 fejlesztői tool telepítésére. Ha egy új projekt kezdődik, ezekből a toolokból más verziók kellenek. Időnként a régi projekteket is módosítani kell, a régi toolchain használatával. Tehát egy-egy projekt fejlesztői környezetét elszeparáltan kellene tartani. Erre mit javasolnátok? Én első körben virtuális gépet gondoltam, saját OS, ide feltelepítve az adott toolchain/projekt. Egy projekten való módosításhoz elindítom a hozzá tartozó VM-et. Így nyilván (?) megoldható, de hátha van egyszerűbb/hatékonyabb megoldás. A containeres megoldás olvasmányaim alapján erőforrás takarékosabb lehet, de a legtöbb cikkben a use case az, hogy egy vason sok VM/container fut párhuzamosan. Itt nem erre van szükség, egyszerre csak egy környezetet használnék.

Nem ismerem ezeket a technológiákat mélyebben, ezért kérem az itteni okosok tanácsát.

A host oprendszer Windows 10, a toolok Windows only-k.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Én virtuális gépeznék, mert azok önállóan elindíthatóak bármikor "bármin". (De lehet, hogy csak az mondatja velem, hogy sose konténereztem még.)

Ha sok évre meg kell őrizni a fejlesztői környezetet, akkor arra vigyázz, hogy kizárólag offline is működőképes dolgokat használj!

Engem mint fejlesztőt a hideg ráz ki attól, hogy VM-ben meg hasonlókban fejlesszek.

A fejlesztő állítson fel egy külön projektet/workspace-t minden egyes ilyen régi projektre: mindegyikben meg lehet mondani, hogy milyen Maven/Ant/Gradle/JDK legyen... nyilván van az a bonyolultság/tool-set aminél ez csak nehezen vagy nem megoldható - de mindenféle adatbáziskezelők is jól elfutnak egymás mellett. Számomra a VM-ben fejlesztés nagyon-nagyon az utolsó lehetőség lenne.

Ha nagyon összevesznének ezek a toolok egy gépen, akkor vennék 3 ugyanolyan fejlesztői gépet és mindegyiken 1-1 projektet fejlesztek csak és kész. :)

+1

Hamarabb lenne egy fejlesztői-szerverem, (ha nem akarnék lokálban fejleszteni), mint VM.

+1, én valami olyasmit csinálnék, hogy szerveren futtatnám a virtuális gépeket, amire remote fel lehet jelentkezni.

En nem windows-on fejlesztek de nekem container-be fut minden. Itt van pl egy Clion, PlatformIO paros. Mas eszkozok is hasonlo keppen vannak kialakitva nalam.

Rakj össze Cloudformation-el Stack-et AWS-ben, vagy Azure-ban deploy-t Resource Manager-el (mindkettő json, Azure-höz a Visual Studio ad plugint, amivel össze tudod kattintani a json tartalmát AWS-ben pedig van rá GUI).

A json tartalmazza a Windows instance létrehozását (t2.large instance (2 core, 8 GB RAM) pl. 35 Forint óránként, nagyjából csak bekapcsolt állapotban számlázva), környezeti beállitásokat és megtudja hivni a deployment scripteket, ami felpakolja a kis fejlesztői stack-edet.

Innentől egy kattintással létre tudsz hozni / el tudsz dobni instance-okat, a fejlesztői környezetben lévő verziók közötti váltáshoz pedig csak át kell irni a scriptben a verziószámot.

Folyamatosan látod a költségeidet, be tudsz állitani warning-ot rá.

Produktiv munka mellett tanulásra és gyakorlásra létrehoztunk egy hasonlót:
Accenture DevOps Platform

Ezt a stack-et onpremise docker-re is fel tudod dobni pár kattintással, van benne git, Gerrit, Jenkins (pár példa projektel), SonarQube, Kibana, Selenium

Köszi mindenkinek, de ez nem webes fejlesztés, spéci windows alapú toolok, multi vállalati környezet, cloud megoldások nem jönnek szóba.

--
Soli Deo Gloria

Én sokat dolgoztam hasonló VM -es környezetben, és nem tudnám jó szívvel ajánlani. Állandó szívás van a host<->guest szinkronizálással. Keresel valamit a neten, de éppen nem megy a két gép között a copy/paste, a VM -es gépben nincs rendesen felhúzva a böngésző, vagy ha fel van akkor lassú, a "shared drive" csomó mindent nem tud (lockolás, jogosultság problémák), ha mindent bemásolsz a VM -be kicsi lesz a HDD, ahány VM annyi windows update, a VM nincs domain -ben így másként látja a hálózatot, stb...

Ha nem nagyok szar a tool ami a fejlesztéshez kell, akkor ezek environment piszkálással elválaszthatóak. Kivétel pl. a cygwin ami bizonyos beállításokat registry -ből vesz (mount pointok), illetve a cygwin.dll -ből (nem pont ez a neve) különböző verziói szeretnek összeveszni.

Ha új helyre kell tudni feltenni a toolokat egyszerűen, akkor érdemes (akár saját)csokoládé csomagokkal támadni a kérdést. Persze csinálni és körbeadni egy VM -et sokkal egyszerűbb, csak dolgozni vacak VM -ben.

Én évtizedre visszamenően mobil rack -et és multi boot -ot.
Ráadásul volt olyan vasam amit pont ilyenekért évekig tároltam.
Számomra a virtuális gép mindenképpen veszélyesnek tűnik, de tapasztalatom nincs.

* Én egy indián vagyok. Minden indián hazudik.

Nekem a 3 futó projektemből 2 van konténerben. Az egy pedig azért van virtuális gépen mert saját kernelt kell használni. De mindenképp kényelmesebb a konténer.
Gyorsabban indul.
Könnyen rebuildelhető.
A szinkronizáció pedig gyerekjáték.

Mindenképp a konténer a győztes.

Köszönöm a hozzászólásokat, úgy látszik nem olyan egyszerű győztest hirdetni :).
Majd megbeszéljük a kollégákkal.

--
Soli Deo Gloria