3 ms·
> “OK, let's assume some clever people wrote this, I wonder what the pressures were that made them come out with that solution." Pressure from everyone to get
by DaiPlusPlus 7y ago
> “OK, let's assume some clever people wrote this, I wonder what the pressures were that made them come out with that solution."
Pressure from everyone to get something shipped and out-the-door - never-mind the technical debt - and after it ships management is only interested in further growth fuelled by more features - deepening the technical debt.
As for the problem of Apache keeling over too easily - that’s because Apache (at the time - and I think still now) is based on “one thread per HTTP request” - or one thread per connection. Asynchronous (or rather: coroutine-based) request handling was very esoteric in the late-1990s and early-2000s - and required fundamentally different program architecture - no-one was going to rewrite their CGI programs to do that - and Perl script based applications couldn’t do anything at all. Asynchronous HTTP request handling only really became mainstream when NodeJS started getting popular about 7-8 years ago - but, to my knowledge, besides ASP.NET Core - no other web application platform treats asynchronous request handling as a first-class feature.
- pdonis 7y ago> Asynchronous HTTP request handling only really became mainstream when NodeJS started getting popular about 7-8 years ago Nginx first came out in 2002. It was being used widely by something like 2008. > no other web application platform treats asynchronous request handling as a first-class feature Huh? Web application platforms that do this have been around since the late 1990s. (Heck, there was one written in Python in the late 1990s, it was called "Medusa".) They just weren't "popular" back then.
- monknomo 7y agoI think not being popular would qualify them as esoteric
- pdonis 7y agoPerhaps the ones from the late 1990s were (depends on what you think qualifies as "esoteric", since Medusa, for example, was serving high volume websites in the late 1990s), but I wasn't claiming they weren't; I was only pointing out that they did in fact support asynchronous request handling as a first class feature, even before Nginx did. Nginx, OTOH, was popular before NodeJS even existed, let alone before NodeJS became mainstream.
- doteka 7y agoNot sure where you draw the line between a server and a platform, but Go and Elixir are async by default. (Not in the async await sense, but in the sense that they handle requests using lightweight userspace threads). Besides that, Python, Java and PHP have had mature async web stacks available for years as well. Is there any commonly used language that doesn’t?
- nitrogen 7y agoHow many years? More than 15? This conversation is getting into decades, which many developers (just by nature of growth of the industry) haven't experienced.
- dirtydroog 7y agoIt's not the async logic that's hard, it's the parsing and handling of the HTTP protocol. Apache had years to get it right and figure out the workarounds for non-compliant black boxes. It's this that keeps it around unfortunately. Its architecture is obsolete and a waste of resources. Nginx does the async stuff properly I believe but there's still the nonsense of forking child processes.