This is a nice followup to the web architecture post yesterday
He/she means this one: https://news.ycombinator.com/item?id=17517155 Today's post is way more in-depth. Good follow-up indeed.
Learn how to design large-scale systems
21–30 of 199 posts
Re: Learn how to design large-scale systems
#22Note that HN, a top-1000 site in the US, runs on a single box via a single racket process. "The key to performance is elegance, not battalions of special cases."
Re: Learn how to design large-scale systems
#23At first look, seems like these are fairly general questions, which is great.
Re: Learn how to design large-scale systems
#24Earlier quoted context omitted.
It also makes changing your DB a lot easier since APIs using the DAL don't need to be updated since they're DB agnostic -- you "only" need to update the DAL API.
How often does one change the DB backing a live production application?
In one of the cases where I had to switch, we swapped from Cassandra to S3 for 100x OpEx savings since C* couldn't scale cost effectively to our needs, so we rolled a database on top of S3 instead that well out performed C* for our use case (e.g. need to export a 3B row CSV in a minute?).
Re: Learn how to design large-scale systems
#25Earlier quoted context omitted.
How often does one change the DB backing a live production application?
I also don't think it's a good idea. If you don't use the database specific functions out of fear you aren't able to switch anymore, you are probably wasting a lot of potential performance.
Re: Learn how to design large-scale systems
#26Oh interesting, I have never seen Anki ( https://apps.ankiweb.net/ ) being used for large blocks of source code. Anki is an open source application (desktop + mobile) for spaced repetition learning (aka flashcards). It's a very popular tool among people who want to learn languages (and basically anything else you want to remember). There are many shared decks ( https://ankiweb.net/shared/decks/ ). Creating and format…
Re: Learn how to design large-scale systems
#27Earlier quoted context omitted.
It also makes changing your DB a lot easier since APIs using the DAL don't need to be updated since they're DB agnostic -- you "only" need to update the DAL API.
How often does one change the DB backing a live production application?
I used to design systems so this was possible, but eventually realised it just wasn't needed - I was adding more abstraction and complexity for no reason.
Re: Learn how to design large-scale systems
#28Note that HN, a top-1000 site in the US, runs on a single box via a single racket process. "The key to performance is elegance, not battalions of special cases."
Re: Learn how to design large-scale systems
#29I'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....
In case anybody is interested, there is a nice talk by Hillel Wayne on youtube (https://www.youtube.com/watch?v=_9B__0S21y8) that provides a high-level overview on what TLA+ is about.
Re: Learn how to design large-scale systems
#30Note that HN, a top-1000 site in the US, runs on a single box via a single racket process. "The key to performance is elegance, not battalions of special cases."