
System Design Trainer nima?
System Design Trainer — tizim dizayni bo‘yicha suhbatlarga tayyorgarlik ko‘rish uchun interaktiv doska. Siz ssenariyni tanlaysiz, AWS yoki Azure komponentlarini kanvasga sudrab olib kelasiz, ularni arxitekturaga ulaysiz va deterministik sig‘im simulyatsiyasini ishga tushirasiz.
Simulyator har bir komponent qancha trafikni qo‘llab-quvvatlay olishini hisoblaydi, tizimdagi tor joyni aniqlaydi va arxitekturaviy xatarlarni ko‘rsatadi. Dizayn tayyor bo‘lganda, Jev faqat sig‘im hisob-kitoblari orqali baholab bo‘lmaydigan tanlovlarni, jumladan masshtablanuvchanlik, ishonchlilik, ma’lumotlar dizayni va yozma tushuntirishingizni baholashi mumkin.
Asosiy imkoniyatlar
- Interaktiv arxitektura kanvasi: Doska
@xyflow/reactorqali React Flow yordamida yaratilgan. - Tizimli mashq: Loyihada to‘rtta bobga bo‘lingan 15 ta daraja mavjud.
- Jonli sig‘im modellash: Har bir tugun foydalanish darajasi va qancha foydalanuvchini qo‘llab-quvvatlay olishi haqidagi taxminni ko‘rsatadi.
- Arxitektura diagnostikasi: Simulyator yagona nosozlik nuqtalarini, yetishmayotgan yuk taqsimlagichlarni va ma’lumotlar bazalariga bevosita ulangan mijozlarni aniqlaydi.
- Narx va mavjudlik taxminlari: Tizim o‘tkazuvchanlik hisob-kitoblariga qo‘shimcha ko‘rsatkichlarni ham taqdim etadi.
- Suhbat oluvchiga xos baholash: Jev masshtablanuvchanlik, ishonchlilik, ma’lumotlar dizayni va yozma tushuntirishlarni baholaydi, so‘ng keyingi yaxshilanishlarni tavsiya qiladi.
- Maxsus texnologiyalar: Kafka, MongoDB yoki NGINX kabi texnologiyalarni kiritishingiz mumkin. Jev ularning arxitekturadagi rolini tasniflaydi, shunda ilova sig‘im profilini belgilay oladi.
- Mahalliy taraqqiyot: Dizaynlar va ssenariy jarayoni brauzerda saqlanadi.
- Erkin rejim: Tizimli darajalardan tashqarida ochiq doskadan foydalanish mumkin.
Loyihani o‘rnatish va ishga tushirish
1. Bog‘liqliklarni o‘rnating
Repozitoriyni klonlang yoki yuklab oling, terminalda uning katalogini oching va npm bog‘liqliklarini o‘rnating:
npm install
2. Mahalliy muhit faylini yarating
Ilova bilan birga keladigan muhit shablonini .env.local fayliga ko‘chiring:
cp .env.example .env.local
3. Jevni sozlang
Haqiqiy Jev javoblarini olish uchun .env.local fayliga TYPESAFE_API_KEY qiymatini qo‘shing. Jev @typesafe-ai/sdk yordamida lib/server/jev.ts faylida amalga oshirilgan.
Ilova API kalitisiz ham ishlashi mumkin. Bunday holatda Jev javoblari aniq belgilangan mock javob bilan almashtiriladi, bu esa tashqi baholashsiz ish jarayonining qolgan qismini sinab ko‘rish imkonini beradi.
4. Ishlab chiqish serverini ishga tushiring
npm run dev
Trainerdan foydalanishni boshlash uchun ishlab chiqish serveri ko‘rsatgan mahalliy manzilni oching.
Birinchi tizim dizayni mashqingizni bajaring
- Topshiriqni tanlang. Bir million foydalanuvchi uchun infratuzilma loyihalash kabi ssenariyni tanlang. Har bir ssenariyda belgilangan foydalanuvchilar soni va talablar beriladi.
- Maqsadlarni o‘qing. Darajalarda dizaynni ishga tushirganingizda tekshiriladigan majburiy maqsadlar va ixtiyoriy bonus maqsadlar mavjud.
- Bulut komponentlarini qo‘shing. Mos AWS yoki Azure komponentlarini doskaga sudrab olib keling.
- Arxitekturani ulang. Ssenariyga mos ravishda mijozlar, tarmoq komponentlari, ilova xizmatlari, keshlar, navbatlar va ma’lumotlar bazalari o‘rtasida so‘rov hamda ma’lumot yo‘llarini yarating.
- Dizaynni ishga tushiring. Foydalanish darajasi, qo‘llab-quvvatlanadigan foydalanuvchilar taxmini, mavjudlik, narx va arxitektura ogohlantirishlarini ko‘rib chiqing.
- Tor joyni bartaraf eting. Haddan tashqari yuklangan komponentlar yoki tuzilmaviy ogohlantirishlar asosida dizaynni yangilang, so‘ng uni qayta ishga tushiring.
- Jevdan fikr-mulohaza so‘rang. Tayyor bo‘lganingizda dizayn va yozma tushuntirishni baholash uchun yuboring.
Daraja qanday baholanadi?
Barcha majburiy maqsadlarni bajarish bitta yulduz beradi. Har bir bonus maqsad yana bitta yulduz beradi. Yulduzlar XP beradi va darajangizga hissa qo‘shadi, jarayon esa brauzerda saqlanadi.
4-bobda sizdan Azure Architecture Center dagi namunaviy arxitekturalarni qayta yaratish so‘raladi. Ushbu darajalardan birini bajarganingizdan so‘ng, trainer asl arxitekturaga havola beradi.
Sig‘im modelini tushuning
Sig‘im mexanizmi lib/simulate.ts faylida joylashgan. U deterministik bo‘lib, sun’iy intellektdan foydalanmaydi. Eng yuqori yuk ssenariy asosida quyidagi bog‘liqlik orqali aniqlanadi:
DAU × kunlik so‘rovlar soni ÷ 86,400 × eng yuqori yuk koeffitsiyenti
Model bu yukni o‘qish va yozish amallariga ajratadi, so‘ng uni Users tugunidan ulangan graf bo‘ylab uzatadi.
Ommabop komponentlar trafikni qanday o‘zgartiradi
- CDNlar: Ssenariy chekka nuqtada keshlanishi mumkin deb belgilagan trafik qismini o‘ziga oladi.
- Keshlar: O‘qish amallarini o‘z hit darajasiga ko‘ra o‘ziga oladi. Model kesh-aside ko‘rinishidagi yonma-yon joylashtirishni ham, ichki joylashtirishni ham qo‘llab-quvvatlaydi.
- Navbatlar: Yozish amallarini sinxron yo‘ldan chiqaradi va ularni o‘rtacha so‘rov tezligiga mos ravishda tekislaydi.
- Yonma-yon komponentlar: Bir xil turdagi komponentlar yukni teng taqsimlaydi. Masalan, ikkita ilova guruhiga ulangan yuk taqsimlagich trafikni ular o‘rtasida taqsimlaydi.
- SQL ma’lumotlar bazalari: Yozish sig‘imi bitta asosiy server bilan cheklanadi.
- NoSQL ma’lumotlar bazalari: Yozish sig‘imi bo‘limlar soniga qarab kengayadi.
Har bir tugun foydalanish darajasi va supports ~N users bahosini ko‘rsatadi; bu baho ssenariydagi foydalanuvchilar sonini foydalanish darajasiga bo‘lish orqali hisoblanadi. Tizimning umumiy sig‘imi eng past qo‘llab-quvvatlanadigan foydalanuvchilar bahosiga ega bo‘g‘in, ya’ni cheklovchi komponent bilan belgilanadi.
Dizayn iteratsiyasiga misol
Aytaylik, dizayn barcha mijoz trafigini to‘g‘ridan-to‘g‘ri bitta ilova komponentiga, so‘ngra ma’lumotlar bazasiga yuboradi. Simulyatsiyani ishga tushirish ilova yoki ma’lumotlar bazasini cheklovchi komponent sifatida, shuningdek ishonchlilik ogohlantirishlarini ko‘rsatishi mumkin.
Keyin arxitekturani mos taqsimlash, keshlash, asinxron qayta ishlash yoki ma’lumotlar komponentlarini qo‘shish orqali qayta ko‘rib chiqishingiz mumkin. Masalan, yuklamani taqsimlovchi ortidagi bir xil darajadagi ilova guruhlari ilova trafigini bo‘lib olishi, kesh o‘zining hit rate ko‘rsatkichiga muvofiq ma’lumotlar bazasiga yuboriladigan o‘qishlar sonini kamaytirishi, navbat esa yozish amallarini sinxron yo‘ldan chetga chiqarishi mumkin. Har bir o‘zgarishdan keyin modelni qayta ishga tushirib, cheklovchi komponent boshqa joyga ko‘chgan-ko‘chmaganini tekshiring.
Yuqoriroq sig‘im bahosi dizayn avtomatik ravishda to‘g‘ri ekanini anglatmaydi. Ishonchlilik, ma’lumotlar dizayni, masshtablanuvchanlik va tanlovlaringiz asosidagi mantiqdagi muvozanatlarni baholash uchun Jev’dan foydalaning.
Jev’dan samarali foydalaning
Deterministik simulyator hisoblangan raqamlarini Jev’ga faktlar sifatida taqdim etadi. Jev esa o‘tkazuvchanlik formulalariga keltirib bo‘lmaydigan mulohazalarni bajaradi.
- Baholash ballari: Masshtablanuvchanlik, ishonchlilik, ma’lumotlar dizayni va yozma tushuntirishni ko‘rib chiqadi.
- Yaxshilash tanlovi: Keyingi navbatda nimani yaxshilash kerakligini tanlaydi.
- Tekshiruv ro‘yxati bo‘yicha mulohazalar: Ssenariydagi har bir tekshiruv ro‘yxati bandi uchun bittadan Noul hosil qiladi.
- Maxsus komponent tasnifi: Siz kiritgan texnologiyaga arxitektura rolini beradi va trenerga mos sig‘im profilini qo‘llash imkonini yaratadi.
Kuchliroq fikr-mulohaza olish uchun yozma tushuntirishni aniq bayon qiling. Trafik oqimi, masshtablash taxminlari, nosozliklarni qayta ishlash, o‘qish va yozish andozalari hamda har bir asosiy komponent nima sababdan mavjudligini tasvirlab bering.
Ilg‘or maslahatlar
Har bir komponentni emas, cheklovchi komponentni optimallashtiring
Tizim faqat uni cheklayotgan komponent qo‘llab-quvvatlay oladigan miqdordagi foydalanuvchilarni xizmat bilan ta’minlaydi. Eng past qo‘llab-quvvatlanadigan foydalanuvchilar bahosini ko‘rsatayotgan tugundan boshlang. Dizaynni o‘zgartirgandan keyin simulyatsiyani qayta ishga tushiring, chunki bitta cheklovni bartaraf etish boshqasini yuzaga chiqarishi mumkin.
Sinxron va asinxron yo‘llarni taqqoslang
Navbatlar yozish amallarini sinxron so‘rov yo‘lidan olib tashlaydi va ularni o‘rtacha yuklamaga mos ravishda tekislaydi. Ssenariy asinxron qayta ishlashga ruxsat berganda, to‘g‘ridan-to‘g‘ri yozish yo‘lini navbatli arxitektura bilan taqqoslash uchun modeldan foydalaning.
Kesh joylashuvini sinab ko‘ring
Simulyator cache-aside andozasida yonma-yon ishlatiladigan hamda inline joylashtirilgan keshlarni taniydi. Joylashuv va hit rate quyi oqimdagi o‘qish trafigiga qanday ta’sir qilishini kuzating.
Tuzilmaviy ogohlantirishlarga e’tibor bering
Faqat foydalanish darajasiga e’tibor qaratmang. Yagona nosozlik nuqtalarini, yetishmayotgan yuklama taqsimlagichlarini va mijozdan ma’lumotlar bazasiga to‘g‘ridan-to‘g‘ri ulanishlarni tekshiring. Bu ogohlantirishlar xom sig‘im yetarli bo‘lsa ham, ishonchlilik yoki xavfsizlik bilan bog‘liq dizayn zaifliklarini aniqlashi mumkin.
Katalog raqamlari ortidagi manbani tekshiring
Sig‘im, mavjudlik va xarajat ma’lumotlari lib/catalog.ts faylida belgilanadi. Har bir raqam komponent xususiyatlari kartasida ko‘rsatilgan manbani o‘z ichiga oladi. Qiymatlar rasmiy limitlar, rasmiy SLA’lar, ta’minotchi benchmarklari, taxminlar yoki e’lon qilingan limiti mavjud bo‘lmagan xizmatlar sifatida tasniflanadi.
- Rasmiy limit: AWS yoki Azure tomonidan e’lon qilingan kvota, masalan, hisob darajasidagi so‘rovlar cheklovi.
- Rasmiy SLA: Ta’minotchining oylik ish vaqti bo‘yicha majburiyati.
- Ta’minotchi benchmarki: Kafolatlanmagan, ammo e’lon qilingan unumdorlik ko‘rsatkichi.
- Taxmin: Ta’minotchi ko‘rsatkichi mavjud bo‘lmaganda modellashtirilgan qiymat. Loyiha barcha xarajatlarni ham taxmin sifatida ko‘radi.
- E’lon qilingan limit mavjud emas: Mustaqil ravishda masshtablanadigan deb modellashtirilgan xizmat, shuning uchun u cheklovchi komponentga aylanmaydi.
README’da ushbu manbalar oxirgi marta 2026-yil sentabr oyida tekshirilgani ko‘rsatilgan. Bulut kvotalari o‘zgarishi va ularning ko‘pchiligi oshirilishi mumkinligi sababli, simulyatsiya natijalarini kafolat emas, balki taxmin sifatida qabul qilish kerak.
Ssenariylarni o‘rganing yoki kengaytiring
Ssenariy ta’riflari lib/scenarios.ts faylida, 15 ta tuzilgan daraja esa lib/levels.ts faylida saqlanadi. Mavjud amaliy topshiriqlarni kengaytirishda ssenariylarni lib/scenarios.ts fayliga qo‘shing.
Brauzerda saqlash mexanizmini tushuning
Canvas dizaynlari har bir ssenariy bo‘yicha localStorage’da saqlanadi, jarayon ham brauzerda saqlab boriladi. Brauzer xotirasi joriy brauzer profili va muhitiga mahalliy ekanini yodda tuting.
Xulosa
System Design Trainer interaktiv bulut arxitekturasi canvas’i, deterministik sig‘im modellashi, tuzilgan maqsadlar va Jev asosidagi dizayn ko‘rib chiqilishini birlashtiradi. O‘lchanadigan xatti-harakatni sinash uchun simulyatordan, tuzilmaviy muammolarni aniqlash uchun ogohlantirishlardan, tizim dizayni intervyusida kutiladigan mantiq va muvozanat tahlilini yaxshilash uchun esa Jev’dan foydalaning.
