Hallo,
Ik ben aan het starten met een nieuw webproject, en had graag jullie advies hiervoor.
Omdat het de bedoeling is dat er meerdere installaties komen van de webapplicatie, allemaal onder eigen beheer. Omdat elke organisatie die een installatie heeft zijn eigen specifieke vereisten heeft, zowel qua layout als voor een deel qua functionaliteit, zoek ik een manier om dit zo efficient mogelijk te realiseren. Daarbij denk ik zowel aan performance als aan onderhoud.
Een eerste idee is natuurlijk elke installatie apart te doen, en eventuele updates elke keer voor alle installaties uit te voeren. Dat heeft als grote voordeel dat elke installatie apart te beheren valt en het op het eerste zicht eenvoudig is voor organisatie X specifieke zaken aan te passen. In het verleden werd zo gewerkt, maar de ervaring leert dat de verschillende installaties op den duur zo versplintert geraken dat je meer aparte applicaties aan het beheren bent en daar veel tijd mee verloren gaat.
Momenteel speel ik met het idee om de applicatie in twee delen te verdelen, een backend die voorziet in alle opslag en verwerking, en per organisatie een installatie die gebruik maakt van deze backend.
Doordat de backend een enkele applicatie is waarvan alle installaties gebruik maken, is het natuurlijk makkelijk om deze te onderhouden. De aparte installaties per organisatie geven dan weer de mogelijkheid om toch nog relatief op maat te blijven werken.
In eerste instantie dacht ik aan een REST backend, maar het probleem dat ik daarbij zie is de efficientie, een hoop curl calls lijkt mij niet de beste manier op dit op te lossen. Het voordeel daarvan is wel dat het niet zo moeilijk zou zijn om op termijn ook een mobiele app te ontwikkelen. Daarnaast blijf ik met het probleem zitten dat in dat geval nog veel van de acties op de backend zouden plaatsvinden. Om een concreet voorbeeld te geven zouden bepaalde organisaties bij een bepaald event een SMS notificatie wensen, terwijl andere bij datzelfde event een notificatie via mail of zelfs geen notificatie willen.
In het ideale geval zou de backend dus bij elke actie een event doorgeven aan de corresponderende installatie, die daar de gewenste acties mee gaat uitvoeren. Om het allemaal wat beheerbaar te houden zou elke installatie dus zo veel mogelijk bestaan uit afgescheiden modules, die ik eenvoudig zou kunnen aan en uitzetten.
Als ik er goed over nadenk, ben ik ook niet helemaal overtuigd van de tweede manier. Uiteindelijk zal veel functionaliteit in de specifieke installaties terecht komen, waardoor er terug richting de huidige situatie gegaan wordt. Ik weet niet of het moeilijk is om functionaliteit in modules onder te brengen, die dan eenvoudig aan en uitgezet kunnen worden? Zaken die door meerdere installaties gedeeld worden zijn zo makkelijk te onderhouden als er geen specifieke aanpassingen aan de modules gedaan worden, en voor specifieke situaties lijkt het me dat deze ook in een module gegoten kunnen worden die dan maar op 1 plaats gebruikt wordt?
Om af te ronden geef ik nog graag mee dat mijn bedoeling is om gebruik te maken van het Laravel framework, maar dat ik wel open sta voor suggesties mocht dit niet de beste keuze lijken. Ik heb niet zo gigantisch veel ervaring met Laravel, maar het lijkt me wel dat dit een heel krachtig framework is. Misschien dat het mogelijk is om de modules waarover ik hierboven sprak in packages te gieten en de applicaties zo op te bouwen?
Ik ben aan het starten met een nieuw webproject, en had graag jullie advies hiervoor.
Omdat het de bedoeling is dat er meerdere installaties komen van de webapplicatie, allemaal onder eigen beheer. Omdat elke organisatie die een installatie heeft zijn eigen specifieke vereisten heeft, zowel qua layout als voor een deel qua functionaliteit, zoek ik een manier om dit zo efficient mogelijk te realiseren. Daarbij denk ik zowel aan performance als aan onderhoud.
Een eerste idee is natuurlijk elke installatie apart te doen, en eventuele updates elke keer voor alle installaties uit te voeren. Dat heeft als grote voordeel dat elke installatie apart te beheren valt en het op het eerste zicht eenvoudig is voor organisatie X specifieke zaken aan te passen. In het verleden werd zo gewerkt, maar de ervaring leert dat de verschillende installaties op den duur zo versplintert geraken dat je meer aparte applicaties aan het beheren bent en daar veel tijd mee verloren gaat.
Momenteel speel ik met het idee om de applicatie in twee delen te verdelen, een backend die voorziet in alle opslag en verwerking, en per organisatie een installatie die gebruik maakt van deze backend.
Doordat de backend een enkele applicatie is waarvan alle installaties gebruik maken, is het natuurlijk makkelijk om deze te onderhouden. De aparte installaties per organisatie geven dan weer de mogelijkheid om toch nog relatief op maat te blijven werken.
In eerste instantie dacht ik aan een REST backend, maar het probleem dat ik daarbij zie is de efficientie, een hoop curl calls lijkt mij niet de beste manier op dit op te lossen. Het voordeel daarvan is wel dat het niet zo moeilijk zou zijn om op termijn ook een mobiele app te ontwikkelen. Daarnaast blijf ik met het probleem zitten dat in dat geval nog veel van de acties op de backend zouden plaatsvinden. Om een concreet voorbeeld te geven zouden bepaalde organisaties bij een bepaald event een SMS notificatie wensen, terwijl andere bij datzelfde event een notificatie via mail of zelfs geen notificatie willen.
In het ideale geval zou de backend dus bij elke actie een event doorgeven aan de corresponderende installatie, die daar de gewenste acties mee gaat uitvoeren. Om het allemaal wat beheerbaar te houden zou elke installatie dus zo veel mogelijk bestaan uit afgescheiden modules, die ik eenvoudig zou kunnen aan en uitzetten.
Als ik er goed over nadenk, ben ik ook niet helemaal overtuigd van de tweede manier. Uiteindelijk zal veel functionaliteit in de specifieke installaties terecht komen, waardoor er terug richting de huidige situatie gegaan wordt. Ik weet niet of het moeilijk is om functionaliteit in modules onder te brengen, die dan eenvoudig aan en uitgezet kunnen worden? Zaken die door meerdere installaties gedeeld worden zijn zo makkelijk te onderhouden als er geen specifieke aanpassingen aan de modules gedaan worden, en voor specifieke situaties lijkt het me dat deze ook in een module gegoten kunnen worden die dan maar op 1 plaats gebruikt wordt?
Om af te ronden geef ik nog graag mee dat mijn bedoeling is om gebruik te maken van het Laravel framework, maar dat ik wel open sta voor suggesties mocht dit niet de beste keuze lijken. Ik heb niet zo gigantisch veel ervaring met Laravel, maar het lijkt me wel dat dit een heel krachtig framework is. Misschien dat het mogelijk is om de modules waarover ik hierboven sprak in packages te gieten en de applicaties zo op te bouwen?