imamrb / notes

1 stars 0 forks source link

System Design Resources #1

Open imamrb opened 2 years ago

imamrb commented 2 years ago

8 টা সিস্টেম ডিজাইন ইন্টারভিউ রিসোর্সঃ

১। সিস্টেম ডিজাইন প্রাইমার [https://github.com/donnemartin/system-design-primer]

সম্ভবত এটা সিস্টেম ডিজাইন সম্পর্কে ধারনা নেয়ার জন্য সবচেয়ে সুন্দর গাইডলাইন। খুবই বিগিনার ফ্রেন্ডলি এবং গোছানো। ফাইয়াজ ভাই ২০২০ সালে এটা সাজেস্ট করার পর থেকে যেকোন ইন্টারভিউ এর আগে এটা আমি অবশ্যই দেখে যাই। এই রিপোজিটরিতে দুইটা এক্সটার্নাল কন্টেন্ট অবশ্যই অবশ্যই দেখা উচিত। প্রথমটা স্কেলেবিলিটির উপর হার্ভার্ডের একটা লেকচার [https://www.youtube.com/watch?v=-W9F__D3oY4]। খুব চমৎকার এই লেকচারটা, প্রফেসরের সাথে স্টুডেন্টদের কনভার্সেশনের মত। বেশ এনগেজিং। দ্বিতীয়টা হচ্ছে Scalability for Dummies [https://www.lecloud.net/.../scalability-for-dummies-part...] নামের একটা মিনি ব্লগ সিরিজ। এখানে টপিক অনুসারে বেশ সুন্দর করে কনসেপ্ট গুলো সাজানো আছে।

২। SystemDesign মিডিয়াম ব্লগ [https://systemdesign.medium.com]

এই ব্লগটা বেশ সুন্দর করে লেখা মনে হয়েছে। এখানে কোন সিকোয়েন্স নেই, তবে নিজের ইচ্ছামত টপিকগুলা খুঁজে বের করে এখান থেকে দেখে নেয়া যেতে পারে।

৩। CodeKarle [https://www.codekarle.com]

এই সাইটের কন্টেন্ট ক্রিয়েটর সম্ভবত এখন ফেসবুকে কাজ করেন। উনার ভিডিওগুলো ইউটিউবেও আছে তবে ওয়েবসাইটের সুবিধা হল নিচে ব্লগ আকারেও লেখা আছে যেটা আমার কাছে রিভিশনের জন্য বেশি সুবিধার মনে হয়। উনার সবগুলো ভিডিওতে অনেক বেশি ফিচার কভার করার চেষ্টা করেছেন, এজন্য ভিডিওগুলোর লেংথ একটু বেশি (৩০ মিনিট থেকে ১ ঘণ্টা)। ভালো ব্যাপার হচ্ছে এখান থেকে ডিস্কাশনের জন্য অনেক পয়েন্টার পাওয়া যায়, যেটা সিস্টেম ডিজাইন ইন্টার্ভিউ এর জন্য বেশ উপকারী।

৪। Gaurav Sen Youtube Channel [https://www.youtube.com/c/GauravSensei]

আরেকজন ইন্ডিয়ান ইউটিউবার। সবচেয়ে বেশি ভালো লেগেছে উনার প্রেজেন্টেশন। ভিডিওগুলোর লেংথ বেশ ছোট, কারণ কমন টপিকগুলো উনি আলাদা আলাদা ভিডিওতে কভার করেছেন।

সিস্টেম ডিজাইনের জন্য একই টপিক এর জন্য মাল্টিপল আপ্রোচ এবং সেগুলোর সুবিধা, সীমাবদ্ধতা বোঝা বেশ দরকার। এজন্য কয়েকটা রিসোর্স থেকে দেখলে চিন্তাভাবনার জন্য বেশি আইডিয়া পাওয়া যায়।

[Reposted from my timeline]

High-level System Design is one of the most important concepts in Software Engineering, and it can be difficult to learn due to a lack of resources; therefore, I've included a few FREE resources from GitHub to help you improve your knowledge.

𝟏)𝐇𝐢𝐠𝐡-𝐥𝐞𝐯𝐞𝐥 𝐬𝐲𝐬𝐭𝐞𝐦 𝐝𝐞𝐬𝐢𝐠𝐧 𝐚𝐧𝐝 𝐨𝐛𝐣𝐞𝐜𝐭-𝐨𝐫𝐢𝐞𝐧𝐭𝐞𝐝 𝐝𝐞𝐬𝐢𝐠𝐧 Link: https://lnkd.in/dMgbECjR (163⭐)

𝟐) 𝐬𝐲𝐬𝐭𝐞𝐦-𝐝𝐞𝐬𝐢𝐠𝐧-𝐩𝐫𝐢𝐦𝐞𝐫 [𝐌𝐔𝐒𝐓 𝐒𝐄𝐄] Link: https://lnkd.in/d4vfp5y7 (195k ⭐)

𝟑)𝐆𝐫𝐨𝐤𝐤𝐢𝐧𝐠-𝐭𝐡𝐞-𝐒𝐲𝐬𝐭𝐞𝐦-𝐃𝐞𝐬𝐢𝐠𝐧 Link: https://lnkd.in/d-3uhvFg (130⭐)

𝟒)𝐒𝐲𝐬𝐭𝐞𝐦 𝐃𝐞𝐬𝐢𝐠𝐧 𝐛𝐲 𝐌𝐚𝐲𝐚𝐧𝐤 𝐏𝐫𝐚𝐣𝐚𝐩𝐚𝐭𝐢 [𝐌𝐔𝐒𝐓 𝐒𝐄𝐄] Link: https://lnkd.in/dPA375mu

𝟓)𝐬𝐲𝐬𝐭𝐞𝐦-𝐝𝐞𝐬𝐢𝐠𝐧-𝐩𝐫𝐞𝐩-𝐦𝐚𝐭𝐞𝐫𝐢𝐚𝐥 Link: https://lnkd.in/dqZ6ni6C (228⭐)

𝟔) workat.tech 𝐂𝐨𝐥𝐥𝐞𝐜𝐭𝐢𝐨𝐧 𝐨𝐟 𝐓𝐞𝐜𝐡 𝐁𝐥𝐨𝐠𝐬 by Gaurav Chandak , Sagar Jain [𝐌𝐔𝐒𝐓 𝐒𝐄𝐄] Link: https://lnkd.in/dM7atfJP

imamdg commented 1 year ago

𝟴-𝘄𝗲𝗲𝗸 𝗽𝗹𝗮𝗻 𝘁𝗼 𝗵𝗲𝗹𝗽 𝘆𝗼𝘂 𝗽𝗿𝗲𝗽𝗮𝗿𝗲 𝗳𝗼𝗿 𝘀𝘆𝘀𝘁𝗲𝗺 𝗱𝗲𝘀𝗶𝗴𝗻 𝗶𝗻𝘁𝗲𝗿𝘃𝗶𝗲𝘄𝘀.

Week 1️⃣ - 𝗧𝗼𝗽𝗶𝗰𝘀: Scalability, API Gateway, Load Balancing, Caching, CAP/PACELC theorems, Bloom Filters.

Study the basics of scalability and load balancing, including horizontal and vertical scaling, load balancing algorithms, and caching strategies.

Week 2️⃣ - 𝗧𝗼𝗽𝗶𝗰𝘀: Databases, Data Modeling, Partitioning, Sharding, Replication

Study different types of databases, including SQL and NoSQL, and their use cases. Learn about data indexing, sharding, and replication strategies.

Week 3️⃣ - 𝗧𝗼𝗽𝗶𝗰𝘀: Networking, REST, gRPC, GraphQL, DNS, Proxies, Websockets, Long Poll.

Study the basics of computer networking and RESTful architecture, including the HTTP protocol, DNS, Proxies, and Websockets.

Week 4️⃣ - 𝗧𝗼𝗽𝗶𝗰𝘀: Distributed Systems, Consistency Models, Quorum, Leader/Follower, Merkle Tree, Consistent Hashing.

Study the basics of distributed systems, consistency models, and how to ensure fault tolerance in distributed systems.

Week 5️⃣ - 𝗧𝗼𝗽𝗶𝗰𝘀: APIs, Architectural Design Patterns, and Microservices.

Study common design patterns like Publisher-Subscriber, Sharding pattern, Circuit Breaker, and Static Content Hosting. Understand the pros and cons of microservices.

Week 6️⃣ - 𝗧𝗼𝗽𝗶𝗰𝘀: System Design Practice and Interview Preparation.

Practice solving system design problems, both individually and in groups. Prepare for system design interview questions and scenarios.

Prepare for designing social media, Facebook Newsfeed, Instagram, Twitter Search, YouTube, Quora, and Stack Overflow.

Week 7️⃣ - 𝗧𝗼𝗽𝗶𝗰𝘀: More System Design Practice and Interview Preparation

Practice solving system design problems: Designing Dropbox, Typeahead Suggestion, API Rate limiting. Messenger.

Week 8️⃣ - 𝗧𝗼𝗽𝗶𝗰𝘀: More System Design Practice and Interview Preparation

Practice solving system design problems: Designing Web crawler, Yelp or proximity server, Uber, Ticketmaster.

To prepare for system design, I highly recommend 'Grokking' courses: https://lnkd.in/dyCRtiec and https://lnkd.in/g4Wii9r7

System Design Interview Survival Guide (2023): https://lnkd.in/deqz6gnz

Credits: Design Gurus & Arslan Ahmad