Blog R Shiny
Een webapplicatie ontwikkelen met R Shiny
Bij Timformatie maken we veel gebruik van R Shiny om dashboards te ontwikkelen. Vijf stappen die altijd terugkomen, van projectstructuur tot deployment.
Bij Timformatie maken we veel gebruik van R Shiny om dashboards te ontwikkelen — zie onze projecten-pagina voor voorbeelden. In een vorige post legden we uit wat R Shiny is en wat je ermee kan. Deze post gaat over het ontwikkelproces zelf: welke stappen we doorlopen bij elke nieuwe applicatie.
1. Een project starten — golem en RStudio
Wij ontwikkelen onze webapplicaties in RStudio en gebruiken het R-pakket golem. Golem geeft ontwikkelaars een duidelijke structuur en tools om hun Shiny-apps te organiseren en te beheren. Geen rommelige scripts in één lange file — modules, tests, deploy-targets uit elkaar.
2. Pakketbeheer — renv
Een essentieel onderdeel: het R-pakket renv. De functie is vergelijkbaar met virtual environments in Python. In een lockfile houden we alle pakketten met bijbehorende versie bij. Teamwerk wordt daardoor enorm vereenvoudigd — iedere ontwikkelaar installeert exact dezelfde versies. Reproduceerbaarheid is geen optie, het is de baseline.
3. Server en User Interface — Shiny
Een Shiny-applicatie bestaat altijd uit een server en een user interface (UI):
- De UI definieert lay-out en visuele elementen waarmee de gebruiker interactie heeft.
- De server bevat de logica en functionaliteit die de app aanstuurt.
Beide bevatten over het algemeen terugkerende componenten — een sidebar in de UI, server-side code om een visualisatie te genereren. Goed gestructureerd is iedere component los herbruikbaar.
4. Authenticatie en autorisatie — Auth0
Belangrijke onderdelen van het ontwikkelproces. Wij gebruiken hiervoor Auth0 — een platform voor identiteits- en toegangsbeheer. Auth0 ondersteunt verschillende inlogmethoden: sociale logins (Google, Microsoft), single sign-on (SSO), multi-factor authenticatie (MFA). Geavanceerde beveiligingsfuncties zonder dat we zelf een authenticatiesysteem hoeven te bouwen en onderhouden.
5. Deployment — Google Cloud Platform en Docker
Wanneer wij en de klant tevreden zijn met een applicatie, is de volgende stap deployment. Soms in de omgeving van de klant zelf (Microsoft Azure), maar we hosten ook in onze eigen omgeving op Google Cloud Platform. We gebruiken Cloud Run en Compute Engine VM’s. Bij een VM is de applicatie altijd in de lucht; Cloud Run start opnieuw op bij elke gebruiker — goedkoper, maar met een korte koude start.
Voor Cloud Run gebruiken we Docker. Eerst maken we een image van de applicatie — een kant-en-klaar pakket met alle benodigdheden. Die image draait vervolgens op een container. Wij plaatsen onze images in onze Artifact Registry op Google Cloud, en deployen vandaar naar Cloud Run of een VM.
Nieuwsgierig geworden? Neem contact met ons op — we kijken graag mee.