Upgrades Everywhere

August 24, 2020 by Kade

Another eight days have passed and as expected with young SaaS businesses, there have been a lot of changes in what has been happening behind the scenes.

Customer Growth

The site continues to acquire new customers at a higher than expected rate and even though I stopped all marketing and promotion for reasons that will become really obvious further in the post, Make Echoes currently has 25 paying users. That's an increase of 5 folks in a week completely dedicated to non-marketing activities which is positive. Rocco and I continue to talk about the potential for marketing but we both want multiple days, if not an entire week, of completely hands off with things working as expected.

A Top-Tier Streamer Joins

If you were paying attention to the @MakeEchoes Twitter account this week you may have noticed that I re-tweeted a pair of tweets from @ProfessorBroman. Through a sequence of events that's still not entirely clear to me, he was aware of the product and has been giving it a shot since he's been frustrated in working with editors previously. The ability for Make Echoes to let him make the !echo commands and let him control the inputs means that he controls the output.

ProfessorBroman had an interesting request on Day 1 of his usage and I thought it was important enough to drop everything and build it: The ability for the streamer to be the only one who can add clips.

On my list of someday features I had the ability for the streamer to turn off clip requests for an entire stream. Ends up if I make it streamer only, they can simply not request clips and it achieves the same result. It took longer than I care to admit to get this functionality built and functioning as expected in all use cases where it wasn't blocking Moderators or previously approved users. That said, by Thursday it was operating without issue and allowed me to cross of multiple items on the to-do list which always makes me happy.

Server Upgrades and Moving The Chat Bot Off of Main

Through the course of the week I faced two positive problems: my initial attached storage filled up with so many videos created in the last 7 days that I need to increase it by 50% and that a single 14+ hour stream was at a high enough resolution and frame rate that the server couldn't handle it.

The first is a relatively straightforward solution of simply paying for more storage. That said, I will end up having to undo this work in the next couple of weeks as this storage space is about 5x more expensive than the S3 compatible Digital Ocean Spaces product.

To solve the second, the easier solution that wouldn't require me to rewrite core code was to actually upgrade the server entirely. Sure, it'd double my server cost but in exchange I'd be getting 4x the local disk space and as importantly 2x the CPUs and RAM. These extra resources are allowing videos to be rendered out even faster than before. At this point, the core bottleneck is the number of workers I have downloading the VOD parts. With the new server, in theory I should be able to double that. It's something I'll end up testing later this week.

Finally, in an effort to begin separating things so that they can be scalable as appropriate, I moved the chat bot on to it's own little server. The reasons for this are two-fold at the moment. The first is that any time I did an update to the core server's code that required an update for the background running practices, that restart would cause the chat bot to restart as well since it's a background task. This would cause the 29:59 runtime clock on it to fall out of synch with the :28 and :58 reboot schedule and as a result multiple chat bots could be in a room and could add the same clip multiple times to a stream recap video. By moving to a separate server, this won't ever happen since it'll continue to perform its collection and processing regardless of how many reboots I may need to do on the primary server. Secondly, by having it live on a separate server, I can closely monitor this task as I have a suspicion that this process is where the CPU spin-up was originally coming from. If that is the case, any runaway process now won't effect the website, the account side or video rendering. All in all, a well spent $5/month from my current perspective.

Odds and Ends Completed

There are a bunch of additional little items that crossed off the board this past 8 days including:

  • Updated the onboarding sequence to eliminate any potential for a race condition with the Stripe webhook.
  • Added offsets for drift at 4 hours in runtime and 6.5 hours in runtime at 2 seconds at each interval.
  • If the video in the Kraken API is a highlight don't record its existence.
  • Eliminated a bug that was allowing videos more than 7 days old to stay in local storage if there weren't 7 streams on a channel previously recorded.

What's Ahead This Week

This week is a smaller development effort and it's mostly circling back to the previously mentioned items.

  • Checking the last two VODs on the channel (in case of dropped streams or breaking for new games) so if the older of the two has not been completed it will be and if necessary render a stream recap video.
  • Email notifications of completed uploads to the streamer's YouTube channel.
  • Longer clips requested by the same user during cool down period, remove the previous one, take the new one.
  • Begin the evaluation of changes necessary to make the move from server attached storage to Digital Ocean Spaces.

Hope you all are having a great start to the week.

[email protected][email protected]