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.
Goal: Understand what distributed computing is, and what’s it’s for.
Level of investment: Low (wikipedia / blog posts)
(TBD)
IDesign started off as a Microsoft consulting shop but has since branched out to other technologies. Their “Method” documents and related resources are great references: http://idesign.net/
www.infoq.com is a great place to find recordings of pertinent presentations
www.highscalability.com is also a great resource -- lots of case studies and real-world examples available there. Also lots of blog chaff, so be careful :)
Udi Dahan used to have a lot more info on his site, but he still has some great stuff: http://udidahan.com/articles/
Goal: Become familiar with common distributed computing paradigms
Level of investment: Medium (blog posts / podcasts / talks)
Client-Server
N-tier
Peer-to-peer
Distributed logs
Message-passing
RPC
Bonus: a perspective on a few key architecture patterns. http://www.oreilly.com/programming/free/software-architecture-patterns.csp
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)
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)
Amazon Web Services (esp. SQS, SES, SNS)
Memcached architecture
Elasticsearch architecture
Cassandra architecture
RabbitMQ architecture
Hadoop architecture (there is an edX course on Hadoop)
Goal: Understand what you need to consider when building a service.
Level of investment: Medium (blog posts, at least one practical / lab project)
AuthZ/AuthN
Service Discovery + Service Registries
Distributed Configuration Management
Continuous integration and delivery
APIs
Design
Publishing
(Eddie still thinks Heroku's "12 Factor App" is a great starting point, even though it’s getting a bit dated…)
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)
Capacity planning
Scaling
Caching and content delivery networks (e.g. CloudFront)
Network latency
Serialization
Testing
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)
Goal: Understand how the field is evolving; understand current trends such as containerization and serverless computing.
Level of investment: Low (blog posts)
Containers (LXC, Docker)
Serverless computing - reading:
Serverless computing - course:
Randy Shoup talk