Jurassic Park was a great film. Steven Spielberg brought technology into the film era in a major way with computer generated dinosaurs and some now-classic film lines, many of which came from Jeff “Dreamboat” Goldblum.
One other line that seems to be making a comeback is the title of this post, uttered by the character Lex (played by Ariana Richards), as the park is running on a UNIX environment which she is able to figure out to help prolong the inevitable Death-by-Dinosaur. The human protagonists manage to escape from the terrifying velociraptors; knowing UNIX was a good thing.
26 years later, UNIX lives on in various ways (including being the base of one of the most popular mobile platforms: iOS). Various flavours of UNIX have been mostly POSIX compliant. The Portable Operating System Interface is a standards-based API that is meant to maintain compatibility between various operating systems. That’s why a lot of applications written for one flavour of UNIX might run on another, including Linux (which isn’t actually UNIX).
Let’s talk a little about this open-source not-quite-a-copy-or-a-clone of UNIX, called Linux, written by Linus Torvalds (whom I find deeply obnoxious, in my opinion). Yes, it’s named after him. Just be thankful we don’t have an operating system called Randolphix. Incidentally, Torvalds also wrote the ironically-named source control tool Git, which lives on prominently in GitHub.
(Note: I want to head off some of my more technical readers who may be ready to froth at me in the comments. I’m glossing over some things here for simplicity. For example, I know that the Linux kernel and the GNU applications that run on top of it are not the same thing. No one — outside of a few circles — cares.)
What’s been particularly interesting is that we’ve had a couple of years now to digest that Microsoft loves Linux. From a maniacal Steve Ballmer declaring Linux a cancer only a few years ago, to Microsoft releasing SQL Server for Linux in 2017, and then acquiring GitHub in the past year, it points to an interesting future.
This future is closing a loop that started many years ago, when Microsoft owned their own UNIX variant called Xenix. If you’re bored, read what happened with the company that bought the company that bought Xenix from Microsoft and what happened to them. I don’t often root for lawyers, but IBM’s legal department gets a special mention.
From its heady days of Xenix, Microsoft then acquired the code that became MS-DOS. After visiting Xerox PARC and seeing the future of overlapping windows and mouse pointers, they wrote Windows, and then Windows NT. An important note here is that NT was a kernel that was originally engineered to be compatible with POSIX and IBM’s OS/2. For market-related reasons, they decided to stick with the Windows API, but it’s worth remembering that Windows NT shipped for Intel (and AMD), DEC Alpha, MIPS and PowerPC chipsets, and eventually ARM as well in the current Windows era. That was achieved by abstracting away the hardware behind a thin layer called the HAL, or Hardware Abstraction Layer.
For all the complaints about MS-DOS and the Windows 9x range, Microsoft has always seen the big picture. Nowadays we can even run Ubuntu Linux inside Windows, using the Windows Subsystem for Linux (WSL).
And so we come back to SQL Server, running natively on Linux, using a very thin translation layer called the SQL Server Platform Abstraction Layer, or SQLPAL.
Now to their credit, the developers of SQL Server already implemented a lot of operating-system-like behaviour directly in SQL Server, so the API calls going out to Windows (and thus Linux) are quite limited compared to other applications, even accounting for SQL Server’s complexity. That gives them an advantage in terms of platform independence with a smaller surface area to worry about.
Currently, SQL Server runs natively on more than one operating system. If you like counting distributions, it runs on four (Windows, Ubuntu, Red Hat, SuSE), and then through containers, it can run on any operating system that runs Docker. This also includes, coincidentally, another UNIX based operating system: macOS. For all intents and purposes, the playing field just opened up dramatically to every major platform on the market.
Bringing this post to its logical conclusion, where dinosaurs are discussed in the same context as UNIX, we are entering a world where everything old is new again. We see it already where the idea of scheduling processing time on shared computing resources could be called either “mainframe” or “serverless,” depending on your frame of reference, so it stands to reason that any arcane knowledge including UNIX, Linux, and networking are all coming back again with Docker, Kubernetes, and running stuff from the command line. Despite physical hardware being abstracted away and the tooling being better, that foundational knowledge from two decades ago remains critical.
If you know Linux and remember your OSI model, you’ll be fine. If you don’t, and want to cling to single-instance Windows Servers, I know a little island called Isla Nublar off the coast of Costa Rica where you’ll fit right in. But be warned, you’ll have spared no expense, but still be eaten for lunch.
Leave your thoughts in the comments below. Froth optional.
Having started my career with the single-instance and now migrated into the cloud, I am really enjoying the abstraction. Yes you could tune and twist the OS and/or the database engine to squeeze out a little more performance. Now you just get more resources when you need and spend more time actually delivering value for an insignificant increase in cost. Plus there are other less obvious benefits.
1. Avoiding having to ask the bean counters for yet another capital expenditure for more servers you will only use some times.
2. Not participating in and upgrade project. Going through all that pain and effort only to arrive at exactly the same place your were before. Or having to go through yet another upgrade project because your vendor will no longer support your current version, but not going to the latest because the DBA’s want to wait and see if the current version is “stable”.
3. Waiting years until your company finally upgrades so you can use an interesting/useful new feature.
4. Rapid prototyping leading to failing quickly (or not) and projects moving ahead or ending fast.
… You get the point
Great perspective. Thanks for contributing.