Hi all,
I'm debating with myself (I could do that for days), & thought I'd seek out some more learned discussion to speed things up.
Imagine I have a series of app 'pages', each customised to a set of users (data access, branding, layout etc) in a way that could be done manually by following links to multiple parameterised reports.
Until now I've built more complex shiny apps using a modular approach. I'm pretty happy with this, but it means all possible functionality has to be baked into the app. I could embed other apps in iframes, but it would normally mean some duplication at load time - authentication with the backend, data loading etc.
I'm wondering if a more 'microservices'-style approach may bring some advantages. I'm playing with Connect (not much longer left on trial...). I haven't tried it yet but I can see the potential to create a single main app & then embed other apps in iframes, but crucially passing session state (permissions metadata, backend access tokens & potentially data) between the apps using pins/shared cache/parameterised runtime:shiny Rmds, or something else. This approach would allow the initial config for each user to be downloaded, and the initial app UI built dynamically - only allowing links to user-specific or group-specific versions of app 'pages' , without having to bake those pages into the initial app or even without having to update the initial app when e.g. a new report is created.
Sure, the inital app would replicate some of the functionality of the Connect Dashboard itself, but it adds the possibility of branding, simplifying the interface for 'viewers', and reducing the initial setup time for each individual 'page'.
Does anyone have any thoughts on the comparison of these approaches? It'd probably help prevent me wasting a lot of time! I'm specifically thinking about runtime resource use, load time, potentially security etc.
Thanks all,
Stuart