TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: How can I learn to build distributed systems?

6 pointsby iamricksabout 3 years ago
I work at a very small company and our products are not used by a lot of users. Our stack is very simple: Rails&#x2F;Heroku&#x2F;Redis&#x2F;Postgres<p>I spend time reading about larger scale systems and watching talks about how big companies have scaled their products and the challenges they face and its given me a general understanding about some scaling techniques.<p>Is there some way i can try to implement some of these things and test to make sure that the way i implemented it works without having to spend a bunch of money?<p>For example if i want to try making a distributed cache, test sharding a database, create a messaging queue and test it, how can i do this?

4 comments

davismwflabout 3 years ago
I have a different solution. I was lucky early in my career where I got to work on a few projects that were distributed not for scale but for super high reliability. I studied what I was given but studying was only so helpful.<p>To that point, I recently had someone ask me how I learned some of the things I did on distributed. I am not disagreeing with other commenters about reading up and studying but I think that it isn&#x27;t as good as experimenting with things yourself.<p>Pick something like &quot;leader election&quot; and implement a naive&#x2F;simple version of it so you have a better understanding. Take that and run it in AWS on 3 (or more) micro instances and play with failure scenarios. Alternatively you can do the same with local computers on your network, or raspberry pi&#x27;s or any other SBC. For less than the cost of a text book you&#x27;ll have real world experience implementing and experimenting.<p>From there, try other scenarios and keep building and testing. Doing this is far more valuable then just reading about it. Then if you do hit a job where you need those skills it isn&#x27;t just academic to you, you&#x27;ll have played with how it works and seen how to debug issues etc.<p>Speaking of debugging issues, one of the hardest things in distributed systems is just that, debugging. So build a basic (again maybe naive version) distributed logging&#x2F;tracing solution so you can see the issues first hand. You&#x27;ll then understand (at least somewhat better) the way to evaluate the common solutions&#x2F;ideas that are on market or that people push.<p>You can learn a lot even by just setting up something like zookeeper or etcd and learn how they work, failure modes and how they can help or hurt you.<p>Just some ideas, but the basic concept is to actually implement things. Even just run your tests in containers (not as good IMO but still better than just reading about it) if you can&#x27;t afford to spend a little money in AWS or on SBCs etc.<p>*edit fixed a word mistake
Comeviusabout 3 years ago
Kleppman&#x27;s Designing Data-Intensive Applications book should be able to hook you up with the basics.
dongfuyeabout 3 years ago
Look into an open source project which is similar to your work, and workout a similar benchmark
KhalPandaabout 3 years ago
Sure you can. Look into &#x27;load testing&#x27;.