I agree with others that the cloud vendors make it complex just to setup a simple service and push you to have these complex architectures. While they are beneficial for availability reasons, I question how often it is really needed.
I agree with others that the cloud vendors make it complex just to setup a simple service and push you to have these complex architectures. While they are beneficial for availability reasons, I question how often it is really needed.
I keep trying and failing to make this argument at work. The majority of the team are primarily PHP developers and if you want their best and quickest work they can write you a perfectly good internal service in PHP.
But someone several levels above me drank the kool-aid and now everything takes four times as long and turns out crappy because half the team is spinning wheels learning new proprietary cloud tech and reimplementing the base-level tooling we already had. I am yet to hear any explanation why this cost is worth it beyond vague mutterings of “scalability” and “enterprise”.
The original system was blazingly fast — it was actually a set of composable TCP workers and coordinators, but repeatedly called dirty names like monolith, legacy, synchronous by ambitious managers trying to demonstrate the need to migrate. Proceed to bring on legions of contractors and offshore teams to move everything to HTTP and AMQP, fully coupled to the cloud vendor’s mechanisms for these with all of the goodies.
Today they are paying a fortune for a slower system, full vendor lock-in, real customers dismayed and prospective customers aghast at the prices.
Recently they came back to the original engineering teams to “make it a real-time system” and panicked at the realization that this capability was unceremoniously sacrificed in the name of microservices, the cloud for the sake of hot-shot aspiring upper management to make their name in “modernizing” the tech. Yikes
They need to balloon the amount of people they manage and be involved in as many projects as possible for bullet points on their CV when they're applying for the next position.
It’s also designed to encourage and then monetize a certain style of complex, over-architected, high resource load development: microservices, use of single-cloud-proprietary services, tons of loosely coupled systems, etc. Cloud native is the J2EE of the present era.
This is an anti pattern that keeps happening over and over in our industry. It’s partly a result of the middlebrow meme— that mid developers love complexity— and partly something that is pushed because someone (consultants, cloud providers) are profiting.
Edit: I don’t mean to blast mid developers too much. One must often journey through the middlebrow meme to make it to the hooded dude on the right. The meme describes a learning trajectory. But we should try not to let the complexity explosion of mid developers become industry norm.
Modern businesses are full of outsourcing, temporary contracts and overdone management structures. This the shape of the software they produce.
For one of the projects where the demand appeared during working hours in my timezone, I did the math, and found this to be the case.
Pretty un-fixable without better stewardship over the software industry. That won't come for decades, so you may as well join the dark side and make the money and practice the way you want with hobbies or start your own company to enforce it.
I guess the stewardship can happen on a team level, but someone who's being restrained can always go find another job where they'll build the complexity they desire that ultimately gets maintained by someone else.
Like, you wouldn't rent a dozen ZipCars every day. If your business required a fleet of cars, you would quickly look for a better arrangement than pay-by-the-minute "convenient" app services.
The mistake most companies and developers make is mapping their organization structure to their deployment architecture. And then over provisioning everything. Kubernetes is the goto solution for companies like that. We spend less on our cloud bills than it costs to spin up even a simple Kubernetes cluster that does basically nothing. It doesn't solve a problem we have because we have a monolith. All I need is two cheap vms and a loadbalancer. If it gets busy, I'll add vms.
There's some other stuff we need, of course. The most expensive thing is actually managed search and databases clusters. They are nice but also pricey.
But from a cost perspective the whole point for me is actually minimizing my time investment. A managed database means I don't need to obsess about uptime, backups, and other things you would normally pay some team to obsess about 24x7. I don't have that and I can actually go on vacation and it's fine.
Of course all this stuff is way overpriced. You get the equivalent of a raspberry pi worth of compute for a monthly price that would allow you to buy several of those. Cloud providers actually put multiple customers on their hardware for the cheaper vms. So, these things are basically paying for their own cost pretty much instantly. When you use a managed database, it runs on shared infrastructure that minimizes resource usage. So why is that more expensive than a non managed one that has more idle resource use? Convenience. It doesn't actually cost them more to manage it. But it's more convenient for you. So they just charge you more for less.
Cloud pricing bears no relationship to actual cost. Which is weird. There should be way more competition on price. But it seems that there just isn't. Of course, people just mindlessly buy AWS because they heard it's good. That's why Amazon is so rich. The retail business is a side hustle for them at this point. And you can get some amazing deals from smaller providers. Hetzner gets mentioned a lot and they are pretty aggressive with their pricing. But it's less convenient.