Time to Break Out of Your VMs. For Containers, Home Is Where the Bare Metal Is
In this technical retrospective (2018), @chakri-nelluri shares practical architectural lessons learned from running, scaling, or migrating production software under lean constraints.
Core Principles for Independent Builders:
Defaulting to simpler architectures (such as monolithic frameworks, SQLite, or managed VPS) prevents early engineering bankruptcy.
Evaluating true compute and egress costs reveals that high cloud bills can often be slashed by 80%+ through judicious re-platforming.
Code you write at 2 AM as a solo engineer must be easy to debug six months later without complex microservice dependencies.
Community Debate Themes:
HN engineers debated the tradeoffs between cloud convenience and raw server economics, database indexing strategies, and resisting premature architectural complexity.
CATEGORY Frugal Engineering →
HISTORICAL ERA Cloud & Mobile Era (2014–2019)
COMMUNITY SCORE ★ 22 points
TOTAL DISCUSSIONS 6 comments
Ugh, it's a shame it's such a hype piece (especially the first 5 paragraphs), with no mention of security. While VM escapes are possible, generally it's harder than a container escape. Since plenty of people already run containers on bare metal, I'm really not sure what the post is trying to say or trying to sell, other than taking a dig at VMWare:
After all this, I still don't really understand the value-add of Diamanti. So it's Kubernetes + a GUI? Why would I choose it over doing my own on-prem on one extreme, or using a cloud solution (AWS/GCP/Azure) on the other? (Except maybe to avoid doing Kubernetes upgrades myself :D )
I disagree with the management simplicity argument. I’ve tried both and personally prefer VMs over metal for non-cloud container deployments.
VMs (e.g. via vsphere on top of the metal) allow you to:
* Have more kernels (lowers container to container interference)
* Allocate iops to things
* Choose whether you want to use the vm layer (vmotion/drs) to achieve uptime in the face of hardware failure or downtime - if you are metal only you have to cluster everything.
* Trial new stuff (different base OS or scheduler) much more easily
* Get networking the way you want it without configuring switches or moving cables all the time.
BTW the terraform vsphere provider + govc makes managing vsphere with no pointy clicky pretty easy these days.
Isn't the main variable impeding the % of bare metal container deployments scaling with automation in areas such as inter-container networking and visibility.
Many years of "wrappers" around VMs in those areas - people, processes and software. A few years for similar to develop for a containerized world?
Until then, we run containers on top of VMs for use cases at scale because (even if not efficient from other perspectives) we do get the wrappers (wrappers which do impact time, TCO, risk, etc)?
Cloud providers have standardized on VMs. If I were to deploy an app in the cloud using bare metal servers, I would lose all of the infrastructure, convenience and tooling provided to be by my cloud provider (AWS, Google Cloud, Azure, etc).
This is the strongest argument for me to continue to use containers on top of VMs.
If someone can provide me a secure, convenient, low-cost way to run my own containers on bare metal, I would be very interested. Does such a thing exist?
Have fun with the data breaches. Maybe if we were talking about unikernels...