GoDasturchi
What Is System Design?

What Is System Design?

Tizim dizayni (System Design) nima?

Yakka duradgorni tasavvur qiling: u bitta uyni — devorlarini, tomini, eshigini — mukammal qilib qura oladi. Endi shahar rejalashtiruvchisini tasavvur qiling: uning ishi bitta uy qurish emas, balki mingta uyga suv qanday yetib borishi, yo'llar qayerdan o'tishi, elektr tarmog'i shahar kattalashganda ham yiqilib qolmasligi kerakligini hal qilish. Ikkalasi ham "qurish" bilan shug'ullanadi, lekin ular butunlay boshqa savollarga javob beradi — va aynan shu farq System Design (tizim dizayni)ning mohiyatini ko'rsatadi.

Shu paytgacha roadmap davomida siz duradgor kabi ishladingiz: bitta Go dasturini, bitta xizmatni (rate limiter, URL shortener, task queue, log aggregator) — puxta, to'g'ri, sinalgan qilib yozishni o'rgandingiz. Data Structures in Go, Go Design Patterns, Algorithms in Go kurslari sizga bitta dastur ICHIDA to'g'ri qarorlar qabul qilishni o'rgatdi. Bu — muhim, lekin BOSHQA ko'nikma: System Design — bitta dastur ichida emas, bir nechta dastur, server va foydalanuvchi ORASIDA to'g'ri qarorlar qabul qilish haqida.

Savol shakli ham o'zgaradi. Bitta xizmat yozayotganda siz so'raysiz: "bu funksiya to'g'ri natija qaytaradimi, xatoni to'g'ri boshqaryaptimi?" Tizim dizaynida esa savollar boshqacha: "bu xizmatga bir kunda million foydalanuvchi kirsa nima bo'ladi? Bitta server o'chib qolsa, butun tizim to'xtaydimi? Ma'lumot ikkita joyda saqlansa, ular bir-biriga mos kelishini qanday kafolatlaymiz?" Bular — kodning TO'G'RILIGI emas, balki tizimning KATTA MIQYOSDA qanday xatti-tutishi haqidagi savollar.

  • System Design Fundamentals — miqyoslash, ishonchlilik, izchillik haqidagi asosiy tushunchalar va lug'at
  • Scaling Data & Storage — ma'lumotning o'zi katta miqyosda qanday saqlanishi va tarqatilishi
  • Designing Real Systems — yuqoridagi ikkalasini haqiqiy, real misollarda (URL shortener, chat, yangiliklar lentasi) qo'llash

Keyingi kurslarda ko'radigan Introduction to Microservices — bitta katta dasturni KICHIK xizmatlarga qanday bo'lish va ularni bir-biri bilan qanday gaplashtirish (HTTP, Service Discovery, API Gateway) haqida edi — bu ko'proq amaliy, kod darajasidagi ko'nikma. Ushbu Level V esa bir qadam ORQAGA chekinib, "nega umuman bo'lish kerak, qachon kerak emas, va qanday miqyosda o'ylash kerak" degan katta rasmni beradi — Problem Decomposition kursi kodlashdan OLDINGI fikrlashni o'rgatgani kabi, System Design ham arxitekturaviy qarorlardan OLDINGI fikrlashni o'rgatadi.

Muhim eslatma: bu uchta kursda siz KOD YOZMAYSIZ. Bu — Problem Decomposition va Engineering Judgment kurslaridagi kabi, faqat O'QISH orqali fikrlash tarzini shakllantiradigan kurslar. Maqsad — Go sintaksisini emas, balki katta tizimlar haqida qanday SAVOL berish va ularga qanday javob TOPISHni o'rganish.

Key Takeaway

Key Takeaway:

System Design — bitta dastur ichida to'g'ri kod yozishdan farqli, ko'plab xizmat, server va foydalanuvchi orasidagi o'zaro ta'sirni miqyos, ishonchlilik va izchillik nuqtai nazaridan loyihalash ko'nikmasi. U kodlash ko'nikmasidan mustaqil, lekin unga teng darajada muhim.

NEXT UP

Vertical vs Horizontal Scaling

What Is System Design?

Tizim dizayni (System Design) nima?

Yakka duradgorni tasavvur qiling: u bitta uyni — devorlarini, tomini, eshigini — mukammal qilib qura oladi. Endi shahar rejalashtiruvchisini tasavvur qiling: uning ishi bitta uy qurish emas, balki mingta uyga suv qanday yetib borishi, yo'llar qayerdan o'tishi, elektr tarmog'i shahar kattalashganda ham yiqilib qolmasligi kerakligini hal qilish. Ikkalasi ham "qurish" bilan shug'ullanadi, lekin ular butunlay boshqa savollarga javob beradi — va aynan shu farq System Design (tizim dizayni)ning mohiyatini ko'rsatadi.

Shu paytgacha roadmap davomida siz duradgor kabi ishladingiz: bitta Go dasturini, bitta xizmatni (rate limiter, URL shortener, task queue, log aggregator) — puxta, to'g'ri, sinalgan qilib yozishni o'rgandingiz. Data Structures in Go, Go Design Patterns, Algorithms in Go kurslari sizga bitta dastur ICHIDA to'g'ri qarorlar qabul qilishni o'rgatdi. Bu — muhim, lekin BOSHQA ko'nikma: System Design — bitta dastur ichida emas, bir nechta dastur, server va foydalanuvchi ORASIDA to'g'ri qarorlar qabul qilish haqida.

Savol shakli ham o'zgaradi. Bitta xizmat yozayotganda siz so'raysiz: "bu funksiya to'g'ri natija qaytaradimi, xatoni to'g'ri boshqaryaptimi?" Tizim dizaynida esa savollar boshqacha: "bu xizmatga bir kunda million foydalanuvchi kirsa nima bo'ladi? Bitta server o'chib qolsa, butun tizim to'xtaydimi? Ma'lumot ikkita joyda saqlansa, ular bir-biriga mos kelishini qanday kafolatlaymiz?" Bular — kodning TO'G'RILIGI emas, balki tizimning KATTA MIQYOSDA qanday xatti-tutishi haqidagi savollar.

  • System Design Fundamentals — miqyoslash, ishonchlilik, izchillik haqidagi asosiy tushunchalar va lug'at
  • Scaling Data & Storage — ma'lumotning o'zi katta miqyosda qanday saqlanishi va tarqatilishi
  • Designing Real Systems — yuqoridagi ikkalasini haqiqiy, real misollarda (URL shortener, chat, yangiliklar lentasi) qo'llash

Keyingi kurslarda ko'radigan Introduction to Microservices — bitta katta dasturni KICHIK xizmatlarga qanday bo'lish va ularni bir-biri bilan qanday gaplashtirish (HTTP, Service Discovery, API Gateway) haqida edi — bu ko'proq amaliy, kod darajasidagi ko'nikma. Ushbu Level V esa bir qadam ORQAGA chekinib, "nega umuman bo'lish kerak, qachon kerak emas, va qanday miqyosda o'ylash kerak" degan katta rasmni beradi — Problem Decomposition kursi kodlashdan OLDINGI fikrlashni o'rgatgani kabi, System Design ham arxitekturaviy qarorlardan OLDINGI fikrlashni o'rgatadi.

Muhim eslatma: bu uchta kursda siz KOD YOZMAYSIZ. Bu — Problem Decomposition va Engineering Judgment kurslaridagi kabi, faqat O'QISH orqali fikrlash tarzini shakllantiradigan kurslar. Maqsad — Go sintaksisini emas, balki katta tizimlar haqida qanday SAVOL berish va ularga qanday javob TOPISHni o'rganish.

Key Takeaway

Key Takeaway:

System Design — bitta dastur ichida to'g'ri kod yozishdan farqli, ko'plab xizmat, server va foydalanuvchi orasidagi o'zaro ta'sirni miqyos, ishonchlilik va izchillik nuqtai nazaridan loyihalash ko'nikmasi. U kodlash ko'nikmasidan mustaqil, lekin unga teng darajada muhim.

NEXT UP

Vertical vs Horizontal Scaling