(RStudio Conference 2019) Chapter 12 - DevOps Philosophy and Tooling - “Production” has many meanings - Are there lessons can be learned from the DevOps community?
push of code to an environment (test, prod) • Release is when that code (feature) is made available to users or customers Deployment on demand and thoughtful release strategies allow more control (and more success) over the delivery of features to end users. - Application-based release patterns (today!) - Environment-based release patterns (tomorrow)
or control which features are visible to specific user segments. Enable dark launch: deploy a change to production and then perform testing while it’s invisible to most users. - Modify the code to make calls to new functions, log results without displaying - Have 1% of users make invisible calls to new feature, fix issues, progressively increase users to test production load
of the current user through the session parameter of the shinyServer function. Your application could use this information to display customized messages or to enable functionality for a specific subset of users.
and wraps a set of UI elements that need to be dynamically shown/hidden. Creates a panel that shows and hides its contents depending on the value of a JavaScript expression, usually input-based. This example shows how to define an output variable in the server code that you can use in the UI. Output condition example: Dean Attali session$user session$groups
for Shiny application deployment and releases? No, not likely. - Not easy to manage, automate, test and ultimately “toggle” - Alternative: “Environment-Based Release Patterns” - Still a cool concept, useful for solving other types of problems - RStudio Connect Feature Hacks!
Description Anyone, no login required Allows for anonymous viewer access All users, login required Everyone with an RStudio Connect account Specific users or groups Only users or groups you specify can access Collaborators & you Only you and your collaborators can access
1. Self service code access - install.packages( "gitlink") 2. Slack Incoming Webhook integration If session$groups != solutions { Display an action button that will send me a slack alert when clicked. }
me as a collaborator on this? 1. Self service code access - install.packages( "gitlink") 2. Slack Incoming Webhook integration If session$groups != solutions { Display an action button that will send me a slack alert when clicked. }
R packages and legacy methods you could use to talk to slack from your R code. I recommend creating a Slack App. Send data to Slack in real-time - Incoming Webhook Creating an Incoming Webhook gives you a unique URL to which you send a JSON payload with the message text and some options.
in as Kelly, who is a member of solutions No button displayed Right: Vanity URL app access by a different user User is not a member of the solutions group Request Access button displayed Watch on YouTube
login required is.null(user()) TRUE Custom UI for anonymous viewers More Hacks for session$user Create a custom landing page for anonymous visitors and logged out users