Increasingly, the "web" is essentially the OS.
So for all the following, a "web stack" is required
(but these days, frequently "backgrounded"
Tiny individual IoT devices on up to AMAZON have this.
Note; the "stack" is frequently abstracted
And so, you don't hear about all the parts;
ESPECIALLY the parts that don't make someone rich.
(e.g. why you do hear about Docker but not Linux)
the basics of a web stack:
- "A computer"
- " An operating system"
- "A webserver"
- "Some real language"
- "A database for storage"
Lets tighten these up a bit:
- "A computer, possibly virtual, probably running Linux"
- "A webserver and a real language (or a language with a built in webserver)"
- "Optional Database"
A computer (possibly virtual)
- A dinky IoT thing
- Raspberry Pi
- Old computer in your closet
- Server on a Rack
- Virtual Hosting (Torch, DigitalOcean, etc)
Many different ways to do "Virtual" and "Virtual-like," but roughly:
i.e. literally fake the whole computer. You have to install the OS, etc.
This is "Docker" et al:
You don't fake the whole computer;
you wrap up and "package" the stuff you need to use;
and try to wall it off from everything else.
Less space, and what Docker is trying to do is to be the central hub for "reproducible builds.."
So that "installing a web server or service" is almost as easy as "installing an app on a phone"
(i hope they fail ☺ )
Because they're trying to make a kabillion dollars from it.
I'd be fine with millions, but not kabllions.
When you get big, you have to think about this large scale
and other tools for managing A BUNCH OF THESE.
Also, there's the Proton/Wine thing
Which doesn't much apply to web/hosting:
But may be big in the future in terms of Linux killing windows;
given that games are usually the hardest thing to emulate.
A computer (possibly virtual), probably running Linux
Funny, it's not talked about that much. Or enough.
Again, not the part that makes people Rich, or even popular
A webserver and real language:
Old school way (that's still pretty popular)
Webserver (which just serves up pages)
Language (e.g. PHP or ASP) — i.e. a web-specific language
A webserver and real language:
New school way
All in one
e.g. Python's Django
Again, quick review of languages
- CGI-Bin (old school. Honestly, I feel like we've come full circle)
- PHP/ASP (embedded in html)
- Python/Perl/ etc (general purpose language, with web possibilities)
Quick note on databases
Why YET ANOTHER LANGUAGE?
It's a good question. Data storage and retrieval is hard.
The 800lb gorilla.
Once again, why this mediocre language?
- Bandwidth isn't infinite
- People want interactivity
- Ergo, MUCH must be offloaded to the users machine.
But why THIS language?
First to market. That's pretty much it.
Has it gotten better?
Yes, I think. Almost out of necessity.
But just about EVERYTHING has been replicated, rewritten.
But-- LOTS of wheel reinvention. I mean LOTS
So much so, it's hard to keep up with.
Also, lots of transpiling and other languages etc. etc.
The RUNK problem
The ACTUAL CODE
So you want a "server"
Cool: Things to think about
Check out all things "Self-Hosted"
If it's just for the family inside the house:
- raspberry pi
- computer in the closet
So you want to do something at home
Check out EVERYTHING "self-hosted"
So you want to do something on the whole internet?
Can be harder, since big telecom decided that we shouldn't do it like this ☺
- Aka, it's all a web, it's all computers, but we're pretending it's only one way.
- Try opening the router
Look into hosting
DigitalOcean et al.
Pretty cheap, it can be.
(cheap enough such that I *think* I have 1 or 2 virtual host machines that literally aren't doing anything right now)
There's also Amazon et al
NGL, I know very little about this personally.
I know you can spin up virtual machines very easily, usually for free?
There's also "Specialized" hosting
Usually, most people think of Web / Email hosting
(this is what I do, I actually don't have "root" on jrm4.com,)
Mostly due to inertia and email.
Back to home...
Stuff I use or mess around with
- python homeassistant, node-red