Snowflake’s consumption model is superior

In my opinion, Snowflake does not penalize its customers for bad queries. In fact, it protects the customers from disastrous Billings and help them navigate emergency situations better. Let me give you two examples from my past and current jobs.

Besides Snowflake’s consumption model - customer pay a fixed number of credits (dollars) by hour - there are two other business models:

Google Big Query: consumption model by amount of data - charge you by amount of bytes you pull. Billed monthly.

On prem: yearly or multi-year contract. You sign with a fixed size compute cluster, pay a fixed price, then share this resource across the company. It is possible to expand if one needs more compute but it is usually a nightmare if you don’t get it right by the time you sign the multi-year contract.

I will not go into Databricks here since I don’t have first hand experience.

Example 1: GCP Big Query

In one of my past jobs, one of the analysts
wrote a SQL query for a report that cost the company a fortune. By fortune I meant that GCP billed an amount that can pay for a dozen full time employees for a year - for a single query.

How did this happen? It is because GCP charges by amount of data pulled. If you accidentally run a large query very efficiently — say joining some sort of website click event data of all the website visitors to a completely irrelevant data — then you get a large bill. There are ways to prevent this but it requires set up the correct cloud monitoring parameters for the company. Instead, my company found out only after the fact. This one query blew the whole team’s year 1 cloud budget during our migration to cloud. It was bad. I did not probe into how much we were able to negotiate back or was the bill completely forgiven on this one incident.

Advantage of Snowflake pricing model for customer: because Snowflake credit usage is tied to the “warehouse size” (think of how many computers are I. Your cluster) - if this analyst’s computation was assigned to a size Small warehouse (2 credits an hour), then no matter what mistake this person makes, the company will not get charged by more than 48 credits a day, or 1,440 credits a month. For most teams that would be about $5k-$8k a month. So there are never “billing surprises” - the only way you can get surprised by the Snowflake consumption model is if your IT team can’t do basic math or Snowflake decided to charge you a lot more dollars per credit during the next contract renewal.

Example 2: On prem queries

On prem set up always mean you have to estimate how much compute the company uses. And the amount is fixed over longer periods - you can’t decide to double the compute today and shrink it back tomorrow. They tend to be “cheaper” by the amount of compute per dollar but it means the team loses flexibility to scale up and down when needed - so the invisible cost is developer/analyst productivity.

An example at my previous job would be a Hadoop cluster that we had. At one point we have a scheduled query that needs to run daily for compliance reasons. But the query is soooo slow and compute intensive that everyone elses’ query took 5-10x longer to run. So usually I would be getting a result in a minute, now it would take me 10 minutes. Some longer workloads we have that takes 30 minutes becomes 5 hours. This was a significant hit to people’s productivity but there was no way around it. How much does it cost the company? Think 100+ people with $100k+ salary - so 10 million+ in wage and productivity that was severely impacted for a month.

Advantage of Snowflake pricing model for customers:

Just a few weeks ago we had to do a “full refresh” of our data warehouse in Snowflake because of an issue. Our warehouse usually runs on size M (4 credits per hour) during business hours for analyst queries. At size M this would take 10+ hours. But since it was an emergency and had to be done during business hours - what do we do? We went to the UI and toggle the warehouse size to XL (16 credits per hour) the ran the full refresh. It only took us 1 hour. And then we sized down the warehouse to M and we were back to business as usual. It was seamless. This is impossible with on prem contracts. We paid only a little more (~$60) on that day for a data engineering team of 10’s sanity and productivity during an emergency.

The bottom line

Snowflake has a brilliant product and their pricing strategy on top of their product provides superior customer experience. I believe this is the source of their success. I hope this provides a better view on how their pricing strategy compares to others.

185 Likes

Thanks Chang, that was an awesomely clear post, and even I, a tech novice could totally understand what you were talking about and how it worked. I really appreciate it.
Saul

18 Likes

Our warehouse usually runs on size M (4 credits per hour) during business hours for analyst queries. At size M this would take 10+ hours. But since it was an emergency and had to be done during business hours - what do we do? We went to the UI and toggle the warehouse size to XL (16 credits per hour) the ran the full refresh. It only took us 1 hour. And then we sized down the warehouse to M and we were back to business as usual. It was seamless.

Thank you very much for the pricing tutorial!

Throughout software licensing history, software vendors tried to price their products based upon the size of the box (computer, allocated DB space, number of CPUs, MIPS, etc., etc.).

Over time, the price to acquire the “box” got less expensive and the utilization of the box, excluding temporary peaks, got smaller. This was good for (greedy) software vendors, because their revenues increased every time their customers bought a new box, regardless of whether or not the underlying value of the software increased as a result.

Software vendors had an incentive to optimize their business on the size of the box instead of the underlying value of their products. This really pissed off a lot of customers.

Eventually, software vendors had to adjust their business models to better reflect utilization, which lead to a lot of friction, because they were used to pricing based upon the size of the box.

It’s difficult to negotiate new contracts with customers who licensed the entire box that now only want to license what they use: You are charging me for 100k MIPS but I’m now only using 50k MIPS with your product. I expect you to cut your price in half”. This only forces confrontation and greatly extends the sales cycle to the point that selling becomes extremely expensive and difficult to predict.

Companies that get their pricing right from the beginning don’t have this problem. Their pricing is transparent and relatively fair, enabling customers some level of flexibility and predictability without getting screwed.

It’s better to take a small hit every now and then to ensure that you’re treating your customers right than it is to take advantage of your customers for short term gains. It seems to me like Snowflake has done this right.

Now that SNOW’s stock price has come down this far, it may be a good time to purchase the stock or maybe even some LEAPS.

DJ

17 Likes