🔥4🤷♂2 2⚡1👍1
Forwarded from ITEC 🧑💻🧠
❓ Biznes egasi sifatida mijozlaringizni haqiqatan qanchalik ushlab qolayotganingizni bilishni xohlaysizmi?
🫴🏻 Eng samarali yechim — Cohort (yoki Vintage) tahlili.
Bu tahlil mijozlarni ular biznesga kirgan yoki birinchi xarid qilgan vaqtiga ko‘ra guruhlaydi va keyingi oylar davomida ularning faoliyatini kuzatadi. Shu orqali siz:
- qaysi davrlardagi mijozlar yaxshiroq ushlanayotganini,
- qaysi o‘zgarishlar mijozlarni yo‘qotishga olib kelayotganini,
- mahsulot yangilanishlarining xatti-harakatga ta’sirini
aniq ko‘ra olasiz.
💡 Esingizda bo‘lsin: yangi mijoz jalb qilish qimmat, lekin mavjud mijozni ushlab qolish oson va samarali. Shu bois, cohort tahlili biznesingizni strategik rivojlantirishda muhim vosita hisoblanadi.
🫴🏻 Eng samarali yechim — Cohort (yoki Vintage) tahlili.
Bu tahlil mijozlarni ular biznesga kirgan yoki birinchi xarid qilgan vaqtiga ko‘ra guruhlaydi va keyingi oylar davomida ularning faoliyatini kuzatadi. Shu orqali siz:
- qaysi davrlardagi mijozlar yaxshiroq ushlanayotganini,
- qaysi o‘zgarishlar mijozlarni yo‘qotishga olib kelayotganini,
- mahsulot yangilanishlarining xatti-harakatga ta’sirini
aniq ko‘ra olasiz.
💡 Esingizda bo‘lsin: yangi mijoz jalb qilish qimmat, lekin mavjud mijozni ushlab qolish oson va samarali. Shu bois, cohort tahlili biznesingizni strategik rivojlantirishda muhim vosita hisoblanadi.
🔥4⚡2👍2 1
Forwarded from Jakhongir Rakhmonov - IT
Bu narsani har bir backend dasturchisi bilishi shart
Backendni jiddiy o‘rganaman degan dasturchi albatta Distributed System lar haqida o‘rganishi kerak. Chunki minglab, millionlab foydalanuvchilar ishlatadigan sistemalar distributed bo‘lmasdan ilojisi yo‘q.
Distributed System lar bir nechta qismlardan, bir nechta ma’lumotlar bazasidan tashkil topgan bo‘ladi va ushbu qismlar bir biri bilan network orqali gaplashishadi. Bunday holatda esa har doim ham hamma narsa siz kutgandek ishlayvermaydi. Qandaydir muammolar bo‘lib turishi aniq, ayniqsa network bilan. Biror serverda internet sekin ishlashi mumkin, qandaydir DNS muammo bo‘lishi mumkin, packet loss bo‘lishi mumkin va hokazo. Xullas bunday muammo bo‘lishi aniq, 100%.
Shunday holatlarga sizning tizimingiz tayyor bo‘lishi kerak. Oldindan shunday network muammo bo‘lsa nima qilamiz deb o‘ylab qo‘yish kerak.
Bunda bizga CAP nazariyasi yordam beradi. Unga ko‘ra sistemalarda uch xil xususiyat bor:
- [C] Consistency - Ma’lumotlar bazasidan sistemaning barcha qismlari nimadir o‘qimoqchi bo‘lganida eskirib qolgan ma’lumotni olmaydi, eng oxirgi yozilgan ma’lumotlarni oladilar.
- [A] Availability - Tizim har doim ishlab turadi.
- [P] Partition tolerance - Network bilan muammo bo‘lganda ham tizim kutilgandek ishlaydi.
Tepada aytib o‘tdikki network bilan muammolar har doim bo‘ladi va ushbu nazariyaga ko‘ra siz faqatgina yoki Consistency ni yoki Availability ni tanlashga majbursiz. Ikkalasini birdaniga tanlay olmaysiz. Ya’ni sizda har doim P bo‘ladi, siz C yoki A ni tanlashingiz shart.
Masalan sizda Master database va uning replikasi bor. Foydalanuvchilar Masterga yozadi, ma’lumotlarning nusxalari replikaga boradi va replikadan foydalanadiganlar eng oxirgi (ya’ni consistent) ma’lumotlarni o‘qiy oladilar.
Deylik qandaydir network muammo bo‘ldi va master bilan replika orasida bog‘lanish uzildi.
Endi sizda ikkita yo‘l bor:
Birinchisi - consistency ni prioritetga qo‘yish, ya’ni CP. Master ishlayveradi, replicaga kelayotgan requestlar esa "Database unavailable" degan xatoni oladi.
Ikkinchisi - availability ni prioritetga qo‘yish, yani AP. Master ham replica ham ishlayveradi. Lekin bir biriga yozilgan ma’lumotlarni jo‘natishmaydi. Consistency yo‘qoladi. Foydalanuvchilar eskirib qolgan ma’lumotlarni ko‘rishi mumkin.
Qaysi birini tanlash esa holatga bog‘liq.
Masalan siz Netflix quryapsiz. Agar foydalanuvchilar sal-pal eskirib qolgan ma’lumotlarni ko‘rsa qo‘rqinchli emas Netflix uchun. Shuning uchun ham bu sistemani AP qilish kerak, availability ni prioritetga qo‘yish kerak.
Yana bir misol. Deylik siz biror avialiniyaning sistemasini quryapsiz. Unda parvozlarni qidirish funksiyasi mavjud. Bu holatda ham AP qilgan, ya’ni availabilityni muhib deb topish to‘g‘ri. Chunki foydalanuvchilar sal-pal eskirib qolgan narxlarni ko‘rsa ham unchalik qo‘rqinchli emas. Amma umuman qidira olishmasa - qo‘rqinchli.
Lekin chipta sotib olayotganda esa CP qilish shart. Consistent bo‘lishi kerak. Ma’lumotlar aniq va so‘ngi bo‘lishi kerak. Aks holda bitta o‘rinning chiptasini bir nechta odamga sotib yuborishingiz mumkin. Bu esa - qo‘rqinchli.
@jakhonrakhmonov
Backendni jiddiy o‘rganaman degan dasturchi albatta Distributed System lar haqida o‘rganishi kerak. Chunki minglab, millionlab foydalanuvchilar ishlatadigan sistemalar distributed bo‘lmasdan ilojisi yo‘q.
Distributed System lar bir nechta qismlardan, bir nechta ma’lumotlar bazasidan tashkil topgan bo‘ladi va ushbu qismlar bir biri bilan network orqali gaplashishadi. Bunday holatda esa har doim ham hamma narsa siz kutgandek ishlayvermaydi. Qandaydir muammolar bo‘lib turishi aniq, ayniqsa network bilan. Biror serverda internet sekin ishlashi mumkin, qandaydir DNS muammo bo‘lishi mumkin, packet loss bo‘lishi mumkin va hokazo. Xullas bunday muammo bo‘lishi aniq, 100%.
Shunday holatlarga sizning tizimingiz tayyor bo‘lishi kerak. Oldindan shunday network muammo bo‘lsa nima qilamiz deb o‘ylab qo‘yish kerak.
Bunda bizga CAP nazariyasi yordam beradi. Unga ko‘ra sistemalarda uch xil xususiyat bor:
- [C] Consistency - Ma’lumotlar bazasidan sistemaning barcha qismlari nimadir o‘qimoqchi bo‘lganida eskirib qolgan ma’lumotni olmaydi, eng oxirgi yozilgan ma’lumotlarni oladilar.
- [A] Availability - Tizim har doim ishlab turadi.
- [P] Partition tolerance - Network bilan muammo bo‘lganda ham tizim kutilgandek ishlaydi.
Tepada aytib o‘tdikki network bilan muammolar har doim bo‘ladi va ushbu nazariyaga ko‘ra siz faqatgina yoki Consistency ni yoki Availability ni tanlashga majbursiz. Ikkalasini birdaniga tanlay olmaysiz. Ya’ni sizda har doim P bo‘ladi, siz C yoki A ni tanlashingiz shart.
Masalan sizda Master database va uning replikasi bor. Foydalanuvchilar Masterga yozadi, ma’lumotlarning nusxalari replikaga boradi va replikadan foydalanadiganlar eng oxirgi (ya’ni consistent) ma’lumotlarni o‘qiy oladilar.
Deylik qandaydir network muammo bo‘ldi va master bilan replika orasida bog‘lanish uzildi.
Endi sizda ikkita yo‘l bor:
Birinchisi - consistency ni prioritetga qo‘yish, ya’ni CP. Master ishlayveradi, replicaga kelayotgan requestlar esa "Database unavailable" degan xatoni oladi.
Ikkinchisi - availability ni prioritetga qo‘yish, yani AP. Master ham replica ham ishlayveradi. Lekin bir biriga yozilgan ma’lumotlarni jo‘natishmaydi. Consistency yo‘qoladi. Foydalanuvchilar eskirib qolgan ma’lumotlarni ko‘rishi mumkin.
Qaysi birini tanlash esa holatga bog‘liq.
Masalan siz Netflix quryapsiz. Agar foydalanuvchilar sal-pal eskirib qolgan ma’lumotlarni ko‘rsa qo‘rqinchli emas Netflix uchun. Shuning uchun ham bu sistemani AP qilish kerak, availability ni prioritetga qo‘yish kerak.
Yana bir misol. Deylik siz biror avialiniyaning sistemasini quryapsiz. Unda parvozlarni qidirish funksiyasi mavjud. Bu holatda ham AP qilgan, ya’ni availabilityni muhib deb topish to‘g‘ri. Chunki foydalanuvchilar sal-pal eskirib qolgan narxlarni ko‘rsa ham unchalik qo‘rqinchli emas. Amma umuman qidira olishmasa - qo‘rqinchli.
Lekin chipta sotib olayotganda esa CP qilish shart. Consistent bo‘lishi kerak. Ma’lumotlar aniq va so‘ngi bo‘lishi kerak. Aks holda bitta o‘rinning chiptasini bir nechta odamga sotib yuborishingiz mumkin. Bu esa - qo‘rqinchli.
@jakhonrakhmonov
👍12🔥3 2