(I'm assuming the OP is referring to production workloads.)
I think PaaS is awesome. I actually consider moving to one of the managed offerings from time to time... then I look at the pricing.
As a systems engineer specialising in automation, it's hard for me to justify the $75-100/month fee from a PaaS provider (not including network bandwidth), when I currently pay that now for the same thing in AWS including network bandwidth (and I haven't even optimised it with CloudFront yet and static asset deployments to S3.)
I'm not saying PaaS should be a foregone conclusion based purely on my microscopic example and edge case, but if you can configure a CI/CD pipeline (I recommend GitLab CI or GitHub Actions), manage/configure an OS (I recommend Ansible), write Terraform to build out your infrastructure (loads and loads and loads of TF code libraries with example code you can just run with), and a few extra steps, then I'd recommend going IaaS.
You can keep the entire thing KISS, you'll know it inside out, you can grow it (or not) to any scale whilst keeping costs considerably lower than any managed PaaS available, you can hire someone else down the line to look after it when you've reached that level of scale/success/financial freedom, and more.
That being said, I can certainly see a huge value add in doing both: IaaS with a self-managed PaaS stack on top of it. That is, I think, the sweet spot.
Note: yep, maintaining your own infra' is undesirable to a lot of people. If you're one of those people, then stick to managed PaaS and pay the price (it's worth it in your case.)
Note: yep, your time does (technically) have a cost associated with it, but if you're building solutions based on IaaS everyday of your life, you've likely done a lot of the work already.
This is odd to me as well. The value of PaaS scales with developers. But Heroku et al target small shops.
If you have 100 dev teams, infra experience is a lot of “overhead.” If you have 5, you just make sure some of the devs know how to strace and tcpdump and can collab in an incident. Frankly, building infrastructure is easy. Maintaining it is the hard part. Preventative maintenance, security, recovering from incidents are all much harder than figuring out enough for it to run.
It was a brilliant idea. Let devs be devs. But the price has always been so high that, at scale, it wasn’t far off the HR cost.
We’ve gone 180 on that with k8s. Now you have to understand a datacenter with different vocabulary to effectively leverage it. You see low adoption at “I have an app” because it’s more complicated than it’s worth. Higher adoption above that. But almost 0 adoption at I need 100+ clusters. And 90% of what I see assumes to exist in a single cluster as if etcd never hangs itself.
We’ve built all of these abstractions, but ultimately you have to understand the thing below them (ie Linux and VMs) when performance sucks or something goes boom.
I don’t know how someone walks in and learns it all at once vs my life of learning with the growing system from Unix on physicals to now.
It’s like my life with Java. Most devs don’t understand where to start troubleshooting performance or the JVM, despite rich tooling (magical APM, JFRs, etc).
I think PaaS is awesome. I actually consider moving to one of the managed offerings from time to time... then I look at the pricing.
As a systems engineer specialising in automation, it's hard for me to justify the $75-100/month fee from a PaaS provider (not including network bandwidth), when I currently pay that now for the same thing in AWS including network bandwidth (and I haven't even optimised it with CloudFront yet and static asset deployments to S3.)
I'm not saying PaaS should be a foregone conclusion based purely on my microscopic example and edge case, but if you can configure a CI/CD pipeline (I recommend GitLab CI or GitHub Actions), manage/configure an OS (I recommend Ansible), write Terraform to build out your infrastructure (loads and loads and loads of TF code libraries with example code you can just run with), and a few extra steps, then I'd recommend going IaaS.
You can keep the entire thing KISS, you'll know it inside out, you can grow it (or not) to any scale whilst keeping costs considerably lower than any managed PaaS available, you can hire someone else down the line to look after it when you've reached that level of scale/success/financial freedom, and more.
That being said, I can certainly see a huge value add in doing both: IaaS with a self-managed PaaS stack on top of it. That is, I think, the sweet spot.
Note: yep, maintaining your own infra' is undesirable to a lot of people. If you're one of those people, then stick to managed PaaS and pay the price (it's worth it in your case.)
Note: yep, your time does (technically) have a cost associated with it, but if you're building solutions based on IaaS everyday of your life, you've likely done a lot of the work already.