Fastly is a CDN, Cloudflare has a CDN product in its product range. Cloudflare is an internet technology company, not just a CDN. Cloudflare product range seems to be constantly growing and getting better.
While Fastly technically has other products, they are way off the delivery and execution of Cloudflare. Fastly Cloud@Edge has the potential to be a FAAS / AWS lambda killer but Fastly have failed to realise the product unlike Cloudflare workers, which I don’t think is as technically good as C@E but as a product Cloudflare workers is good enough, simple to use, good value proposition and actively being iterated on. I’d choose cloudflare workers over c@e simply because Fastly make it very hard to use the product and pricing wise despite WASI being extremely interesting.
Go to Fastly’s website, try to figure out their product range, then try to calculate the cost, then try and enter a credit card to use there services. It’s difficult! Contrast to Cloudflare who have a generous free tier to hook you in, nicely tiered products with transparent clearly displayed pricing. The Clodflare tiers are just enough functionality to tempt you to the next tier without even thinking about it when you need to upgrade. Giving Cloudflare your credit card to give the money is trivial, no hunting around the UX or “please contact sales” at the end of every page in small print.
The complainants about Fastly can be the result of they only want to deal with enterprise customers. That’s fine but the likes of AWS, DigitalOcean, dev service companies where built on hooking developers with easy entry/pricing who then took the product to there day jobs at the enterprises. I often hear it called the flywheel effect. Cloudflare seem to be taking the hook devs, build a fan base, make it attractive + easy to use approach to grow organically not lock out the small spenders and only talking to enterprise level spenders.
The tides turn, IMO, when you start to compare ZPA and Cloudflare Tunnel and Access. Zscaler ZPA is way behind the curve here and their deployment options are horrendously legacy in nature. Case in point every "connector" from Zscaler is a VM. People may complain about "cloudflared" but you're never going to see any of Zscaler's client/server code out on a public repo. Cloudflare has far more flexible options to cover more aspects if you're charter is Zero Trust in workloads.
I view Zscaler as a slight pivot with respect to how Palo Alto Networks and Checkpoint operated in the firewall market forever. It's the same old take dumped in the cloud. And at the end of the day Zscaler's pedigree is definitely user focused but now they're trying to shoehorn in workloads and a lot of the product is just not designed to offer a solution for workloads like Cloudflare is. Some of their acquisitions in the last few years were not good or scalable products, either.
The last point I'll mention is that Zscaler offers no public connectivity solutions. So, unlike Cloudflare who's fully ready to take on large scale traffic for your Internet facing applications Zscaler has nothing to support you there. They talk a lot about how many POPs they have globally and the connectivity in those POPs. They also like to claim they handle more requests per day than Google. It doesn't matter though because Zscaler doesn't have the pedigree to operate as a CDN nor would I trust them to given what I've seen of their other product lines.
If I'm betting with my own $$$ Cloudflare will eat Zscaler's lunch over the next few years.