Ask HN: How to start developing distributed software?

2 points by nonotmeplease ↗ HN
I want to start building distributed applications like chats, forums, etc. What is the easiest way to start? What papers/software/blog posts, etc. to read?

4 comments

[ 4.1 ms ] story [ 19.8 ms ] thread
If you want to e-mail me (my address is in my profile, obfuscated), I might be able to help (been doing networked multi-user applications since 2000, including 5.5 years at Google). This is a pretty complicated question, and depends a bunch on what you're trying to accomplish and what you already know.
I sent you an email yesterday, did you receive it? :)
At what level are you wanting to develop?

I ask as there are significant differences between the developer writing a "basic" distributed application that utilizes others work to handle the complexity of a distributed system and the guy/gal writing her own leader election (or raft type) algorithms etc. Not that either is better then another, but they are different levels which require different skills and/or mindsets.

Either way, I suggest you look at leader election, raft, time syncing etc so you have a reasonable understanding regardless of what level you decide to write at. Also, look at other applications that are distributed, read up on eventual consistency and just design systems on paper to identify issues. Take a look at systems like Instagram, Facebook, Twitter, redis, mongodb etc that publish quite a bit about their architectures and where you can find good and bad about their designs (e.g. redis/mongo).

I will say one thing, if you don't already know it, time is critical in a distributed system. I do not think it can be overstated how important the time value is, as almost every action is usually coordinated or decided in relation to time.

edit (fixed some text)

Thank you. I started reading some stuff (see some of my submissions). I also started learning elixir. Really fun language.