Learning Objectives

  • Scalable Architecture: How to design a system so that it will scale to many many users, transactions, databases and so on. We would like to develop your nose for scaling problems: where they may arise, how to identify architeture or behavior which can lead to scaling problems; and a series of available architetural patterns known to address these.

  • Applied Software Engineering: Use what you learn in a real-world team based development project. Starting from scratch, with a team of other students, you will design, implement, test, and deploy your own version of Twitter. You will be asked to load it up with users, measure its performance and then using techniques learned here to improve its performance and scalability.

Knowledge Gained

  • Protocols and formats: http, html, urls
  • How web servers work
  • Architectural concepts for scale
  • Data Modeling for application design
  • Databases: SQL, NoSQL
  • Caching
  • Sharding
  • Concurrency
  • Logging
  • Deploying
  • Containers
  • Load testing
  • Application performance analysis

Skills Acquired

  • Write excellent software
  • Write and deploy a Sinatra application
  • Apply scalability principles in the design of software
  • Deploy to the cloud (Heroku)
  • Generate and analyze a load and monitor performance