6 ms·
This rant starts of pretty badly, with "Windows bad, Unix good, Windows especially bad because it doesn't have Unix tools". Reverse that statement. Is Unix bad
by jiggawatts 4y ago
This rant starts of pretty badly, with "Windows bad, Unix good, Windows especially bad because it doesn't have Unix tools".
Reverse that statement. Is Unix bad because it doesn't Windows tools?
> but simultaneously there was nothing to lean back on: no shell, no Unix tools like sed/awk, no SSH. I
He joined in 2014, when Windows had a superior shell and remoting system that eliminates the requirement for low-level string parsing tools like sed/awk entirely!
PowerShell + WinRM + Desired State Configuration (DSC) was all pretty mature at the time, and I had used these technologies to manage huge fleets of servers solo without issues.
Then, almost none of this heroic database backup efforts would have been required if they had just a commercial database product, e.g.: one designed for Windows such as SQL Server.
In 2014 it supported AlwaysOn Availability groups that allowed multiple synchronous and asynchronous replicas! It also has had true online backups since before 1997.
His second mistake is that backups can be incremental, but a restore in a (true) disaster is a full restore by definition! Differential + Log backups are great to capture data regularly during the day, but the business requirement is usually that a full restore must complete in a reasonable time.
Typical commercial databases plus the product he mentioned could easily backup and restore tens of terabytes in setups I've seen directly to or from any proper database engine without having to through "NFS" on the way. Typically you'd use a native backup agent.
This whole article sounds like a self-important Unix engineer refusing to touch commercial products, lack of understanding of business requirements, and an allergy to Windows.
- sgt 4y agoWhat are you talking about - Windows was always terrible for an admin. Unix was and is vastly superior when it comes to remote admin. Having used both (Powershell is powerful yes, but it's nowhere as fluid as a Unix shell).
- radicalbyte 4y agoIt depends on exactly what and how you're doing it. I have as devops managed both a small fleet of windows boxes (~20 machines) an a similar amount of Unix (Linx-based) machines. Remote management of Windows was initially a pain to set up but once it was running it was fantastic. Being able to manage the entire application layer with properly tested, versioned code written in C# is an absolute killer. Things like debugging/logging etc are also "just there", and SQL Server is a fantastic database. The Linux alternative on the other hand was easier to update and had some benefits to the developers (you can sort-of recreate a production-like environment in containers locally). The management after that was a huge pain because everything seems to have been built McGuyver style. I like Postgres but prefer using SQL Server (probably personal preference at this point tbh). Things are different nowadays: systems like Kubernates apparently simplify the Linux side and make it affectively trivial to deploy and do cool stuff such as dynamically scale systems. It's also more efficient as you can remove the overhead of the Virtual Machines. It doesn't take much imagination to see that that would make a Unix-based system better.
- jiggawatts 4y agoI agree with everything you've said, but to add to that: there are these weird inflection points with both platforms. A single "small business" server is easier to run on Windows and it'll do everything you need it to do with minimal fuss. Easy GUI admin consoles are available, etc... For 2-3 servers it swings back to Linux because some things are just easier at that scale. For 10-1000 servers that aren't all identical, I prefer Windows because of things like Active Directory, GPOs, DSC, etc... Above 10K and especially above 100K scale the Windows licensing costs become absurd and you're likely deploying thousands of identical nodes (web farms, HPC clusters, etc...) and then Linux becomes very compelling. This is why all of the FAANGs run primarily Linux, because at the multi-million-node scale it's the best option by far. Interestingly, container technology is maturing in Windows as well, especially with Server 2022 and Windows 11. However, it still has a few rough edges, so I'm waiting to see how it all pans out...
- radicalbyte 4y ago> I agree with everything you've said, but to add to that: there are these weird inflection points with both platforms. Spot on.. and I do like both platforms with a slight favour for Linux because licensing can be a hassle (unless MS still do those special Enterprise deals and you have one) and you can kind of get around the messy Linux things and it's generally easier to work with unknowns/new things in Linux (as the MS world abstracts too much). It's good that we have the options and any adult Developer/Systems Admin would recognise that and take advantage of it.
- dijit 4y ago> I prefer Windows because of things like Active Directory, GPOs, DSC I felt the same until we had a bug which broke the network adapters under high throughput of packets per second (of course, we didn't know the cause, but the machine was bumped off the network until a reboot which wiped away debug info). Going via the IPMI yielded a "Can't connect to AD" message, and the rotating local "Administrator" account password was unrealistically hard to acquire (ubisofts fault, not windows); which lead to me writing this: https://github.com/dijit/statham https://github.com/dijit/statham (but in Go, this is a rust reimplementation) so that we could all have local accounts. :| > container technology is maturing in Windows as well, especially with Server 2022 and Windows 11. I'm actually using Windows Kubernetes nodes today, it has two huge notable drawbacks. 1) The base container image needs to match the kernel version, meaning you need to build containers for Windows Server 2019-ltsc, Windows Server 2022, Windows 10 and Windows 11 2) The containers are enormous, one of mine is sitting at 6GiB and takes 4 minutes to pull on GKE. and the minor drawback of; the instructions to make a bare metal kubernetes windows worker node are sporadic, outdated and otherwise largely missing.
- jiggawatts 4y agoThat's just not true. It feels true to Unix admins trying to do Unix things on Windows and getting frustrated when nothing feels familiar. Let me quote the article directly: "no SSH" WinRM is roughly equivalent and superior in many ways. E.g.: It takes quite the effort to produce a report of "some setting or flag" across a fleet of servers with SSH, Bash, Sed, Awk, etc.. Now try this with PowerShell: Invoke-Command -ComputerName $varWithListOfServers { Get-Process 'ubiserver.exe' } | Export-Csv 'report.csv' This will connect in parallel to all the servers in the list (could be thousands!), 32 at a time by default. It'll get all of the process info (memory, cpu time, etc...) for a game server, and then add the source server computer name as an extra column. Dumping this to a valid CSV is a no-brainer. Put this in a scheduled task and you've got something Excel or Power BI or whatever can pick up and chart, graph, or send to a manager. Try this with Linux. Seriously. Sit down and do the equivalent: many servers in parallel, batched to prevent overload, server name as an extra column, valid CSV output with proper quoting of quote characters, etc... Oh, did you notice the lack of authentication rigmarole? The whole thing is secured and encrypted via Kerberos automatically. Copy the equivalent of that too. (Assume you have 10K servers that you haven't manually added the SSH keys of into your local workstation config.) Put the script in the reply. PS: I know some Unix people think that brevity is more important than time-to-solution, so to head off that whole argument: PS C:\> Get-Alias | ? ResolvedCommandName -in ( 'Invoke-Command', 'Get-Process', 'Export-Csv' ) CommandType Name ----------- ---- Alias epcsv -> Export-Csv Alias gps -> Get-Process Alias icm -> Invoke-Command Alias ps -> Get-Process Ta-da, now it's just as unreadable as Unix: icm -CN $s { ps 'ubiserver.exe' } | epcsv 'report.csv'
- hnlmorg 4y ago> Try this with Linux. Seriously. Sit down and do the equivalent: many servers in parallel On my phone so not going to type the full command line out ostensibly it would be: xargs ssh ‘ps process-name’ I’d need to pull the man pages up to double check which flags you’ve specifically requested. But the above is the general gist of it. —— I think it’s pointless to compare such granular features side by side though. For every microscopic thing Windows better Linux will have others it does better too. And visa versa. It’s the overall administration at a higher level I’m more interested in: How long does it take to go from a new requirement to a deployed service? How easy is it to automate? To adapt? To scale? To fix? Or even forget fixing entirely and just run as a fleet of ephemeral instances. Windows can and does support everything Linux does too. But Linux is just generally easier to work with (in my 30 years of experience managing both). I wouldn’t say Linux is the peak of UNIX-like systems either though. But that’s a whole other argument for another day :)
- hnlmorg 4y agoI respectfully disagree. Having been an admin for both (started out as a Windows developer and NT4 sysadmin, so you can’t say I wasn’t experienced) I’ve always found UNIX to be vastly easier to manage servers. Yes, Bash has a lot of warts (so much so that I wrote my own shell) but Powershell creates lots of new warts of its own. As for automation, Windows doesn’t even come close to UNIX-like systems for east of scripting and automation. There’s just no contest. Bash might be ugly at times but at least its ugliness is consistent. I’ve lost count of the number of times I’ve found parameters parsed differently between applications (because Windows passes parameters as a single string rather than an array of arguments like POSIX systems), or that so called headless installers still have GUI prompts and/or spin off a non-blocking process so it’s challenging figuring out when it’s complete. Or Powershell routines come back with an unexpected type thus breaking your entire pipeline. Or don’t even support basic help flags so you cannot discover how to use the damn routine to begin with. Or the utterly ridiculous numeric error code that MS returns rather than descriptive error messages. Or its over engineered approach to logging that makes quick inspections of the systems state far more involved than it should be, or even just managing simple things like software updates requires while other expensive 3rd party solutions because the whole application and OS package management situation is fundamentally broken at its foundations …I could go on. But suffice to say there’s so many painful edge cases to consider with Windows. Windows does get somethings right though: RDP is a great protocol and its backwards compatibility story is second to none. But for server administration, Windows feels like a toy OS compared to most UNIX-like systems. As in it has support for pretty much anything you’d want to do With modern server management processes but yet everything it does support it does so in a really awkward and immature (technologically speaking) way. I’m sure it’ll get there though. But likely not before I retire
- merpkz 4y agoI know people will now argue into oblivion about powershell vs bash, but I actually wonder why was this person hired in first place to manage windows based systems what clearly seems not be his domain of expertise?
- dijit 4y agoIn my experience it is often better to hire people who are curious, motivated and at least a little bit intelligent than people who already possess specific skills. You can argue until you're blue in the face about if my approach was the right one, ultimately though what we did worked, was incredibly lean, easy to understand/troubleshoot/debug and most importantly it served the goals of the business. Could we have gotten up to speed with the Windows way of doing things? Probably. There were so many niggling problems with the platform that were not part of my prejudice, that if we continued to go that route I am certain that 1000's of our person-hours would have been consumed even if we had been absolute experts, things like the fact that windows bonding in 2012R2 was done in userland, that joining to the domain requires a reboot (which will break your software if it's registering to take workloads on boot), that powershell versions are often incompatible and that interface devices are very difficult to deterministically reference. Windows sysadmins seem to come in two varieties: 1) Experts who know exactly what Windows is thinking at all times 2) Button mashers Unix/Linux engineers have a much broader range of knowledge, and there's certainly more of them on the senior end.
- merpkz 4y agoIt's counterproductive to hire people who go against established procedures and built systems at company just because they have high quality opinions about one piece of software or another.
- dijit 4y agoMaybe Ubisoft bought something that was not fit for purpose twice ;)
- jiggawatts 4y ago
- throw009 4y ago>He joined in 2014, when Windows had a superior shell and remoting system that eliminates the requirement for low-level string parsing tools like sed/awk entirely! One mans feature is another mans bug.
- jiggawatts 4y agoThese debates always remind me of this quote (referring to C++) here on HN by another user: It seems like grappling with these arcane features feels productive, at first. You enter a flow state and after a while, something works that didn’t work before. It’s only when you step back and ask what actually got accomplished that you realize it’s time wasted. That's what Linux feels like to me. People enjoy solving arcane problems, digging through man pages, download esoteric commands. Heck I enjoy this stuff too! Recently I had a lot of fun playing around with parallel compression tools available on Linux. It's fun... but it's rarely as productive as not having to deal with the challenge in the first place.
- throw009 4y agoThere's not much of a debate. Windows as a server is dead outside sme shops. This isn't the 90s anymore. But it is very nostalgic hearing people talk up microsoft. It's not something I'd heard in the last 15 years.