[HN Gopher] Amazon's distributed computing manifesto (1998)
       ___________________________________________________________________
        
       Amazon's distributed computing manifesto (1998)
        
       Author : werner
       Score  : 156 points
       Date   : 2022-11-16 16:03 UTC (6 hours ago)
        
 (HTM) web link (www.allthingsdistributed.com)
 (TXT) w3m dump (www.allthingsdistributed.com)
        
       | faangst wrote:
        
       | tillmannhgl wrote:
        
       | viburnum wrote:
       | I don't think this is really from 1998.
        
         | wging wrote:
         | The blog post is recent, but it describes much older work, so I
         | think the "(1998)" tag is right.
         | 
         | "Distributed Computing Manifesto
         | 
         | Created: May 24, 1998"
        
           | thomastjeffery wrote:
           | The blog post (what the OP link takes you to) is from 2022,
           | but the manifesto itself (the substance of the post) is from
           | 1998; so both dates should be used:
           | 
           | > Amazon's distributed computing manifesto (1998) (2022)
        
       | wging wrote:
       | It's interesting to think about how much of a perspective shift
       | this must have been, especially the service oriented bits.
       | Interestingly, I think it might not have even been made
       | completely in the authors' minds at the time of this proposal.
       | (Which is understandable, of course. It's a proposal, not a
       | retrospective on already accepted ideas.)
       | 
       | For example,
       | 
       | > In the case of DC processing, customer service and other
       | functions need to be able to determine where a customer order or
       | shipment is in the pipeline. The mechanism that we propose using
       | is one where certain nodes along the workflow insert a row into
       | some centralized database instance to indicate the current state
       | of the workflow element being processed.
       | 
       | definitely doesn't seem to reflect the hiding of a database
       | behind an interface. (From a workflow node's perspective, rows in
       | that centralized database should be an implementation detail it
       | has no knowledge of.)
       | 
       | Then again, this is part of their pitch for workflow processing,
       | not service-oriented architecture.
        
         | ajkjk wrote:
         | Anecdotally, it was at least 2015 before the DC processing
         | system was actually mostly operating against service-oriented
         | interfaces (when I left in 2016 we had a few old tools left
         | that still talked to the databases directly :/ ).
        
       | 0xbadcafebee wrote:
       | _" And with every few orders of magnitude of growth the current
       | architecture would start to show cracks in reliability and
       | performance, and engineers would start to spend more time with
       | virtual duct tape and WD40 than building new innovative products.
       | At each of these inflection points, engineers would invent their
       | way into a new architectural structure to be ready for the next
       | orders of magnitude growth."_
       | 
       | That last part, to me, is the key to success: getting the whole
       | business to do things in a new way. That is fucking hard. If you
       | can get your business to do it, you have an invaluable
       | superpower. The more things that you can reinvent, faster, gives
       | you more and more superpowers. It's one thing to change your
       | architecture. But also imagine getting every employee to change
       | how they deal with vacations, suppliers, customers, finance, or
       | involving entirely new industries. The easier it is to adapt and
       | change, the longer you survive and the more you thrive.
       | Evolution, baby.
        
         | bwestergard wrote:
         | "But also imagine getting every employee to change how they
         | deal with vacations"
         | 
         | Interesting example. Why would changing distributed computing
         | architecture have an impact on vacation policy?
        
           | 0xbadcafebee wrote:
           | I'm saying architecture is just one way of changing an
           | organization. Other ways of changing an organization,
           | separate from anything technical, might include changing
           | people's schedules or vacation policy, or who you hire, or
           | where, or how. Another would be how you store parts, make
           | orders, assemble products. Or starting work in an entirely
           | new industry.
           | 
           | Maybe you work at a company that sometimes works with the
           | government. As a result, the whole company might develop a
           | hiring process which is very slow, very detailed, and
           | excludes certain people from being hired. But probably only a
           | very small number of employees actually have to conform to
           | those government requirements. You can apply them to all new
           | hires "for simplicity", but it makes it harder to hire for
           | non-government positions. So changing how you hire, to make
           | it easier and faster to hire people of a wider background,
           | benefits your organization. If your org can't easily make
           | those changes, it will be disadvantaged.
        
       | epberry wrote:
       | > Currently much of our database access is ad hoc with a
       | proliferation of Perl scripts that to a very real extent run our
       | business.
       | 
       | There are companies started later than 2010 where this was still
       | the case. Interesting to think about how shipping things quickly
       | is so different than scaling them up.
        
       | kerblang wrote:
       | > All of this was being done before terms like service-oriented
       | architecture existed.
       | 
       | I feel like the first time I heard the term was early 2000's, and
       | wasn't it a mainframe thing first? Dunno, just wondering.
       | 
       | Anyhow, it's nicely written, very concise, and worth noting how
       | the original author focuses more on "What kind of realistic
       | options do we have?" than winning the A vs. B vs. C argument in
       | one fell swoop.
        
         | fiddlerwoaroof wrote:
         | Yeah, the buzzwords have changed, but some version of the
         | concept has been in the air at least since I was learning
         | Delphi in the 90s
        
         | awithrow wrote:
         | I remember seeing the term around the mid to late 2000s. But it
         | was also used primarily in the context of enterprisy J2EE,
         | weblogic servers and various IBM hardware that made the
         | everything way more complicated than it needed to be.
        
         | qqtt wrote:
         | Things like Java RMI existed beforehand and there was the
         | elements of industry moving towards server-based partitioning
         | of services - the big difference is none of it was formalized
         | and there was little consistent language of which to speak
         | about these paradigms. At the beginning yes, people would
         | discuss having one mainframe call another mainframe but today
         | that would be SoA.
        
         | numbsafari wrote:
         | It was definitely pre-2000. First "SoA" firm I worked for, I
         | started at in 99, and they had been doing it for 2 years
         | already and most of the crew brought if from a prior gig.
        
       | PaulDavisThe1st wrote:
       | As one of the main designers of the original system (but who had
       | left by the time this architectural change was done), that is an
       | interesting read. Always good to see the things that we missed in
       | 1994/1995, even though we believed we were thinking far, far
       | ahead.
        
         | asim wrote:
         | I'm sure it would have been nice to have that tech in 94 and
         | yet at the same time I get the feeling it had to play out the
         | way it did for Amazon to succeed. Without the first part of the
         | journey Amazon would not have gone on to build AWS.
        
       | [deleted]
        
       | oscholz wrote:
       | Cool!
        
         | EGreg wrote:
         | What makes it so cool?
        
       | oscholz wrote:
       | cool!
        
       | nevir wrote:
       | > We propose moving towards a three-tier architecture where
       | presentation (client), business logic and data are separated.
       | This has also been called a service-based architecture. The
       | applications (clients) would no longer be able to access the
       | database directly, but only through a well-defined interface that
       | encapsulates the business logic required to perform the function.
       | 
       | It is really interesting to see a recent(ish) trend away from
       | this three tier design and back towards tighter coupling between
       | application layers. Usually due to increased convenience &
       | developer ergonomics.
       | 
       | We've got tools that 'generate' business layers from/for the data
       | layer (Prisma, etc).
       | 
       | We've got tools that push business logic to the client (Meteor,
       | Firebase, etc)
        
         | ajkjk wrote:
         | For what it's worth, Amazon's architecture for the core retail
         | business has, if anything, moved even further up in
         | abstraction. Tighter coupling is something that simple usecases
         | can afford. Large scale but low-complexity can be closely
         | coupled. High-complexity can't be.
         | 
         | The thing about Amazon's systems is that they are horrendously
         | complex. In ~2016 I was working on the warehousing software,
         | and it was a set of some hundreds of microservices in the
         | space, which also communicated (via broad abstraction) to other
         | spaces (orders, shipments, product, accounting, planning, ...)
         | which were abstractions over 100s of other microservices.
         | 
         | So what I observed at the time was a broad increase in
         | abstraction horizontally, rather than vertically. This
         | manifesto describes splitting client-server into client-
         | service-server; the trend two decades later was splitting <a
         | few services, one for each domain> into <many services, one for
         | each slice of each domain>, often with services that simply
         | aggregated the results of their subdomains for general
         | consumption in other domains.
         | 
         | I'm sure things have only gotten more complicated since then
         | (in particular, a large challenge at the time was the general
         | difficulty in producing maintainable asynchronous workflows, so
         | lots of work was being done synchronously or very-slightly-
         | asynchronously that should have been done in long-running or
         | even lazy workflows).
        
         | tsss wrote:
         | Nowadays you separate service by business capability and not by
         | "layer". Layers just lead to a dependencies and dependencies
         | lead to bad reliability and terrible development speed.
        
           | derefr wrote:
           | What Amazon were describing here is simply the division
           | between a frontend web gateway service (or, in modernity,
           | client-delivered SPAs); an API backend service to serve the
           | XHRs of the web-gateway / SPA; and some kind of DBMS where
           | user-visible query schema is separable from storage
           | architecture via e.g. views. I don't think there's any modern
           | system that _doesn 't_ have those things, no?
        
         | amcvitty wrote:
         | A big part of the difference has to be that if you have a small
         | number of developers (esp. n=1) and you can deploy everything
         | at once, then those layers just get in the way of fast change.
         | It seems Amazon were optimising for the ability to distribute
         | data because they had big volume, and hide its form so they
         | could change it without having to change lots of applications.
         | 
         | Of course, there's some cargo culting around services where
         | people jump to that architecture before they need it, but for
         | most apps YAGNI. it's cool that their architecture was driven
         | by clear needs "just in time" to allow them to continue to
         | scale
        
         | [deleted]
        
       | manv1 wrote:
       | This is one example of the CEO making something happen that
       | essentially birthed AWS.
       | 
       | Bezos, of all people, was like "make it happen." And it did. It
       | was basically work for no reason except future proofing. Having
       | someone up the food chain OK this much work for the future (and
       | no hard dollar benefit) is highly unusual.
       | 
       | And besides that they've done some incredible things with their
       | infrastructure, like authorization. Distributed authorization is
       | really hard, but at AWS it's completely invisible. Remove a
       | permission from an IAM role and it moves through AWS really,
       | really fast. It's totally magic. Anyone who was abused by CORBA
       | knows how hard that is to do well.
       | 
       | Their newer stuff (like Cognito) is sort of weird, but other
       | things are surprisingly solid given how big AWS is. Small shops
       | have trouble shipping feature complete software, and BigCorps can
       | be even worse. AWS has gotten really good at it.
        
         | p_l wrote:
         | It's easy till you break IAM itself with your policy complexity
         | and random services start dying because other AWS components
         | few layers deep cnst get IAM to parse
        
           | another_devy wrote:
           | Intriguing, can you share details or overview why it failed
           | for you. Will be kind of gotchas for me
        
         | anonymousDan wrote:
         | Can you (or anyone) say a bit about how the auth service is
         | implemented from a distributed systems perspective? For example
         | is it some kind of custom KV store?
        
       ___________________________________________________________________
       (page generated 2022-11-16 23:00 UTC)