Plotly Cloud as a platform that encourages best practice

Note: After writing this post I realized there is also a commercial Dash Enterprise product and some of these features might be exclusive to this platform. Take this as an point of view of singular user, which would happily bring his apps on Render he pays for to Plotly cloud and pay for it :slight_smile: .

Hello,

firstly I really love this product idea and I am looking forward where this takes us in next few years or even next few months! I am posting this here because I want to add my 2 cents to general “philosophy” or where do I see this product therefore what feature support would be beneficial from this point of view.

I will start with my journey with Plotly and Dash which I believe is very common in this community. When you work in data there are a lot of libraries and tools that create static charts but these charts are fairly limiting in its functionality and look. If you want something more there are not so many options in python world - this was how I discovered Plotly. This brings you to the world of “interactivity” and it gives you a huge power but you need something more: dropdowns, buttons and other components to tame this interactivity. And this was the moment I discovered Dash. It has a super simple concept: you create layouts to set up how your app “looks” and callbacks to add “interactivity”.

Why I am starting like this. As you can see it is super convenient to come from data world and jump into world where we transform our ideas to powerfull web apps. I intentionally say “web apps” instead of “data apps” because if you start showing these data apps to colleagues or real users it really fast changes from data app to web app where charts and visualisations are just one part of the content. And here comes the problem: we (or at least me) were not taught best practice in web app developement. So when we move to “production” life cycle we have to learn and solve logging, managing performance and bandwidth etc. And this could be a great opportunity for Plotly Cloud as a platform for hosting primarili Dash apps.

I went through this hellish cycle so I will share my experience and painpoints that Plotly Cloud could help solve:

  • Comparing with Render 2 key features for me are missing:
    • Publish from Github - this is already in backlog
    • Cusom URLs - I submitted this feature and it is substential to tie the app with custom domain
  • Application loggs. Most of the services focus on Runtime loggs and Build loggs. What is super helpful are Applications loggs - how many people are using the app, singular pages. How many times was the callback used, with what data etc. Having this available by default would be fantastic. Even something support some best practice would be great (@eliasdabbas really scratch the itch with @log_this on last community meeting)
  • I am not sure how Plotly Studio will target problem of high outbound bandwidth - it was my biggest problem on Render or any other hosting service - by default data apps and Dash apps especially create a lot of outbound service. Just loading plotly libraries is tens of MB so an app visited by several hundred thousand of users can create 500GB+ outbound traffic. This is easily solvable by serve_locally=False and hosting images on some CDN like imgbb.com. If this will be also an topic in Plotly Studio it woul be great if it contained straightforward way in communicating this (something like option that “images” folder is converted to CDN automatically and it is excluded from bandwidth etc)
  • You are targeting authorization/authenthication which is great
  • There are a lot of other parts of the life cycle like testing, hosting and connecting databases easily etc. that could be targeted in Plotly Cloud or Plotly Studio.

Generally I see a huge potential in this Dash first service creating a whole ecosystem of services that could be provided for Dash apps even in some kind of best practice tailored for Plotly Cloud.

Keep up a good work, I am looking forward in next steps :).

This is great feedback, thank you for sharing!

App analytics is certainly something we’re thinking about. Providing automatic insights into callback usage and pages viewed is a great idea.

I’m just curious about your second point about outbound bandwidth. As you mention, it’s a pretty easy problem to solve with hosting Dash apps to set serve_locally=False and offload images if you need to.

To be clear we don’t have plans to meter for network traffic to our end users, but I’m wondering why this is something you’re concerned with if generally if you were able to solve it (but maybe there’s more to the iceberg I’m missing).

Good question. When you know the answer it is really easy hahah. When I look at the time 2 years ago when I had no idea about this solution I spent countless hours until I found anything about this topic. Even today I tried typing this issue to ChatGPT and Gemini and they do not suggest these solutions until you do not steer them into this direction. It is super nice to hear that you are not going to meter for network traffic.

But back to the topic. I think about it this way: back in the time when I had no idea about web dev and all those issues I would be super glad if there was a platform focused on Plotly Dash apps where I would run my app and it would offer to me (experienced data analyst but inexperienced web developer) broad pallete of metrics, tips, optimizations to my Dash app to make my “web dev” onboarding much more smoother. Sure, those things are probably not so important if I host my app to show it to my friend. But there are a lot of people here that are running their small buisinesses or projects on Dash apps that are already paying for hostings on various platforms. Most of those platforms are really powerfull and offer billions of options but if you go there as inexperienced web dev it is like maze where you have no idea where to start of. Having platform focused on Dash apps and being able to offer some of those features out of the box would be really neat to myself from 2 years ago :slight_smile: .

I hope I made my point clearer!