4 ms·
The real problem is, people are deploying dozens of different coding languages, any technology that whimsically passes by, and replacing simple, streamlined mon
by bbarnett 6y ago
The real problem is, people are deploying dozens of different coding languages, any technology that whimsically passes by, and replacing simple, streamlined monolith technology with 100 micro services.
All of this is endlessly pushed by AWS, Google, Docker, and anyone else with a foot in the "Snag as much cash from DEVs" crowd.
Other old timers will explain how they ran thousands of hits/second on 6 or 7 bare metal servers, 15 years ago, without CDNs, using LAMP, ajax/js frontends, and more. The key was code optimization, SQL queries without inane and poorly written MVC SQL logic, and the list goes on.
I am relentlessly gobsmacked at how people are spending quite literally 100 to 1000 times the cash to host on AWS, using microservices. And often amused how new devs just can't get it through their head, that yes, this is 100% factually true.
Docker replaced something that was already done ; identical PROD and DEV environments. All DEVs I had working with me, were issued VMs with 100% replicated PROD. VMs auto-build using debootstrap + SVN checkout.
Rollbacks in prod? Handled by SVN rollbacks.
When I look at the insane complexity being displayed by containers on top of VMs on top of baremetal, the MASSIVE loss in performance (yup, it's there.. especially for IO)... I just don't get it.
Many DEVs have all been sold a pack of complete and total lies.
I get called in again, and again by clients to reduce cost, optimize resource usage. I literally bring 1000x performance boosts to the SQL layer with minimal improvements.
Anyhow. Yes, this was a rant. Sorry it's a reply to you specifically.
- secondcoming 6y agoIt's a totally valid rant, and one that I enthusiastically agree with. I work in adtech (apologies). We have maybe 10 - 15 instances (16 vCPUs, 31GB RAM) that each handle 10k+ HTTP requests per second. There's a push to dockerise all this. I don't see the point. I've often wondered about the potential performance loss of Dockerising all this, do you have public numbers available? We recently hired a ex-Googler to a management position who claims that on GCP, running docker may actually perform better than VMs. If true, that's really interesting, but I can't find anything to back it up. Code optimisation (or even profiling) seems to be a dying art since people think that it's easier to just throw CPUs at the problem.
- rubber_duck 6y agoWell it should be faster if you're replacing the VM layer and running docker on top of bare metal kernels, in theory you could use a cheap dedicated hosting provider to host a K8S cluster and probably outperform a managed cloud offering price and performance wise - but in practice this shit is so unreliable I would never want to be the guy on call maintaining this - they would need to pay me a lot more than the delta between managed cluster and bare metal. For non-critical computationally expensive stuff like analytics and BI it could make sense.
- secondcoming 6y agoThey wouldn't be bare-metal, they're managed GCE instances
- cooljacob204 6y agoYou can containerize a monolith server. I think this is more of a microservice issue then a container issue. Docker seriously simplifies my life greatly.
- e40 6y agoYes, people do this all the time.
- treis 6y agoDocker images are just lighter weight VMs. Or to be more accurate, they accomplish the same goals as full VMs in a different way. If you're running Docker in a VM on a bare metal server you're doing it wrong. You should be running Docker on a bare metal server. You're also conflating different problems here. If someone is writing poor SQL it doesn't matter if their deploying with a VM, Docker, or onto a bare metal server.
- jasonjayr 6y ago> If you're running Docker in a VM on a bare metal server you're doing it wrong. You should be running Docker on a bare metal server. Until a bug in Docker, or the CNI abstraction, or some resource hangs/panics the kernel on the bare metal, and then you have to reboot the whole thing taking out all the containers. This gets rarer, and rarer, as the bugs get ironed out, of course, but In my 20+ year anecdotal experience, a kernel running just a bunch of VM's crashes far less frequently than a kernel running containers.
- jen20 6y ago> they accomplish the same goals as full VMs Not if you're doing things that require certain kernel features. For example, if I have an application that uses io_uring, it's _very_ pertinent as to which kernel it runs on. A VM has that in scope, a Docker container does not.
- secondcoming 6y agoExactly. io_uring is a game-changer for linux.
- ultraluminous 6y ago"they accomplish the same goals as full VMs in a different way." They are explicitly not that. Docker containers do not provide you any real isolation guarantees from a security POV and make no attempts at such. This is extensively documented. [1] "If you're running Docker in a VM on a bare metal server you're doing it wrong. " Ummm... Running Docker inside a VM is by far the most common deployment type of Docker there is. What do you think is an EC2/ECS/GKE deployment? Hint, there's a VM running your containers in all of them. This is also what Docker the company recommends - https://www.docker.com/blog/containers-and-vms-together/ https://www.docker.com/blog/containers-and-vms-together/ [1]: https://docs.microsoft.com/en-us/virtualization/windowscontainers/about/containers-vs-vm https://docs.microsoft.com/en-us/virtualization/windowsconta... https://www.redhat.com/en/topics/containers/containers-vs-vms https://www.redhat.com/en/topics/containers/containers-vs-vm...
- vp8989 6y agoMicroservices is just a pragmatic, reasonable solution to the changing "economics" of software: - There is a lot more software being built nowadays - There are a lot more engineers working - The average age keeps decreasing to offset rising labor costs - The average skill level keeps decreasing because of increased abstraction and managed solutions (despite more information / history to learn from) - There is more B2C software running in Prod now that is "on the hook" for millions of $ of revenue So you have more, less skilled people working on things with higher economic value. The "microservices" solution is to limit the mess and destruction they can cause by giving them their own little sandbox to build in. Provided the "plumbing" is well enough engineered, it nets out to a better outcome than letting hundreds of 23 year old junior engineers loose on a monolith.