We zijn nu bezig met het introduceren van GIT en een nieuwe ontwikkelomgeving voor de ontwikkelaars. De applicatie waar we mee werken is een groot ERP systeem voor een internationaal productiebedrijf. We hebben een standaard applicatie waar veel op wordt aangepast. We proberen zoveel als mogelijk die aanpassingen gelijk te houden voor alle fabrieken maar dat lukt niet altijd. Bovendien zitten we nog met een erfenis uit het verleden waarbij er te snel werd gekozen voor een fabriek-specifieke oplossing.
De code voor een willekeurige fabriek bestaat dus altijd uit drie lagen:
Onze vorige software architect was bezig met een verbeterplan, maar vond - voordat hij klaar was - een betere baan. Lekker dan, dus nu zitten wij er weer mee. We willen dit oplossen. We gaan GIT gebruiken maar we zijn er nog niet over uit hoe dat dan moet. GIT submodules hebben we mee geëxperimenteerd maar dat lijkt meer problemen te introduceren dan op te lossen.
Het nieuwe idee is om alles in 1 repository te gooien, maar dan met subfolders voor main, core en local en onder local subfolders per fabriek, dus zoiets:
- erp-project
- main
- core
- local
- fabriek-1
- fabriek-2
- fabriek-3
...
We hebben dan als voordeel dat zowel de main als core laag ook echt maar 1 keer voorkomt. Nu hebben we op verschillende servers soms wel eens verschillende versies staan van wat eigenlijk hetzelfde hoort te zijn.
Het probleem zit hem hier in de local lagen. Bij het ontwikkelen wil je niet alle local lagen in je zoekpad hebben omdat fabriek X niks met de code te maken heeft met fabriek Y.
Het kan namelijk zo zijn dat een programma bestaat in zowel de main, core als local laag. Het is dan een programma van onze ERP-boer dat we zelf overruled hebben met een eigen versie. Voor een individuele fabriek zou er evt een nóg specifiekere versie kunnen bestaan. We zijn overigens bezig met een opschoonactie om de local laag zo klein mogelijk te maken. Zaken die we kunnen regelen middels configuratie in de code verhuizen we naar de core-laag. Voordat alles is opgeschoond zijn we nog wel even verder want de complete codebase (dus main, core + 12 locals) is ruin 57000 source code bestanden.
Mijn vraag aan jullie is of er nog zaken zijn waar we naar kunnen kijken binnen GIT hoe we dit goed kunnen managen. Oftewel: hoe zouden jullie dit doen?
De code voor een willekeurige fabriek bestaat dus altijd uit drie lagen:
- De 'main' laag (de code van het ERP systeem zelf)
- De 'core' laag (code die wij gemaakt hebben en voor iedereen gelijk is)
- De 'local' laag (code specifiek voor een fabriek)
Onze vorige software architect was bezig met een verbeterplan, maar vond - voordat hij klaar was - een betere baan. Lekker dan, dus nu zitten wij er weer mee. We willen dit oplossen. We gaan GIT gebruiken maar we zijn er nog niet over uit hoe dat dan moet. GIT submodules hebben we mee geëxperimenteerd maar dat lijkt meer problemen te introduceren dan op te lossen.
Het nieuwe idee is om alles in 1 repository te gooien, maar dan met subfolders voor main, core en local en onder local subfolders per fabriek, dus zoiets:
- erp-project
- main
- core
- local
- fabriek-1
- fabriek-2
- fabriek-3
...
We hebben dan als voordeel dat zowel de main als core laag ook echt maar 1 keer voorkomt. Nu hebben we op verschillende servers soms wel eens verschillende versies staan van wat eigenlijk hetzelfde hoort te zijn.
Het probleem zit hem hier in de local lagen. Bij het ontwikkelen wil je niet alle local lagen in je zoekpad hebben omdat fabriek X niks met de code te maken heeft met fabriek Y.
Het kan namelijk zo zijn dat een programma bestaat in zowel de main, core als local laag. Het is dan een programma van onze ERP-boer dat we zelf overruled hebben met een eigen versie. Voor een individuele fabriek zou er evt een nóg specifiekere versie kunnen bestaan. We zijn overigens bezig met een opschoonactie om de local laag zo klein mogelijk te maken. Zaken die we kunnen regelen middels configuratie in de code verhuizen we naar de core-laag. Voordat alles is opgeschoond zijn we nog wel even verder want de complete codebase (dus main, core + 12 locals) is ruin 57000 source code bestanden.
Mijn vraag aan jullie is of er nog zaken zijn waar we naar kunnen kijken binnen GIT hoe we dit goed kunnen managen. Oftewel: hoe zouden jullie dit doen?
... en gaat over tot de orde van de dag