Mike Perham, Creator of Sidekiq: From Employment to Independence

2 years ago (codecodeship.com)

This is one of the best businesses I have heard of. Even 6-7 years back, Sidekiq was grossing $80k/month [1]. I imagine it must be much more now. No servers to maintain, no employees, minimal support work and Mike has the complete freedom to work on updates whenever he prefers. Almost entire revenue minus payment processing costs must be profit. Imagine making $1M / yr working only 10-20hrs per week (Don't wish to presume here, but that's my estimate of the man-hours it costs to run).

> I still have 0 employees and don't plan to hire. I tune my business processes to run as lean as possible: Most of my customers are on credit card so their payments are automatic. The gem servers take about one day of maintenance per year. I can't really outsource much of my support work because it is so technical and specialized.

> My gem server is a $6 droplet on DigitalOcean. Because gems are just static files, that little droplet can handle millions of requests per day with just Apache. Oh, and I run three servers in parallel for failover purposes for a grand total of $18/mo.

I wonder what makes Sidekiq special? I don't imagine any equivalent product (background job processing) in the other languages is raking in that much, if making any revenue in the first place.

[1]: https://www.indiehackers.com/product/sidekiq

  • Hangfire and Oban are two other background job systems which have a commercial aspect. AFAIK Hangfire has been around almost as long as Sidekiq and is still actively supported.

    I'm closer to $10m than $1m in annual revenue now.

    My take on Sidekiq's secret sauce: a job system is a distributed system. Most of Sidekiq's commercial features are available as OSS gems but the complexity sneaks up on you as you integrate 3-6 of those features together. Building your own almost always leads to a worse system than the mature, well-debugged system which I have curated.

    • Super excited of you.

      - Do you have any outside hired help? I see you still have no employees, but do you contract with anyone to do customer support as an example?

      - How many approx customers do you have these days? $10M revenues = 10,000 customers. Is that roughly correct, if so - wahoo, congrats.

      4 replies →

  • Sidekiq is special because it's crazy performant, and it _works_.

    Mike has built a system that's rock solid, and he doesn't twiddle around with it willy nilly. He keeps it super stable.

    The people paying for it (I'm one of those people) are paying for the reliability, in addition to the features.

    Mike's also managed to find a real sweet-spot with the features he holds out for Pro/Enterprise. The stratification is just right to nudge you up, but it always feels like you're getting a good deal when you pay.

  • Oban is a roughly equivalent elixir library. They claim to have hundreds of customers and their cheapest plan is $500/yr, so maybe they make an order of magnitude less? Considering the relative language popularity that seems pretty good.

  • > I wonder what makes Sidekiq special?

    Time, know-how, and long term dedication are the key ingredients from my perspective. Maybe he's working 10-20 hours now, but there's support and development every day for the past 11 years.

    > I don't imagine any equivalent product (background job processing) in the other languages is raking in that much, if making any revenue in the first place.

    I guarantee, there are background job processors in other languages making revenue.

    • > I guarantee, there are background job processors in other languages making revenue.

      I had no idea until someone just hinted me that this was self-referential... LOL, apologies for the now-embarrassing other comment I made LOL (I only know you as "sorentwo", whoops!)

  • > I can't really outsource much of my support work because it is so technical and specialized.

    Yeah, I had a Sidekiq question on StackOverflow and Mike Perham answered himself couple of days later.

  • Just like the underlying platform it was built for (Rails) - it is so stupidly simple to deploy Sidekiq. Performance is great and a lot of complexity is well hidden. This makes it a great product overall.

Mike Perham's Sidekiq was what I modeled my own business, EmailEngine, after. I took my decade's worth of expertise in email protocol implementations (I also run the open-source Nodemailer library) and built an email gateway app my customers can download and run on their machines or servers. Just like Sidekiq Pro, the customers need an active subscription to run it, but the app runs on their premises, and they maintain it. I only run the key generation and validation server, which costs me around $50 per month, including all the backups and so on.

I quit my job to go full in with EmailEngine exactly one year ago, when MRR for EmailEngine was $500, now it is $3,900 and steadily growing. I do work full time on it, but the result is async - the work I put into EmailEngine today brings me income sometime later, and the recurring income I receive today is unrelated to any effort I put into the company right now.

  • Unsolicited feedback, always link to your business in your posts.

    I googled “emailengine” and it’s wasn’t super obvious which was your business since so much paid ads exist for that search.

    • Oh, yeah, I forgot my pitch. The link is https://emailengine.app - EmailEngine acts as a mail client, basically the same way Thunderbird runs on desktop, or the iPhone Mail on the phone, but instead of a GUI it has REST API and instead of desktop notifications it sends JSON webhooks. And instead of a single email account, it can manage thousands of accounts.

      3 replies →

  • You have a bullet point about compliance / hosting concerns. I'm curious, do you have any idea how many of your customers care about that?

    Do you have any concern that a customer is going to look under the covers and re-implement your product? I would guess the overwhelming majority of customers are going to be happy to just consume the API and go about their own business, but some products attract copycats, and handing out code / build artifacts makes that easier.

    The tradeoff you've made makes a ton of sense if you're not concerned about copycats.

    • Compliance issues are a real concern. For example, I have some customers who switched from Nylas to EmailEngine because Nylas closed their Canada DC, even though EmailEngine is an inferior product. I'm not really worried about copycats, as it's a niche and complex project. There are literally hundreds of email RFCs, some as long as a book, and you would need to have at least an overview of these. You can already use IMAP client libraries in any language, but what EmailEngine does is cover all the weird edge cases, like handling sequence numbers as identifiers. Those who have the skill likely have better things to do, and those who don't probably find easier things to copy.

      8 replies →

    • If you're worried about copying the code, I could see having the self hosted artifact be compiled or otherwise obfuscated would probably deter most people who wanted to reverse engineer it, since it would take significantly more time and effort to open up a compiled app than something just made in JS for example.

      If you're worried about copying the API design, well, the implementation is the hard part, not necessarily the API design, which the Google vs Oracle lawsuit also showed, interestingly enough.

      1 reply →

  • I was just about to post emailengine here, the business model is so similar to sidekiq.

    Any other great ideas?

    • Yeah, it is so similar because I blatantly copied it. I had the old Changelog podcast episode with Mike Perham pretty much on repeat when I tried to figure out how exatly to set up my business.

"I toyed with Sidekiq.js but decided to kill that idea real quick because, as we all know, JavaScript is terrible"

This is why I love the ruby community, so much sense :)

  • From the JS community, this is sadly the level of snark we expect.

    It doesn't have to be like this. Your community tried to be better once. Have you forgotten?

    https://jasonfleetwoodboldt.com/courses/stepping-up-rails/ma...

    • There seems to be an ever-present high-level of defensiveness from the Ruby community over JS/React. Rails has had a profound impact on web development, promoting fast starts and shipping quickly. Companies like Shopify and Twitter benefited greatly from this. But the framework is 18 years old. The web that it was created for has changed significantly.

      5 replies →

    • Matz is nice but that culture's definitely not coming back, anymore than the kind of fun and curiosity that _why brought to us. Maybe it's inevitable as communities grow and people taste success?

      Regardless, it's probably better if we leave room for little jokes with each other.

      1 reply →

    • You act as if some percentage less than 100% of Ruby users have extensive experience with JS as well...

      OK, maybe it's only, say, 96% of Ruby users, or 100% of Rails users at least

      8 replies →

Sidekiq is one of my favorite things about using Ruby, I include it in my short list every time a "Why use Ruby?" question gets asked. I miss it desperately when I work in other languages. I plan on giving Faktory a shot ASAP.

Mike has always struck me as a great guy, really the kind of person who you're happy to know is building one of your favorite tools. In a world of starving open source contributors and mega corps throwing around weight, his success with Sidekiq stands out. It makes me very happy to see.

> I was Director of Technical Operations at The Clymb, which was outdoor-focused e-commerce vendor (think REI without the stores). I had a team of four and we were responsible for site devops and infrastructure. This was perfect because they were my alpha customer and I was in charge of the tech stack. The Clymb switched to Sidekiq immediately, of course, and every Sidekiq Pro feature I wrote was running in production before it was released.

This makes me curious about either

(a) conflict-of-interest rules at The Clymb that may or may not have governed the DTO directing the company to use his own separately-owned (commercial?) software.

(b) negotiating private ownership of software written for The Clymb.

One of those must have been relevant?

  • I started work on Sidekiq right before I joined so I made sure my employment contract had a IP carve out for anything related to Sidekiq.

    I never charged The Clymb to use the software. Previously they had been using delayed_job and were suffering badly from scale issues due to the use of MySQL as their queue store.

Love Sidekiq and loved how he runs it. Really feels like the right way to make money on OSS. Enterprise never crippled the free version.

Mike is an inspiration to me and my project!

  • Same. He's always been a role model for my business as well, especially when I was just starting out. My business uses Sidekiq every day. It really is a great piece of software. He's also one of the reasons I think open source software can be highly profitable if people just figure out a business model that works.

Mike Perham is an inspiration to me both in terms of Ruby/tech as well as business.

I've been using sidekiq now for almost a decade and had the pleasure to meet Mike at a Ruby conf many years ago.

Naive question: How do you deter thieves who would pose as legit customers, but instead redistribute the library?

  • I know tons of other companies will share my view that we would never stake anything remotely important on a stolen library to save a minuscule amount of money. It would be absolutely idiotic.

    Instead, we shell over the negligible monthly fees, spend no time thinking about it, and move on to solve real problems.

    There are enough of us that it probably simply doesn’t matter.

Spoke with Mike at a couple of Railsconfs a few years ago (before I got into Elixir). Really great guy.

He's also a standup guy in terms of contributing back to worthy things here in Oregon.

It's always interesting to find out about these niche subcultures. Having worked with batch schedulers of all varieties for a couple decades, I've never run across Sidekiq but, then again, I didn't realize anyone had actually built anything in Ruby in the past decade.

I guess Matsumoto should have charged for Ruby. I'm sure Mike Perham and Derek Kraan would have been glad to pay for that and that the Ruby community would be in a strong and healthy shape.

  • People need to eat man, doing something for free is a luxury not many possess. We can see how messed up the financial situation is for a lot of Open Source devs and their lives would be better if they were charging money instead of subsisting off grants and donations.

    I don't even necessarily disagree with your point that without being free those things wouldn't have taken off but we need to find a way to strike a balance in the developer community.

    Sidekiq having a free version and an enterprise version walks an okay middle line imo.

    • I personally try to spend money or use ad supported anything that is open-source just to help someone else eat. It really hit home for me about five years ago when the author of a WoW addon[0] couldn't develop anymore because of his financial and life situation.

      So many communities across the web rely on people putting in their spare hours for free just to enjoy things. Whether it's spreadsheets in Eve, Addons and Weak Auras in WoW, forum analysis posts, or whatever goes on in the depths of pvpoke, so much free labor underpins massive parts of the world today.

      I would love something that I could donate x money to per month and then based on usage, have it dole out to all the content providers with perhaps a minimum per month. It just seems daunting to do that as a) not a crypto scheme and b.) across all the various creator landscapes.

      [0]https://www.polygon.com/2018/9/25/17901552/world-of-warcraft...

  • Well Sidekiq is free to use. It's only the pro version that he charges and the free version code is open source.

    I don't see the problem in having that kind of business model, it still allows the community to thrive and offers entreprises a way to have premium support.

    Plus it allows him to invest more time in maintaining the free version.

    • I have no problem paying for the Pro version, but one if its marketing pitches is "enhanced reliability", which is a wild marketing spin on "the free version will lose jobs in fairly common scenarios".

      In sidekiq without super_fetch (a paid feature), any jobs in progress when a worker crashes are lost forever. If a worker merely encounters an exception the job will be put back on the queue and retried but a crash means the job is lost.

      Again, no problem paying for Pro, but I would prefer a little more transparency on how big a gap that is.

      23 replies →

  • This is a very bad take. From an OSS perspective languages can attract large communities of contributors and corporate sponsors because of their broad appeal and utility. Specialized libraries will have more trouble doing both and may need alternate models to sustain themselves. From a business perspective, Mike offers not only a free version but the paid enterprise version comes with support from Mike and his team, which is something you can't get from a language owner unless you outright hire them or they run a consultancy.

  • Hilarious take given the fact that there are plenty of orgs making an order of magnitude more than Mike is that rely on Ruby.