Tasavvur qiling to'lov tizimi uchun system design qilyapsiz.
To'lovlarni amalga oshirishdagi eng jiddiy muammolardan biri - mijozdan ikki marta pul yechib olmaslik.
Bu narsani oldini olish uchun nima yechim qilgan bo'lardingiz?
Xatomi, yo’qmi javob beravering. Xato bo’lsa o’rganasiz, to’g’ri bo’lsa o’rgatasiz.
To'lovlarni amalga oshirishdagi eng jiddiy muammolardan biri - mijozdan ikki marta pul yechib olmaslik.
Bu narsani oldini olish uchun nima yechim qilgan bo'lardingiz?
Xatomi, yo’qmi javob beravering. Xato bo’lsa o’rganasiz, to’g’ri bo’lsa o’rgatasiz.
Uyda ishlashdan ko’ra ofisda ishlash ko’proq yoqadi, nimaga deb o’ylaysiz?
2👍18
Mabrur | Dasturlash va AI
Uyda ishlashdan ko’ra ofisda ishlash ko’proq yoqadi, nimaga deb o’ylaysiz?
Tepada kimdir boshda yong’oq chaqqandek qilib perforatorini aylantirib o’tirmaydi.
Tinch atmosfera, hamma ishlab o’tirgani ishlashga fokus jamlashga yordam beradi.
Eng muhimi 10 da kelib 6 da ketolasiz va uyga borib ish haqida butunlay unutasiz.
Remote ishlashni eng katta minuslari, huddi siz 24 soat ishlayotgandek tuyulasiz. Ertalab turibam kompyuterni ochib kod yozasiz, kechasi taskimni tugatishim kerak deb bezovta bo’libam kod yozasiz. Hullas, yaxshi manage qilib olmagan bo’sangiz, remote ishlash qiyinlashib ketadi.
Bu hozirgi vaqtdagi, hozirgi vaziyatdan kelib chiqqan fikrlarim, ba’zida remote ishlardayam shunaqa chill paytlar keladi, taskni yopib qo’yib bemalol yuraverasiz.
Tinch atmosfera, hamma ishlab o’tirgani ishlashga fokus jamlashga yordam beradi.
Eng muhimi 10 da kelib 6 da ketolasiz va uyga borib ish haqida butunlay unutasiz.
Remote ishlashni eng katta minuslari, huddi siz 24 soat ishlayotgandek tuyulasiz. Ertalab turibam kompyuterni ochib kod yozasiz, kechasi taskimni tugatishim kerak deb bezovta bo’libam kod yozasiz. Hullas, yaxshi manage qilib olmagan bo’sangiz, remote ishlash qiyinlashib ketadi.
Bu hozirgi vaqtdagi, hozirgi vaziyatdan kelib chiqqan fikrlarim, ba’zida remote ishlardayam shunaqa chill paytlar keladi, taskni yopib qo’yib bemalol yuraverasiz.
1👍17❤1
Katta Loyihalar Siri: Database Middleware
Hech o'ylab ko'rganmisiz, dasturingizga millionlab foydalanuvchilar oqib kirdi, DBingizga so'rovlar soni keskin ko'tarilib ketdi. Natijada dasturingiz sekin ishlayapti. CPU, RAM va diskingizdagi IO juda ko'tarilib ketgan. Bazangiz qulab tushdi, endi butun servisingiz to'xtab qoldi.
Nega Amazon, Netflixlar o'tirib qolmayapti, ularning ham million foydalanuvchisi borku, deyapsiz.
Gap shundaki, ularning barcha so'rovlari bitta joyga yuborilmaydi va bitta baza hamma ishni bajarmaydi. Ular odatda bazaga yuklamani (load) taqsimlashadi.
Asosiy Muammo: Write vs. Read
Baza bilan ishlashda ikki turdagi operatsiya bor:
Write: Yangi ma'lumot qo'shish, mavjud ma'lumotni o'zgartirish yoki o'chirish. Masalan, buyurtma berish, profilni yangilash, nimadirni o'zgartirish. Bu operatsiyalar bazaning ishlashiga kuchliroq ta'sir qiladi.
Read: Ma'lumotlarni shunchaki ko'rish. Masalan, mahsulot ro'yxatini yoki buyurtmalar tarixini ko'rish. Odatda, dasturlarda "Read" so'rovlari "Write" so'rovlaridan ancha ko'p bo'ladi.
Bitta bazaga ham "write", ham "read" so'rovlari kelaversa, baza ikkita vazifani birdan bajarishga qiynaladi va sekinlashadi. Bu xuddi soat 19:00 da Havasga kirsangiz, kassada bitta kassir ham mahsulotlarni skanerdan o'tkazishi, ham borib tovarlarni sortirovka qip kelishi, ham narxlar haqidagi savollarga javob berib o'tirishga ulgurmay qolganiga o'xshaydi.
Yechim: Read Replica Pattern
Bunday muammoni hal qilish uchun odatda Read Replica modelidan foydalaniladi.
Primary DB: Asosiy baza faqatgina "write" operatsiyalari uchun ajratiladi. U "write" ishlari bilan band bo'ladi.
Secondary DB (Replica): Asosiy bazani nusxalarini saqlaydi. Ular faqat "read" operatsiyalari uchun xizmat qiladi.
Replikatsiya (Replication): Primary DBga yozilgan har qanday yangi ma'lumot avtomatik ravishda barcha Secondary DB'larga nusxalanadi.
Bu model loadni taqsimlanishiga moslangan. Write so'rovlari asosiy bazaga, minglab-millionlab bo'lgan Read so'rovlari endi nusxalangan bazalarga borishni boshlaydi.
Kodda, mijoz buyurtma bersa Primary DBga yoz, buyurtma tarixini yoki narxni ko'rmoqchi bo'lsa Secondary DBga to'g'irla deb chiqish juda noqulay va kodni murakkablashtiradi. Aynan shu yerda Database Middleware ishlatiladi.
U huddi agentga o'xshab, dasturingiz va bazalaringiz o'rtasida turadi. Dasturingiz endi faqat Middlewarega murojaat qiladi, u esa so'rov turini tahlil qilib avtomatik tarzda to'g'ri bazaga yo'naltiradi.
Misol uchun, buyurtma berish bu write so'rovi, middleware uni Primary DB ga yo'naltiradi. Buyurtma tarixini ko'rish bu read so'rovi. Middleware uni so'rovlari kam bo'lgan Secondary DBlardan biriga yo'naltiradi. Bu usul dastur kodini soddalashtirib, databaseni boshqarishni soddalashtiradi.
Lekin buni kamchiliklariyam bor:
Database Middlewarening o'zi ham alohida, murakkab tizim. Uni sozlash (configuration) va doimiy monitoring qilish kerak. Noto'g'ri sozlansa, butun tizim ishdan chiqishi mumkin.
Barcha baza so'rovlari middleware orqali o'tganligi sababli, agar u qulasa, barcha DB'ga ulanish to'xtaydi. Shuning uchun, uni high availabilitysini qilishga klaster qilib o'rnatilishi shart. Bu esa o'z-o'zidan qo'shimcha resurs va xarajat degani.
@mabrur_dev
Hech o'ylab ko'rganmisiz, dasturingizga millionlab foydalanuvchilar oqib kirdi, DBingizga so'rovlar soni keskin ko'tarilib ketdi. Natijada dasturingiz sekin ishlayapti. CPU, RAM va diskingizdagi IO juda ko'tarilib ketgan. Bazangiz qulab tushdi, endi butun servisingiz to'xtab qoldi.
Nega Amazon, Netflixlar o'tirib qolmayapti, ularning ham million foydalanuvchisi borku, deyapsiz.
Gap shundaki, ularning barcha so'rovlari bitta joyga yuborilmaydi va bitta baza hamma ishni bajarmaydi. Ular odatda bazaga yuklamani (load) taqsimlashadi.
Asosiy Muammo: Write vs. Read
Baza bilan ishlashda ikki turdagi operatsiya bor:
Write: Yangi ma'lumot qo'shish, mavjud ma'lumotni o'zgartirish yoki o'chirish. Masalan, buyurtma berish, profilni yangilash, nimadirni o'zgartirish. Bu operatsiyalar bazaning ishlashiga kuchliroq ta'sir qiladi.
Read: Ma'lumotlarni shunchaki ko'rish. Masalan, mahsulot ro'yxatini yoki buyurtmalar tarixini ko'rish. Odatda, dasturlarda "Read" so'rovlari "Write" so'rovlaridan ancha ko'p bo'ladi.
Bitta bazaga ham "write", ham "read" so'rovlari kelaversa, baza ikkita vazifani birdan bajarishga qiynaladi va sekinlashadi. Bu xuddi soat 19:00 da Havasga kirsangiz, kassada bitta kassir ham mahsulotlarni skanerdan o'tkazishi, ham borib tovarlarni sortirovka qip kelishi, ham narxlar haqidagi savollarga javob berib o'tirishga ulgurmay qolganiga o'xshaydi.
Yechim: Read Replica Pattern
Bunday muammoni hal qilish uchun odatda Read Replica modelidan foydalaniladi.
Primary DB: Asosiy baza faqatgina "write" operatsiyalari uchun ajratiladi. U "write" ishlari bilan band bo'ladi.
Secondary DB (Replica): Asosiy bazani nusxalarini saqlaydi. Ular faqat "read" operatsiyalari uchun xizmat qiladi.
Replikatsiya (Replication): Primary DBga yozilgan har qanday yangi ma'lumot avtomatik ravishda barcha Secondary DB'larga nusxalanadi.
Bu model loadni taqsimlanishiga moslangan. Write so'rovlari asosiy bazaga, minglab-millionlab bo'lgan Read so'rovlari endi nusxalangan bazalarga borishni boshlaydi.
Kodda, mijoz buyurtma bersa Primary DBga yoz, buyurtma tarixini yoki narxni ko'rmoqchi bo'lsa Secondary DBga to'g'irla deb chiqish juda noqulay va kodni murakkablashtiradi. Aynan shu yerda Database Middleware ishlatiladi.
U huddi agentga o'xshab, dasturingiz va bazalaringiz o'rtasida turadi. Dasturingiz endi faqat Middlewarega murojaat qiladi, u esa so'rov turini tahlil qilib avtomatik tarzda to'g'ri bazaga yo'naltiradi.
Misol uchun, buyurtma berish bu write so'rovi, middleware uni Primary DB ga yo'naltiradi. Buyurtma tarixini ko'rish bu read so'rovi. Middleware uni so'rovlari kam bo'lgan Secondary DBlardan biriga yo'naltiradi. Bu usul dastur kodini soddalashtirib, databaseni boshqarishni soddalashtiradi.
Lekin buni kamchiliklariyam bor:
Database Middlewarening o'zi ham alohida, murakkab tizim. Uni sozlash (configuration) va doimiy monitoring qilish kerak. Noto'g'ri sozlansa, butun tizim ishdan chiqishi mumkin.
Barcha baza so'rovlari middleware orqali o'tganligi sababli, agar u qulasa, barcha DB'ga ulanish to'xtaydi. Shuning uchun, uni high availabilitysini qilishga klaster qilib o'rnatilishi shart. Bu esa o'z-o'zidan qo'shimcha resurs va xarajat degani.
@mabrur_dev
10👍30🔥6❤2
Telegram: Haqiqatan Ham Eng Xavfsiz Messengermi?
Ko‘pchiligimiz Telegramni dunyodagi eng xavfsiz messenjerlardan biri deb bilamiz. Lekin uning xavfsizlik mexanizmlariga biroz chuqurroq nazar tashlasak, bu savolning javobi unchalik ham oddiy emasligini ko‘ramiz.
Keling, avval “xavfsiz suhbat” deganda nima nazarda tutilishini aniqlashtirib olaylik. Dasturlash nuqtai nazaridan, bu "E2EE" (end-to-end encryption) tushunchasini anglatadi.
Bu jarayon qanday ishlaydi?
1. Siz xabarni yozasiz.
2. Xabar sizning telefoningizda shifrlanadi.
3. Bu shifrlangan xabar server orqali yuboriladi.
4. Faqatgina qabul qiluvchining telefoni uni shifrdan chiqarib, o‘qiy oladi.
E2EE usuldagi shaxsiy chatlarda gaplashsangiz, hech kim, hatto Durovni akasiyam serverlariga kirib xabarlaringizni o‘qiy olmaydi.
Lekin oddiy Telegram chatlari bunday ishlamaydi. Siz jo‘natgan xabar avvalo Telegram serverlariga boradi. U yerda xabar shifrlangan bo‘lsa-da, bu shifrlash (Client-Server Encryption) faqat sizning telefoningizdan servergacha amal qiladi. Serverda esa xabar qayta ishlanadi:
- Xabar bir necha qismga bo‘linadi (chunking).
- Bu qismlar va ularni ochish uchun kalitlar (decryption keys) turli davlatlardagi serverlarda saqlanadi.
- Qabul qiluvchiga yetib borgunicha, bu qismlar serverda qayta birlashtiriladi va keyingi telefonga jo‘natiladi (Server-Client Encryption).
Telegram bu usulni juda xavfsiz deb hisoblaydi, chunki xakker sizning xabaringizni o‘qish uchun turli mamlakatlardagi serverlardan ham xabar qismlarini, ham kalitlarni topib olishi kerak. Bu deyarli imkonsiz, ammo nazariy jihatdan imkoniyat mavjud. Bu sizning xabarlaringizni serverlarda o‘qib bo‘lmaydi degani emas - Telegramning o‘zida bu ma’lumotlarga kirish imkoniyati bor.
Haqiqiy Xavfsizlik - Mahfiy Chatlarda
Agar siz hech kim xabarlarimni o'qiy olmasin desangiz, Telegramning "maxfiy chat" funksiyasidan foydalanishingiz kerak.
Maxfiy chat nima qiladi?
Bu chatdagi barcha xabarlar sizning telefoningizda shifrlanadi (E2EE) va faqat qabul qiluvchi telefonida shifrdan chiqariladi. Shifrlash kalitlari serverda saqlanmaydi.
Bu funksiya faqat mobil ilovalar uchun mavjud, kompyuter (desktop) ilovalarida ishlamaydi. Shuningdek, maxfiy chatlarni guruhlar yoki kanallar uchun ishlatib bo‘lmaydi, shu sababdan guruhni nazorat qiladigan bot yasab qo'yib, oxirgi eventlarini olib ko'rsangiz "Rodnoylar AUEEEE" degan gruppadagi xabarlarni bemalol o'qib o'tirsangiz bo'ladi.
Oddiy kundalik muloqot uchun Telegramning odatiy chatlari yetarlicha xavfsiz. Juda maxfiy, shaxsiy yoki muhim ma’lumotlar almashmoqchi bo‘lsangiz, albatta "Maxfiy chat"dan foydalanganingiz ma’qul.
@mabrur_dev
Ko‘pchiligimiz Telegramni dunyodagi eng xavfsiz messenjerlardan biri deb bilamiz. Lekin uning xavfsizlik mexanizmlariga biroz chuqurroq nazar tashlasak, bu savolning javobi unchalik ham oddiy emasligini ko‘ramiz.
Keling, avval “xavfsiz suhbat” deganda nima nazarda tutilishini aniqlashtirib olaylik. Dasturlash nuqtai nazaridan, bu "E2EE" (end-to-end encryption) tushunchasini anglatadi.
Bu jarayon qanday ishlaydi?
1. Siz xabarni yozasiz.
2. Xabar sizning telefoningizda shifrlanadi.
3. Bu shifrlangan xabar server orqali yuboriladi.
4. Faqatgina qabul qiluvchining telefoni uni shifrdan chiqarib, o‘qiy oladi.
E2EE usuldagi shaxsiy chatlarda gaplashsangiz, hech kim, hatto Durovni akasiyam serverlariga kirib xabarlaringizni o‘qiy olmaydi.
Lekin oddiy Telegram chatlari bunday ishlamaydi. Siz jo‘natgan xabar avvalo Telegram serverlariga boradi. U yerda xabar shifrlangan bo‘lsa-da, bu shifrlash (Client-Server Encryption) faqat sizning telefoningizdan servergacha amal qiladi. Serverda esa xabar qayta ishlanadi:
- Xabar bir necha qismga bo‘linadi (chunking).
- Bu qismlar va ularni ochish uchun kalitlar (decryption keys) turli davlatlardagi serverlarda saqlanadi.
- Qabul qiluvchiga yetib borgunicha, bu qismlar serverda qayta birlashtiriladi va keyingi telefonga jo‘natiladi (Server-Client Encryption).
Telegram bu usulni juda xavfsiz deb hisoblaydi, chunki xakker sizning xabaringizni o‘qish uchun turli mamlakatlardagi serverlardan ham xabar qismlarini, ham kalitlarni topib olishi kerak. Bu deyarli imkonsiz, ammo nazariy jihatdan imkoniyat mavjud. Bu sizning xabarlaringizni serverlarda o‘qib bo‘lmaydi degani emas - Telegramning o‘zida bu ma’lumotlarga kirish imkoniyati bor.
Haqiqiy Xavfsizlik - Mahfiy Chatlarda
Agar siz hech kim xabarlarimni o'qiy olmasin desangiz, Telegramning "maxfiy chat" funksiyasidan foydalanishingiz kerak.
Maxfiy chat nima qiladi?
Bu chatdagi barcha xabarlar sizning telefoningizda shifrlanadi (E2EE) va faqat qabul qiluvchi telefonida shifrdan chiqariladi. Shifrlash kalitlari serverda saqlanmaydi.
Bu funksiya faqat mobil ilovalar uchun mavjud, kompyuter (desktop) ilovalarida ishlamaydi. Shuningdek, maxfiy chatlarni guruhlar yoki kanallar uchun ishlatib bo‘lmaydi, shu sababdan guruhni nazorat qiladigan bot yasab qo'yib, oxirgi eventlarini olib ko'rsangiz "Rodnoylar AUEEEE" degan gruppadagi xabarlarni bemalol o'qib o'tirsangiz bo'ladi.
Oddiy kundalik muloqot uchun Telegramning odatiy chatlari yetarlicha xavfsiz. Juda maxfiy, shaxsiy yoki muhim ma’lumotlar almashmoqchi bo‘lsangiz, albatta "Maxfiy chat"dan foydalanganingiz ma’qul.
@mabrur_dev
1🔥16❤6👍3
Cursor sizlardayam narx hisoblamay qo'ydimi? Nimagadir, 1 haftadan beri bir tiyin ishlatganim yo'q, g'alati tuyulyapti )
😁18👍1
Mikroservislardan monolitlarga qaytish tendensiyasi haqida ko'p o'qib qolayabman. Men ham tajribamdan kelib chiqib, shu mavzu bo'yicha ikki og'iz gaplarimni aytmoqchiman.
Nega ko'pchilik mikroservislardan voz kechib, monolitlarga qaytishni boshladi, nega bu hype avvalgidek emas?
1. Murakkablik Yo'qolmaydi, Faqat "Ko'chib O'tadi"
2. "Yashirin Xarajat"
Davomi pastda...
Nega ko'pchilik mikroservislardan voz kechib, monolitlarga qaytishni boshladi, nega bu hype avvalgidek emas?
1. Murakkablik Yo'qolmaydi, Faqat "Ko'chib O'tadi"
Mikroservislardagi ko'pchilik ishonadigan narsa - murakkablikni kamaytirish. Lekin bu shunchaki illyuziya. Dasturlashda "Conservation of Complexity" (Murakkablikning saqlanish qonuni) degan yozilmagan tushuncha bor. Ya'ni, siz murakkablikni yo'q qilmaysiz, shunchaki uni bir joydan ikkinchi joyga ko'chirasiz.
- Monolitdagi murakkablik: Kod ichida yashaydi. Modullar, klasslar va funksiyalar orasidagi bog'liqliklarda namoyon bo'ladi. Buni yengish uchun SOLID, DRY kabi dizayn prinsiplarini yaxshi bilish va ular bilan ishlash kerak bo'ladi. Kod ishlashi bitta asosan bitta joyda va tushunishga oson.
- Mikroservislardagi murakkablik: Endi bu murakkablik tarmoqqa ko'chadi. Siz nafaqat kod haqida, balki tarmoqning ishonchsizligi, ma'lumotlar bazasidagi taqsimlangan tranzaksiyalar (distributed transactions), service discovery, versiyalash va API shartnomalari kabi butun bir "distributed systems" muammolari haqida bosh qotirishingiz kerak.
2. "Yashirin Xarajat"
Dasturchilar mahsulot o'rniga infra bilan band va bu menimcha, mikroservislarning eng katta "yashirin xarajati". Har bir servis uchun alohida CI/CD pipeline, monitoring, logging, alerting va xavfsizlik konfiguratsiyalari kerak. Bu esa mahsulot rivojlanishidan vaqt oladigan ulkan DevOps ishini talab qiladi.
Amazon kabi gigantlarda har bir jamoaning ichida bunga mas'ul SRE (Site Reliability Engineer) mutaxassislari bor. Ammo kichikroq jamoalarda bu yuk ko'pincha dasturchining yelkasiga tushadi.
Natijada oddiy bir funksional uchun bir nechta servisni o'zgartirish, ular orasidagi API contractlar buzilmasligini ta'minlash va bir necha jamoa bilan kelishish kabi bosh og'riqlar paydo bo'ladi. Bu esa yana bir xavfli anti-pattern - "Distributed Monolith" (taqsimlangan monolit) ni keltirib chiqaradi. Servislar alohida deploy qilinsayam, ular bir-biriga shunchalik bog'liqki, bittasini o'zgartiish uchun qoglanlariniyam o'zgaritish kerak bo'ladi.
Davomi pastda...
1👍12🔥2👨💻1
Mabrur | Dasturlash va AI
Mikroservislardan monolitlarga qaytish tendensiyasi haqida ko'p o'qib qolayabman. Men ham tajribamdan kelib chiqib, shu mavzu bo'yicha ikki og'iz gaplarimni aytmoqchiman. Nega ko'pchilik mikroservislardan voz kechib, monolitlarga qaytishni boshladi, nega…
3. Tushunarsiz Bounded Contexts
4. Jamoa Tuzilmasi Arxitekturani Belgilaydi
5. Miya uchun Haddan Tashqari Yuklama (Cognitive Load)
Mikroservislar Google yoki Netflix kabi gigantlarning muammolarini hal qilish uchun paydo bo'ldi. Ammo ko'pchilik hype'ga ergashib, bu yechimni o'zining mutlaqo boshqa muammolariga qo'llay boshladi. Natijada ular "mikroservis muammosi" deb ataladigan yangi va ancha qimmat muammoga duch kelishdi.
Hozirgi sog'lom trend - bu "Monolith First" tamoyiliga amal qilish. Ya'ni, dasturni yaxshi strukturalangan modular monolit bilan boshlab, faqat biznes va texnik zarurat tug'ilganda eng ko'p og'riq keltirayotgan modulni alohida servis sifatida ajratib olish
@mabrur_dev
Mikroservislar qurishdagi eng og'riqli nuqtalardan biri - bu biznes domenini noto'g'ri boundariesga ajratish. O'zim ham bu yo'lda ko'p qoqilganman.
Domain-Driven Design (DDD) konsepsiyasi servislarni biznes qobiliyatlariga qarab ajratish kerakligini aytadi. Bu chegaralar "Bounded Contexts" (Chegaralangan Kontekstlar) deb ataladi. To'g'risini aytganda, bu tushunchani to'liq anglash va amalda to'g'ri qo'llash - arxitekturaning eng qiyin vazifalaridan biri. Agar kontekstlarni noto'g'ri aniqlasangiz, servislar o'rtasida tinimsiz "suhbat" (chatty communication) va o'ta kuchli bog'liqlik paydo bo'ladi.
Amazon Prime Video'ning monolitga qaytishining asosiy sabablaridan biri ham aynan shu: ular video monitoring servisining chegaralarini noto'g'ri aniqlagani sababli tarmoq xarajatlari osmonga chiqib ketgan.
4. Jamoa Tuzilmasi Arxitekturani Belgilaydi
Mikroservislar mustaqil, avtonom jamoalar uchun mo'ljallangan. Agar sizda 50 kishilik bitta katta jamoa bo'lsa-yu, siz ularni 15 ta mikroservis ustida ishlashga majburlasangiz, shaxsiy fikrimcha, kompaniya noto'g'ri yo'lda bo'ladi. Natijada doimiy sinxronizatsiya, cheksiz "call"lar, boshqa jamoa ruxsatini kutib bloklanib qolishlar kuzatiladi. Arxitekturani tanlashdan oldin berilishi kerak bo'lgan savol shu:
"Jamoalarimiz ham shunday "mikro" va mustaqil ishlay oladimi?"
5. Miya uchun Haddan Tashqari Yuklama (Cognitive Load)
Bitta monolitda dasturchi butun dastur mantig'ini bitta IDE ichida kuzatishi va debug qilishi mumkin. 15 ta mikroservisli tizimda esa bitta so'rov (request) qaysi servislardan o'tib, xatolik aynan qayerda yuz berganini tushunish uchun butun tizimning mental modelini miyada ushlab turish kerak. Bu kognitiv yuklamani keskin oshiradi va samaradorlikni tushiradi. Fokusni yo'qotdingizmi, demak, hammasini boshidan boshlashingiz kerak.
Mikroservislar Google yoki Netflix kabi gigantlarning muammolarini hal qilish uchun paydo bo'ldi. Ammo ko'pchilik hype'ga ergashib, bu yechimni o'zining mutlaqo boshqa muammolariga qo'llay boshladi. Natijada ular "mikroservis muammosi" deb ataladigan yangi va ancha qimmat muammoga duch kelishdi.
Hozirgi sog'lom trend - bu "Monolith First" tamoyiliga amal qilish. Ya'ni, dasturni yaxshi strukturalangan modular monolit bilan boshlab, faqat biznes va texnik zarurat tug'ilganda eng ko'p og'riq keltirayotgan modulni alohida servis sifatida ajratib olish
@mabrur_dev
2👍22🔥2👨💻2
Mabrur | Dasturlash va AI
Tasavvur qiling to'lov tizimi uchun system design qilyapsiz. To'lovlarni amalga oshirishdagi eng jiddiy muammolardan biri - mijozdan ikki marta pul yechib olmaslik. Bu narsani oldini olish uchun nima yechim qilgan bo'lardingiz? Xatomi, yo’qmi javob beravering.…
Yana miyani ishlatamiz )
Tasavvur qiling, Payme yoki Click ishlatyapsiz. Ikkalasidayam QR Code orqali to'lov qilish imkoniyati bor. Istalgan to'lov tizimida necha hil QR Code bilan to'lash kombinatsiyalari bor deb o'ylaysiz?
Har bir turdagi QR Code qanday ishlaydi, ular statikmi yoki dinamik o'zgaradimi?
Tasavvur qiling, Payme yoki Click ishlatyapsiz. Ikkalasidayam QR Code orqali to'lov qilish imkoniyati bor. Istalgan to'lov tizimida necha hil QR Code bilan to'lash kombinatsiyalari bor deb o'ylaysiz?
Har bir turdagi QR Code qanday ishlaydi, ular statikmi yoki dinamik o'zgaradimi?
2👍11
Mabrur | Dasturlash va AI
Yana miyani ishlatamiz ) Tasavvur qiling, Payme yoki Click ishlatyapsiz. Ikkalasidayam QR Code orqali to'lov qilish imkoniyati bor. Istalgan to'lov tizimida necha hil QR Code bilan to'lash kombinatsiyalari bor deb o'ylaysiz? Har bir turdagi QR Code qanday…
QR Code orqali to'lovlar asosan 2 xil bo'ladi, static va dinamik. Lekin ulardan yana 2 xil kombinatsiya yasasa bo'ladi: Consumer Presented, Merchant Presented
❤13👍11🔥5
Texnik intervyularda beriladigan savollardan biri - API va SDK ning farqlari nimada?
Bu savolga qanday javob bergan bo'lardingiz?
Bu savolga qanday javob bergan bo'lardingiz?
👍7
Kanal rivoji uchun kichik so’rovnoma.
Dasturlash kurslarini bitirib, yoki umuman ish qidirib yurganlar bormi?
Dasturlash kurslarini bitirib, yoki umuman ish qidirib yurganlar bormi?
Anonymous Poll
48%
Bor
39%
Ishlayman
14%
Endi o’rganyabman
🔥8👨💻2👍1
🔥7❤1
AI Agent vs MCP: Aql va Mahorat jangi!
Sun'iy Idrok (AI) shunchaki savollarga javob beradigan suhbatdosh rolidan chiqib, allaqachon real vazifalarni bajara oladigan yordamchiga aylanib bo'ldi. Hozirgi kundagi AI yordamchilar evolyutsiyasi deganda, eng ko'p ikki xil turdagi muhim tushunchalar tarqalgan - AI Agent va MCP (Model Context Protocol). Xo'sh, MCP va AI Agentlar nima, ularning farqi nimada?
1. AI Agent: Sizning Shaxsiy Yordamchingiz.
Xulosa: AI Agent - bu shunchaki suhbatlashadigan model emas, bu aniq maqsadlar qo'ya oladigan, reja tuzadaigan, xotiraga ega va o'z toolaridan foydalanib mustaqil ishlaydigan bir tizim.
2. MCP: Tizimlar uchun "Universal Adapter"
MCP bo'lmasa dasturchilar har bir yangi tizim (masalan Slackga integratsiya uchun) alohida maxsus kod yozishlari kerak bo'lardi. MCP esa yagona stadartlarni yaratib, bu jarayonni osonlashtirib berdi. Bitta "adapter" bilan xar-hil rozetkalarga ulanish imkoniyatini berdi.
Oddiyroq aytganda, AI Agent – bu usta oshpaz. MCP esa – barcha oshxona anjomlarini (plita, muzlatgich, mikserlarni) yagona standartdagi elektr tarmog'iga ulanishini ta'minlaydigan tizim. Oshpaz (Agent) har bir anjom uchun alohida "tok manbai" qidirib yurmaydi, shunchaki rozetkaga ulaydi va ular ishini qiladi. Demak, AI Agent o'z vazifalarini bajarish uchun MCP protokollardan foydalanishi mumkin.
@mabrur_dev
Sun'iy Idrok (AI) shunchaki savollarga javob beradigan suhbatdosh rolidan chiqib, allaqachon real vazifalarni bajara oladigan yordamchiga aylanib bo'ldi. Hozirgi kundagi AI yordamchilar evolyutsiyasi deganda, eng ko'p ikki xil turdagi muhim tushunchalar tarqalgan - AI Agent va MCP (Model Context Protocol). Xo'sh, MCP va AI Agentlar nima, ularning farqi nimada?
1. AI Agent: Sizning Shaxsiy Yordamchingiz.
Tasavvur qiling, sizda bir yordamchi bor. Siz unga "Brat, ertaga bir do'stim bilan uchrashuvim borda, nima qilsam bo'ladi?" deysiz. U esa o'zi internetga kiradi, kerakli saytlarni qidiradi, sizning qiziqishlaringizni, uning qiziqishlarini tekshiradi va sizga borish mumkin bo'lgan kinolar, parklar va boshqa narsalarni tayyor reja qilib beradi. AI Agent - huddi shunday yordamchi.
Rasmda ko'rsatilganidek, AI Agentning asosiy xususiyatlari quyidagilar:
- Avtonomlik: Agentga vazifa berganingizdan so'ng, u doimiy inson nazoratisiz mustaqil harakat qila oladi. U o'z rejasini tuzadi va uni amalga oshiradi. Shu bilan birga, "Human Control" (inson nazorati) ham aralashib turishi mumkin, ya'ni siz istagan paytda jarayonga aralashib, yo'nalish bera olasiz.
- Xotira (Memory): Agent shunchaki bir martalik buyruqni bajarmaydi. U oldingi suhbatlarni sizning xohishlaringizni va to'plagan bilimlarini xotirasida saqlaydi. Bu unga sizni yaxshi tushunishga va kelajakdagi vazifalarni yanada yaxshiroq bajarishga yordam bera oladi.
- Tools: Bu uning super kuchi desak bo'ladi. Agent shunchaki rejalashtirish bilan cheklanmaydi. U real dunyo bilan ishlash uchun turli toolardan foydalanadi:
APIga Callar: Boshqa dasturlar va servislar bilan gaplasha oladi.
Internetga kirish: Ma'lumot qidiradi, yangiliklarni o'qiydi.
Kod bilan ishlash: Kod yozishi, tahlil qilish va ishga tushirishi mumkin.
- Reactivity: Agent o'zining "atrof-muhiti" (masalan, yangi kelgan email, tizimdagi o'zgarishlarni) kuzatib boradi va shunga yarasha o'z harakatlarini o'zgartirishi mumkin.
Xulosa: AI Agent - bu shunchaki suhbatlashadigan model emas, bu aniq maqsadlar qo'ya oladigan, reja tuzadaigan, xotiraga ega va o'z toolaridan foydalanib mustaqil ishlaydigan bir tizim.
2. MCP: Tizimlar uchun "Universal Adapter"
Endi tasavvur qiling, siz Xitoyga sayohatga bordingiz. Telefoningiz zaryadkasi O'zbekistondagi rozetkalarga tushadi, ammo Xitoynikiga to'g'ri kelmaydi. Sizga nima kerak? "Universal adapter"
MCP (Model Context Protocol) - Sun'iy Idrok uchun huddi shunday universal adapter.
Anthropic kompaniyasi tomonidan ishlab chiqilgan bu tizim - AI modellar (masalan Claude bilan) tashqi dunyodagi turli tizimlar (database, fayl storagelar, APIlar) bilan oson til topishish uchun chiqarilgan standart (protokol).
Rasmning pastki qismida uning ishlash prinsipi ko'rsatilgan:
- Host: Bu siz foydalanyotgan dastur - masalan, Claudening desktop ilovasi, kod muharriri (IDE) yoki boshqa bir AI vositasi.
- MCP Client (Mijoz): Bu AI modelining ichiga o'rnatilgan komponent. U modelning "istaklarini" MCP tiliga o'girib beradi.
- MCP Server: Bu eng asosiy qismi. U modeldan kelgan so'rovni qabul qiladi va uni kerakli tashqi tizimga (masalan Google Drive, PostgreSQL, Githubga) yo'naltiradi. Natijani esa yana modelga tushunarli tilda qaytarib beradi.
MCP bo'lmasa dasturchilar har bir yangi tizim (masalan Slackga integratsiya uchun) alohida maxsus kod yozishlari kerak bo'lardi. MCP esa yagona stadartlarni yaratib, bu jarayonni osonlashtirib berdi. Bitta "adapter" bilan xar-hil rozetkalarga ulanish imkoniyatini berdi.
Oddiyroq aytganda, AI Agent – bu usta oshpaz. MCP esa – barcha oshxona anjomlarini (plita, muzlatgich, mikserlarni) yagona standartdagi elektr tarmog'iga ulanishini ta'minlaydigan tizim. Oshpaz (Agent) har bir anjom uchun alohida "tok manbai" qidirib yurmaydi, shunchaki rozetkaga ulaydi va ular ishini qiladi. Demak, AI Agent o'z vazifalarini bajarish uchun MCP protokollardan foydalanishi mumkin.
@mabrur_dev
2🔥13👍5❤3