Goal: Gain a strong working understanding of tools and trends for distributed software system architecture and development, to allow the learner to better design and build software systems at edX.

Intro

Goal: Understand what distributed computing is, and what’s it’s for.

Level of investment: Low (wikipedia / blog posts)

Distributed architectures

Goal: Become familiar with common distributed computing paradigms

Level of investment: Medium (blog posts / podcasts / talks)


Bonus: a perspective on a few key architecture patterns. http://www.oreilly.com/programming/free/software-architecture-patterns.csp

Tools (Past + Present)

Goal: Become familiar with the concepts of each of these distributed computing tools. Understand why it was created, what it does, what it’s good at, what it’s not good at, and whether it was successful.

Level of investment: Low (wikipedia / blog posts)


Distributed Systems

Goal: Gain familiarity with common distributed tools, with a focus on tools used at edX

Level of investment: Medium (blog posts, at least one practical / lab project)

Services

Goal: Understand what you need to consider when building a service.

Level of investment: Medium (blog posts, at least one practical / lab project)


(Eddie still thinks Heroku's "12 Factor App" is a great starting point, even though it’s getting a bit dated…)

Performance

Goal: Understand performance characteristics of a distributed web architecture, including paradigms and tools.

Level of investment: Medium (blog posts, at least one practical / lab project)

High availability

Goal: Understand the concepts and tradeoffs of a highly-available web architecture, including tools and algorithms for creating a HA system.

Level of investment: Medium (blog posts, at least one practical / lab project)

Future

Goal: Understand how the field is evolving; understand current trends such as containerization and serverless computing.

Level of investment: Low (blog posts)

Other Materials

Reference