Building My Own RaidBots Service

A little background, I played World of Warcraft during the Shadowlands expansion and there came a time that I began to care about min/maxing my character. For context, min/maxing is the process of minimizing undesirable qualities and maximizing desirable ones. Typically, when min/maxing a character, you pursue best-in-slot (BiS) items and use item attribute weights ( aka stats weights) to inform choices for preparing your character for various challenges. A typical tool that is used to calculate this information is an open source project called SimulationCraft. Since this application can be somewhat involved and require a moderate strength computer, not all players are able to make use of it and are unable to explore min/maxing. Introduce RaidBots, a service that allows a player to run SimulationCraft simulations to calculate their character’s ideal items and their stat weights (among many other things) through a website. It’s a well built and convenient tool providing free services as well as a paid tier for players that want more.

With that context, lets talk about me. I’m cheap… I investigated RaidBots and took advantage of their free tier. When using the free tier, when you request service, you get in line with all other free tier users. During low traffic times, the wait for services is about 1-2 minutes. During high traffic times however, I’ve waited as long as 20 minutes for a simulation to start. If I bumped up to the paid tier, I could skip this line. As a note, I understand why there’s a line for the free tier and the cost of the paid tiers is acceptable for the value you get. Now, I’ve been working on a personal project for a while and had needed a way to distribute Android application packages (apks) to my testing friends because I don’t want to wait till I finish the laundry list of requirements to distribute a beta application on the Play store. Additionally, sending the apks through discord/GoogleDrive/Email was clunky and unreliable at best. One night while waiting ~15 minutes in the RaidBots public line I got the idea to build my own RaidBots like service and use it as a reason to prove out a content delivery network (CDN) to also solve my apk delivery woes.

Fast forward to the end, I built it and it has saved many hours of sims and provided me lots of fun/interesting problems to solve and technologies to study.

I’ll be adding more posts later to further describe the system if there’s interest or I if get bored. However, included below is a high level diagram of the application. The services shown, except for the Identity Server service and the TruNAS server, are automatically built and deployed to a Kubernetes (k8s) cluster (This is honestly a meaningful use for k8s as opposed to this other project of mine).

High level overview of the Atriarch Simc Runner architecture

Additional technology not listed in the diagram that helps to bring this application together is listed below:

  • ELK stack
  • Kubernetes
  • NexusOSS
  • ArgoCD
  • GitHub
  • Jenkins

I hope this was interesting at the very least. If you have a question about problems I may have tacked, place them in the comments below and I’ll see what I can answer.

Leave a Reply

Your email address will not be published. Required fields are marked *