Shiny Development & Deployment
The client’s in-house data science team had developed a Shiny application using the RStudio desktop IDE. The client wished to develop this Shiny application into a product/service that may be provided to their own clients.
The application required a thorough code review for performance and security with certain aspects needing further development (both in-house, and with Jumping Rivers’ support). This included integration with a new, secure data management service and integration with an existing user authentication service. The Shiny application was required to run within the customer’s cloud infrastructure and have a planned scaling path as usage increases.
The customer contacted Jumping Rivers to develop a Shiny application into a product/service that may be provided to their own clients.
We evaluated the suitability of both open-source and commercially supported tools for deploying Shiny applications. In this case, Posit Connect was chosen as it provided a platform for internal development, as well as a flexible solution for deploying applications at scale while providing an interface for management of both users and applications without requiring knowledge of server configuration. In addition, RStudio Connect would provide one-click deployment for the data science team, and built-in integration with several authentication services.
By choosing the LDAP user authentication method we were able to design infrastructure, and set up the necessary services, to synchronise with the existing user management systems of this customer.
The service stack was developed using Docker containers to be deployed on Azure Cloud virtual machines to be compatible with existing infrastructure and knowledge of the customer’s IT department.
The Docker images, service stacks, and Shiny application were all published to private GitLab repositories to manage access and versioning. We also make use of GitLab’s pipelines to schedule regular updates, perform automated testing on new code and service changes, and provide consistent deployment environments.