Live data from Hacker News

Learn how to design large-scale systems

github.com

101–110 of 199 posts

Re: Learn how to design large-scale systems

#101
post #88

Earlier quoted context omitted.

I know, just a good natured poke :) Plus you could probably take that comment at face value - making use of web caching is definitely an important tool when building a large scale system.

Why is caching out of the window when logged in?

It's a page-level cache, and your view on a page depends on username, hidden submissions, point counts, etc.

Re: Learn how to design large-scale systems

#102

I'd add a section on using TLA+ as a design tool. Diagrams and rules of thumb are useful but they don't catch errors or help you discover the correct architecture. See the Amazon paper [0] on their use of TLA+ in designing (and trouble-shooting) services. [0] https://lamport.azurewebsites.net/tla/formal-methods-amazon....

Could you please talk about your experiences with TLA+? The "tools of thinking" for designing and verifying systems really interest me.

I could fill a blog post about it but in my current project we're using TLA+ for two things:

1. Helping us design features whose requirements are vague. The more hand-waving required to explain a particular feature the more likely we are to use TLA+ to model our assumptions and verify our understanding. This has led us to ask some interesting questions of our design team to help us build a better feature.

2. Requirements that are really hard that we need to ensure are implemented correctly. We use TLA+ to ensure the properties and invariants are correct with respect to the requirements and validate our model. This is really helpful in the case of concurrency and consistency. For our application we're using event-sourced data and it's imperative that our event store is consistent in the face of concurrent writers, can be replayed in a deterministic and consistent order, and that our assumptions will hold between versions of the events.

Re: Learn how to design large-scale systems

#103
I see something comparable to these diagrams (it feels like) a half-dozen times a year.

The architecture is in general 'fine'. But communication paths of subsystems is probably the easiest part of the problem. And in general, re-organizing the architecture of a system is usually possible - if and only if - the underlying data model is sane.

The more important questions are;

- What is the convention for addressing assets and entities? Is it consistent and useful for informing both security or data routing?

- What is the security policy for any specific entity in your system? How can it be modified? How long does it take to propagate that change? How centralized is the authentication?

- How can information created from failed events be properly garbage collected?

- How can you independently audit consistency between all independent subsystems?

- If a piece of "data" is found, how complex is it to find the origin of this data?

- What is the policy/system for enforcing subsystems have a very narrow capability to mutate information?

If you get these questions answered correctly (amongst others not on the tip of my tongue), you can grow your architecture from a monolith to anything you want.

Re: Learn how to design large-scale systems

#104
Can we please come up with a more specific name for this type of expertise? A large-scale system can mean anything from a social security system to a rocket. I was a bit disappointed that it only concerns websites here (though I'm aware that I'm browsing HN).

Re: Learn how to design large-scale systems

#105

Earlier quoted context omitted.

To me the comparison just isn't there. The user experience here could be identical to how it was in the '90s. It's certainly something to marvel at to some extent, but a lot of us could get a pretty high level of elegance in our backend if our user experience had no reason to change for 10+ years.

To see how quickly HN changed in the old days, skim the feature requests thread: https://news.ycombinator.com/item?id=363 Some feature requests were a matter of days, like user profiles: https://news.ycombinator.com/item?id=481 A brief essay on some HN design decisions: https://pastebin.com/bSW5dfRQ (from https://news.ycombinator.com/item?id=8424502 ) I think the arc codebase is worth studying and understanding, prim…

> I think the arc codebase is worth studying and understanding

Are you talking about the source code for ARC, or for Hacker News?

It would be interesting to see how ARC is being employed on such a high profile site. I expect that some algorithms won't be freely available so as not enable people to game the site, but the rest would be interesting to see.

I could find any source for Hacker News though.

> And since code is data, a lisp master can write systems with a shocking number of features in shockingly few lines of code

You don't even have to be a master. So much bikeshedding has been spent over the decades. We are still going back and forth on data interchange formats...

Re: Learn how to design large-scale systems

#106

Earlier quoted context omitted.

Could you please talk about your experiences with TLA+? The "tools of thinking" for designing and verifying systems really interest me.

I could fill a blog post about it but in my current project we're using TLA+ for two things: 1. Helping us design features whose requirements are vague. The more hand-waving required to explain a particular feature the more likely we are to use TLA+ to model our assumptions and verify our understanding. This has led us to ask some interesting questions of our design team to help us build a better feature. 2. Requirem…

Ah - interesting! I would not have expected 1. I will dig into TLA+ and try to understand it better.

Thanks! Please do consider writing a blogpost, I'm sure many here would appreciate it.

Re: Learn how to design large-scale systems

#108
post #96

Earlier quoted context omitted.

Heh, elegance like "There is a story on the front page getting lots of attention, please log out so we can serve you from cache."

Elegance like "The entire site is a giant nested table in 2018"

And what exactly is wrong about that? Its loading and rendering speed? Or that it works in text mode?

Re: Learn how to design large-scale systems

#109

Can we please come up with a more specific name for this type of expertise? A large-scale system can mean anything from a social security system to a rocket. I was a bit disappointed that it only concerns websites here (though I'm aware that I'm browsing HN).

The label is fine.

Nobody is confused as to what a "system administrator" is, even though technically the word "system" itself can have a much broader range of meaning.

Post reply on HN