Ik werk aan een web applicatie waarin eigenlijk twee soorten acties voorkomen:
1) De user doet een request en er moet informatie getoond worden
2) De user geeft het systeem een opdracht voor iets wat niet direct een resultaat terug geeft.
Een voorbeeld van 1 is iets standaards als "alle producten in het systeem opvragen", terwijl 2 bijvoorbeeld een bestelling is.
In mijn systeem gebeurd er afhankelijk van de user van alles en nog wat na een bestelling. Er gaan onder andere 4 emailtjes uit (naar account manager, naar user zelf, naar admin en naar aanbieder van dat produkt). Daarnaast runt er nog een zooi aan andere business logic.
Het punt is dat in de traditionele web applicaties er meestal sprake is van een request die geheel afgehandeld word, waarna de user een bedank pagina of iets dergelijks te zien krijgt. Nu is het natuurlijk zo dat de user hier eigenlijk helemaal niet op hoeft te wachten. Nadat alle validaties zijn doorlopen zou de user meteen de bedankt pagina kunnen krijgen, terwijl de rest van de code asynchroon doorloopt.
In Java zou ik bijvoorbeeld een gedeelte van de business logic als een Quartz job kunnen schedulen. De response time is veel lager en dus de ervaring voor de user beter. Tevens is de web bak weer sneller beschikbaar om nieuwe requests af te handelen.
Helaas zijn er ook nadelen. Mocht er onverhoopt toch nog wat fout gaan in de business logic, dan kan ik daar de user niet meer van op de hoogte brengen. Elke user begrijpt dat als ie een error page krijgt de actie waarschijnlijk niet gelukt is, maar na een bedankt pagina gegeven te hebben kun je user niet 5 minuten later lastig vallen (bv via email) dat het toch niet goed ging.
Erger is het geval dat de machien die de busines logic uitvoert er onverhoopt mee stopt. De job gaat dan verloren en de user komt hier niet snel achter. Nu heeft Quartz bv wel de mogelijkheid om jobs in een DB op te slaan, maar dat continu opslaan van jobs geeft dan weer extra load die zeker in het geval van kleine jobs de overhead niet waard is.
Zijn er hier mensen die (een deel van) hun systeem op een dergelijke wijze hebben opgezet en hier hints & tips over hebben?
1) De user doet een request en er moet informatie getoond worden
2) De user geeft het systeem een opdracht voor iets wat niet direct een resultaat terug geeft.
Een voorbeeld van 1 is iets standaards als "alle producten in het systeem opvragen", terwijl 2 bijvoorbeeld een bestelling is.
In mijn systeem gebeurd er afhankelijk van de user van alles en nog wat na een bestelling. Er gaan onder andere 4 emailtjes uit (naar account manager, naar user zelf, naar admin en naar aanbieder van dat produkt). Daarnaast runt er nog een zooi aan andere business logic.
Het punt is dat in de traditionele web applicaties er meestal sprake is van een request die geheel afgehandeld word, waarna de user een bedank pagina of iets dergelijks te zien krijgt. Nu is het natuurlijk zo dat de user hier eigenlijk helemaal niet op hoeft te wachten. Nadat alle validaties zijn doorlopen zou de user meteen de bedankt pagina kunnen krijgen, terwijl de rest van de code asynchroon doorloopt.
In Java zou ik bijvoorbeeld een gedeelte van de business logic als een Quartz job kunnen schedulen. De response time is veel lager en dus de ervaring voor de user beter. Tevens is de web bak weer sneller beschikbaar om nieuwe requests af te handelen.
Helaas zijn er ook nadelen. Mocht er onverhoopt toch nog wat fout gaan in de business logic, dan kan ik daar de user niet meer van op de hoogte brengen. Elke user begrijpt dat als ie een error page krijgt de actie waarschijnlijk niet gelukt is, maar na een bedankt pagina gegeven te hebben kun je user niet 5 minuten later lastig vallen (bv via email) dat het toch niet goed ging.
Erger is het geval dat de machien die de busines logic uitvoert er onverhoopt mee stopt. De job gaat dan verloren en de user komt hier niet snel achter. Nu heeft Quartz bv wel de mogelijkheid om jobs in een DB op te slaan, maar dat continu opslaan van jobs geeft dan weer extra load die zeker in het geval van kleine jobs de overhead niet waard is.
Zijn er hier mensen die (een deel van) hun systeem op een dergelijke wijze hebben opgezet en hier hints & tips over hebben?
It's shocking to find how many people do not believe they can learn, and how many more believe learning to be difficult.