5 ms·
It would help to clarify some words: "Bare metal" means that your application is running on the same OS that is also running the raw hardware (metal), aka no v
by whalesalad 5y ago
It would help to clarify some words:
"Bare metal" means that your application is running on the same OS that is also running the raw hardware (metal), aka no virtualization. Containers are not (generally) the same as virtualization.
The analog to bare metal is virtualized, where the hardware your program is seeing is not necessarily the hardware that is running on the actual host machine.
A docker container could ostensibly be considered running on bare metal. A container is really just isolation but the parent OS/kernel is in command. Here is a graphic that illustrates the differences: https://www.sdxcentral.com/wp-content/uploads/2019/05/ContainersvsVMs_Image.jpg https://www.sdxcentral.com/wp-content/uploads/2019/05/Contai...
What you are really asking is do you need an abstraction layer or orchestration tool to manage doing this.
The short answer is that no you do not need it at all. If you can DIY this and are happy with it, that is sufficient. For example, a current deployment process for one of my clients (EC2 environment) involves stopping a custom systemd service, pulling the new binary/deps and then starting the systemd service. Really simple with a small instant of downtime, but within this environment that is not a problem.
- einpoklum 5y agoIt's also worth mentioning that even if you do not have a virtualized PC, you might still not be running on bare metal. Case in point: Java applications. They run in a language-specific virtual machine. (Also Scala, Clojure etc.) One could make an argument that this is also true for interpreted languages, but that gets into some splitting of hairs regarding the definition.
- whalesalad 5y agoI don't consider the VM of Java to be "not bare metal" because you can still interface with the unadulterated operating system
- sackerhews 5y ago"Bare metal" is running a program on the bare metal, without an operating system in between.
- andrewstuart2 5y agoI've never heard bare metal used that way. Any time I've heard it used, it's referring to a lack of virtualization. What you're talking about is usually referred to as a unikernel.
- sackerhews 5y agoNo, what I'm talking about is usually referred to as bare metal: https://en.wikipedia.org/wiki/Bare_machine https://en.wikipedia.org/wiki/Bare_machine
- orev 5y agoWhile I have seen this definition used in some very specific circumstances (like high frequency trading where they can afford to hire people to actually write a fully customized app for the hardware), this definition is so specific as to be essentially useless as it would apply to virtually nobody. Typical IT usage means something is running on an OS that’s installed on the hardware, as opposed to in a virtual machine.
- sackerhews 5y agoIt's not "used in some very specific circumstances", it's the very definition of bare metal. https://en.wikipedia.org/wiki/Bare_machine https://en.wikipedia.org/wiki/Bare_machine
- axguscbklp 5y agoI have never seen "bare metal" used to mean anything other than running directly on the hardware instead of through an OS, so I guess the term simply means different things in different communities. The group of people who understand "bare metal" to mean what I mean by it is much larger than "virtually nobody".
- orev 5y agoBased on other comments here, it appears this is not as clear as I thought. I can see it being used either way, but definitely understand that in the “pre-virtual-machine” era, it could be used this way.
- user-the-name 5y ago"Bare metal" traditionally means running with no OS. Your app takes the place of the entire OS. And you can definitely run a bare metal application virtualised, just like you can run an OS virtualised.