Learn system design and architecture in context, via a behind-the-scenes tour of Oxbridge Notes, a profitable web app serving over 200,000 requests/month for 10 years (albeit with bleeding edge code). See how performance is improved with queues, DB indexes, memcached, full-text search, micro-services, and HTTP caching, how production errors are tracked and escalated when necessary, how classes are organized into a sensible architecture, how its containerized for continuous integration testing, how git is used to minimize conflicts and more. At the end, you'll know exactly how to do the same and be able to ace any system design interview.
1. Data Integrity: Null Constraints and Check Constraints
Data is more important than code, therefore the most important job you, as a programmer, have is to design a system that allows for a simple, constrained, and predictable set of data. In this episode, I'll discuss how null constraints can reduce the number of types your program has to deal with, thereby simplifying your code. Then I discuss how
check constraints can force data to take a limited (and more useful) range of values. Lastly I'll explain why it's better to carry all this out at the database level rather than at the Ruby/Python/Php/JS level.
2. Data Integrity: Foreign Keys and Uniqueness Constraints
3. Data Integrity: SQL Cascades, Transactions, DB Design, and Continuous Validation
4. Continuous Integration Testing: Basics + What to Test
5. Integration Testing Best Practices Part I
6. Integration Testing Best Practices Part II
7. Error Tracking and Monitoring: Part I
8. Error Tracking and Monitoring: Part II
9. Production Logs: Getting The Most Out Of Them
10. Why You Need Downtime Notifiers
11. Website Monitoring Tools I: Monit and Syslog Alerts
12. Website Monitoring Tools II: APMs, HTTP status aggregated stats