I'm at the juncture of my career where I want to focus more on Distributed Systems and specialize more in it. Short of reading seminal papers, understanding existing data systems like Spark, Kafka etc., how do I gain more working knowledge so as to improve my implementation skills of such a system.<p>While I haven't really worked on a major project that explores core problems, I'd like to spend the next year or two learning more about it.<p>Looking forward to learning from the pioneers in this field who have implemented many such systems.
These are good places to start exploring.<p>MOOCs:<p><a href="https://www.edx.org/course/architecting-distributed-cloud-applications-1" rel="nofollow">https://www.edx.org/course/architecting-distributed-cloud-ap...</a><p><a href="https://www.edx.org/course/reliable-distributed-algorithms-part-2-kthx-id2203-2x" rel="nofollow">https://www.edx.org/course/reliable-distributed-algorithms-p...</a> - Part 2 contains all material from part 1 and part 2.<p>Books:<p>Big Data: Principles and Best Practices of Scalable Real-time Data Systems<p>Designing Data‑Intensive Applications<p>Programming Models for Distributed Computation<p>There are assignments in Go and other course material at MIT distributed systems course: <a href="https://pdos.csail.mit.edu/6.824/" rel="nofollow">https://pdos.csail.mit.edu/6.824/</a><p><a href="https://disco.ethz.ch/courses/podc/" rel="nofollow">https://disco.ethz.ch/courses/podc/</a> has some good lecture notes as well.
This is a mid-level (not too simple, not too complex) introduction about the basics that I found useful <a href="http://book.mixu.net/distsys/" rel="nofollow">http://book.mixu.net/distsys/</a>
Check out relevant posts from this site:<p><a href="http://highscalability.com/all-time-favorites/" rel="nofollow">http://highscalability.com/all-time-favorites/</a>