mythxn / go-crazy

🥋 a mental dojo

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

How to solve coding katas?

  1. Understand the problem you're solving.
  2. Create a basic method with the correct structure.
  3. Design tests to check the functionality of your method (ideally, include positive and negative scenarios).
  4. Confirm that the tests accurately assess your understanding.
  5. Develop the method to make the tests pass.
  6. Improve the method's performance by refactoring it.

How to approach systems design problems?

  1. Start simple, single server setup
  2. Vertical scaling vs horizontal scaling
  3. Load Balancer
  4. Database; which one to use?
  5. DB Replication
  6. Cache
  7. Consistent hashing?
  8. Content delivery network
  9. Statelessness - NoSQL / Cache
  10. Data centers / Availability
  11. Sync / Async communication
  12. Logging, metrics, automation
  13. DB Scaling - Vertical / Horizontal

Notes:

  • Don't go into details until high level architecture is agreed upon.
  • Who is going to use the system, and how?
  • Constraints? traffic / data handling constraints at scale.
  • Scale of the system such as requests per second, requests types, QPS.
  • Sketch the important components and connections between them, but no details.
  • Database schema design if there is time, ONLY if there is time - but try to push it.
  • Identifying and solving bottlenecks.

About

🥋 a mental dojo


Languages

Language:Go 100.0%