https://mohit-singh.medium.com/top-10-system-design-concepts-every-programmer-should-learn-71bf6267f12