چطور System Design کمک میکنه که یک سرویس کوتاه کننده لینک Url-Shortner طراحی کنیم؟
تا حالا شده توی بحث فنی با هم تیمی هاتون به چالش بخورید؟هرکدومتون یک نظری داشته باشید و نتونید به تفاهم برسید؟
یا هنگام طراحی یک سرویس جدید، سردرگم باشید الان باید چه کاری کنم؟
چه روشی از بین چندین راه حل ارائه شده واقعا مناسبه؟
من مهدی ام و توی این سری از پست ها سعی میکنم نکات و اصول معماری سیستم با مثال عملی با هم پیش ببریم.
برای مطالعه به لینک زیر مراجعه کنید
https://www.linkedin.com/posts/delzendeh_sestem-design-2-activity-7411637249366441984--0Ul?utm_source=share&utm_medium=member_desktop&rcm=ACoAAA6jGs8B6Xsuwj5ptm3WhFPuUawh0SpUyvE
تا حالا شده توی بحث فنی با هم تیمی هاتون به چالش بخورید؟هرکدومتون یک نظری داشته باشید و نتونید به تفاهم برسید؟
یا هنگام طراحی یک سرویس جدید، سردرگم باشید الان باید چه کاری کنم؟
چه روشی از بین چندین راه حل ارائه شده واقعا مناسبه؟
من مهدی ام و توی این سری از پست ها سعی میکنم نکات و اصول معماری سیستم با مثال عملی با هم پیش ببریم.
برای مطالعه به لینک زیر مراجعه کنید
https://www.linkedin.com/posts/delzendeh_sestem-design-2-activity-7411637249366441984--0Ul?utm_source=share&utm_medium=member_desktop&rcm=ACoAAA6jGs8B6Xsuwj5ptm3WhFPuUawh0SpUyvE
👍2👌2
قسمت اول، بخش دوم و چهارم، خلق ارزش و کیفیت:
برای چی داریم کار میکنیم؟ بدست آوردن پول؟ قطعا قبل از بدست آوردن پول یه چیزی وجود داره که تونسته تبدیل به پول بشه و اون خلق ارزشه، تا ارزشی خلق نکنید کسی به شما پول نمیده، تا نیازی رو بر آورده نکنید کسی از پول جیب خودش که براش زحمت کشیده برای محصول شما خرج نمیکنه.
مهمترین بخش تولید یک نرم افزار «خلق ارزش» هست، تولید میکنید چون برای مشتریان شما کاری ارزشمند هست. پس تولید میکنید و اونا برای برطرف کردن نیازشون از شما میخرن.
کیفیت یکی از بخشهای مهم این سیستم هست ولی مهمترینش نیست، ما محصولات بی کیفیتی داریم که نیار مشتری رو به بهترین شکل رفع میکنند. شما میتونید یک سشوار تولید کنید که از همه نظر کیفیت ساختش عالی باشه، گرون باشه ولی اونقدر سنگینه که مشتری بیشتر از یک دقیقه نمیتونه روی دستش نگه داره. از این دست مثال ها زیاد هست تا بدونید کیفیت مهمترین بخش تولید یک نرمافزار نیست، و بدترین چیزی که اتفاقا باعث میشه یک محصول اونقدر دیر به بازار برسه تا نیاز مشتری رفع بشه مبحث کیفیت هست که کاملا هم نسبیه. و خیلی جاها هم به دلیل کمالگرایی بهش توجه نمیشه.
اینجا نقطهای هست که باید یه نگاه به جیب و سرمایهی خودتون بندازید ببینید تا چقدر میتونید یک محصول با کیفیت از نظر زمانی تولید کنید، چون زمان رو از دست بدید و جیبتون خالی بشه اون کار ارزشمند به دست مشتری نرسه، اون کیفیت به چه درد مشتری میخوره؟
برای حل این مساله نسخه بندی کنید، همه چیز رو یادداشت کنید، همهی ایدههاتون برای کیفیت رو یادداشت کنید ولی وای به روزتون اگر خواستید همهی اونچه که نوشتید رو توی نسخهی اول به دست مشتری برسونید. رقبای شما وارد میشن و با یک ایدهی خلاقانه اصل کیفیت و زحمات بیوقفهی شما بر سر کیفیت رو زیر سوال میبرن به طوری که اصلا دیگه مهم نیست دکمههای گوشیای که طراحی کردید چقدر با کیفیت و نرم هستند، اونها محصولی رو تولید کردن که اصلا دکمه نداره بلکه با لمس کردن روی گوشی میشه تایپ کرد!
خلاقیت میتونه زحمات شمارو برای اصل کیفیت زیر سوال ببره و کلا نیاز مشتری رو تغییر بده و اون زحمت و حقوقی که شما داری میدی که این دکمهی تماس چه رنگی باشه، چه شکلی باشه، لبهاش چقدر گرد باشه کاملا در مقابل همهی ارزشهای جدید بی ارزش میشه!
ادامه دارد....
@easymicroservices
برای چی داریم کار میکنیم؟ بدست آوردن پول؟ قطعا قبل از بدست آوردن پول یه چیزی وجود داره که تونسته تبدیل به پول بشه و اون خلق ارزشه، تا ارزشی خلق نکنید کسی به شما پول نمیده، تا نیازی رو بر آورده نکنید کسی از پول جیب خودش که براش زحمت کشیده برای محصول شما خرج نمیکنه.
مهمترین بخش تولید یک نرم افزار «خلق ارزش» هست، تولید میکنید چون برای مشتریان شما کاری ارزشمند هست. پس تولید میکنید و اونا برای برطرف کردن نیازشون از شما میخرن.
کیفیت یکی از بخشهای مهم این سیستم هست ولی مهمترینش نیست، ما محصولات بی کیفیتی داریم که نیار مشتری رو به بهترین شکل رفع میکنند. شما میتونید یک سشوار تولید کنید که از همه نظر کیفیت ساختش عالی باشه، گرون باشه ولی اونقدر سنگینه که مشتری بیشتر از یک دقیقه نمیتونه روی دستش نگه داره. از این دست مثال ها زیاد هست تا بدونید کیفیت مهمترین بخش تولید یک نرمافزار نیست، و بدترین چیزی که اتفاقا باعث میشه یک محصول اونقدر دیر به بازار برسه تا نیاز مشتری رفع بشه مبحث کیفیت هست که کاملا هم نسبیه. و خیلی جاها هم به دلیل کمالگرایی بهش توجه نمیشه.
اینجا نقطهای هست که باید یه نگاه به جیب و سرمایهی خودتون بندازید ببینید تا چقدر میتونید یک محصول با کیفیت از نظر زمانی تولید کنید، چون زمان رو از دست بدید و جیبتون خالی بشه اون کار ارزشمند به دست مشتری نرسه، اون کیفیت به چه درد مشتری میخوره؟
برای حل این مساله نسخه بندی کنید، همه چیز رو یادداشت کنید، همهی ایدههاتون برای کیفیت رو یادداشت کنید ولی وای به روزتون اگر خواستید همهی اونچه که نوشتید رو توی نسخهی اول به دست مشتری برسونید. رقبای شما وارد میشن و با یک ایدهی خلاقانه اصل کیفیت و زحمات بیوقفهی شما بر سر کیفیت رو زیر سوال میبرن به طوری که اصلا دیگه مهم نیست دکمههای گوشیای که طراحی کردید چقدر با کیفیت و نرم هستند، اونها محصولی رو تولید کردن که اصلا دکمه نداره بلکه با لمس کردن روی گوشی میشه تایپ کرد!
خلاقیت میتونه زحمات شمارو برای اصل کیفیت زیر سوال ببره و کلا نیاز مشتری رو تغییر بده و اون زحمت و حقوقی که شما داری میدی که این دکمهی تماس چه رنگی باشه، چه شکلی باشه، لبهاش چقدر گرد باشه کاملا در مقابل همهی ارزشهای جدید بی ارزش میشه!
ادامه دارد....
@easymicroservices
❤1👏1👌1
وقتشه روی Mongo هم کامل HandOn بشیم و کوئری پیشرفته بزنیم!
یکی از قابلیتهای مونگو این هست که برخی فیلدها با فرمت آرائه هستند (در حالی که توی دیتابیس های ریلیشنی باید جدول مجزا به صورت ارتباط 1به n در نظر بگیریم). همین تفاوت باعث میشه که کوئری زدن روی مونگو کمی متفاوت بشه.
من مهدی ام، و سعی دارم توی این سری از پستها، سیر تا پیاز کوئری نویسی توی Mongo که به صورت عملی باهاش درگیر شدم براتون توضیح بدم.
اگر از این محتوا لذت بردین، حتما پست ذخیره کنین و برای دوستاتون هم بفرستین.
برای مطالعه بیشتر لینک زیر مراجعه کنید
https://www.linkedin.com/posts/delzendeh_mongo8-activity-7413816026586415122-m-4t?utm_source=share&utm_medium=member_desktop&rcm=ACoAAA6jGs8B6Xsuwj5ptm3WhFPuUawh0SpUyvE
یکی از قابلیتهای مونگو این هست که برخی فیلدها با فرمت آرائه هستند (در حالی که توی دیتابیس های ریلیشنی باید جدول مجزا به صورت ارتباط 1به n در نظر بگیریم). همین تفاوت باعث میشه که کوئری زدن روی مونگو کمی متفاوت بشه.
من مهدی ام، و سعی دارم توی این سری از پستها، سیر تا پیاز کوئری نویسی توی Mongo که به صورت عملی باهاش درگیر شدم براتون توضیح بدم.
اگر از این محتوا لذت بردین، حتما پست ذخیره کنین و برای دوستاتون هم بفرستین.
برای مطالعه بیشتر لینک زیر مراجعه کنید
https://www.linkedin.com/posts/delzendeh_mongo8-activity-7413816026586415122-m-4t?utm_source=share&utm_medium=member_desktop&rcm=ACoAAA6jGs8B6Xsuwj5ptm3WhFPuUawh0SpUyvE
❤4
اونقدر وضع خراب و غیر قابل پیشبینی هست که تمام سیستمهای آنلاین رو مجبوریم برای توسعه به صورت آفلاین بومی سازی کنیم تا در مواقع قطعی کامل اینترنت بتونیم کارمون رو انجام بدیم و متوقف نشیم.
امیدوارم هرجا هستید تنتون سلامت و روحتون در آرامش باشه، با این حجم از استرس و فشار و رنج، هنوز هم احتمالا یه عده فکر میکنن ما داریم زیادی غر میزنیم و اوضاع خوبه!
بعضی ها با چک و لگد هم بیدار نمیشن! اصلا مردن! فقط روی زمین راه میرن و خبر ندارن که خیلی وقته مردن و طعمی از زندگی رو نچشیدن و احتمالا اون طعم خوش زندگی رو برا فرزندانشون هم نمیخوان.
ولی خیلی از ماها چشیدیم و میدونیم که طعم خوش زندگی چیه و دوست داشتیم برای فرزندانمون هم اون حس وجود داشته باشه. امیدوارم خداوند مارو با مردگان و کسانی که چشمون کور و گوششون کر شده محشور نکنه.
شرمنده دیگه واقعا برای اینکه بتونم دوباره پست بذارم باید این حرفارو میزدم.
#اعصابمون_خورده
امیدوارم هرجا هستید تنتون سلامت و روحتون در آرامش باشه، با این حجم از استرس و فشار و رنج، هنوز هم احتمالا یه عده فکر میکنن ما داریم زیادی غر میزنیم و اوضاع خوبه!
بعضی ها با چک و لگد هم بیدار نمیشن! اصلا مردن! فقط روی زمین راه میرن و خبر ندارن که خیلی وقته مردن و طعمی از زندگی رو نچشیدن و احتمالا اون طعم خوش زندگی رو برا فرزندانشون هم نمیخوان.
ولی خیلی از ماها چشیدیم و میدونیم که طعم خوش زندگی چیه و دوست داشتیم برای فرزندانمون هم اون حس وجود داشته باشه. امیدوارم خداوند مارو با مردگان و کسانی که چشمون کور و گوششون کر شده محشور نکنه.
شرمنده دیگه واقعا برای اینکه بتونم دوباره پست بذارم باید این حرفارو میزدم.
#اعصابمون_خورده
❤3🤣1
Forwarded from Mahi in Tech
👀 Pipeline Pattern در CSharp، وقتی متد Handleت پر از if-else و مسئولیتهای مختلف میشه.
سناریوی واقعی:
داری یک عملیات ثبت سفارش مینویسی. باید اعتبارسنجی کنی، موجودی چک کنی، تخفیف حساب کنی، توی دیتابیس ذخیره کنی، نوتیفیکیشن بفرستی و لاگ بگیری.
اگر همه این کارها رو توی یه متد طولانی بنویسی، بعد از چند ماه دیگه هیچکس جرأت تغییرش رو نداره. تستش هم که دیگه کابوسه.
☑️ راهحل ساده: Pipeline Pattern
هر مرحله رو یه کلاس مستقل میکنیم. یک Context داریم که هم Request و هم Result رو داخلش نگه میداره و با پراپرتی HasError جریان رو کنترل میکنه. Stateهای مشترک رو هم میتونیم توی همین Context نگه داریم.
⚙️ پیادهسازی و استفادهش رو هم توی تصاویر بالا گذاشتم.
هر مرحله اطلاعات مورد نیازش رو از Context میخونه، Result رو پر یا بهروزرسانی میکنه و در صورت نیاز HasError رو true میکنه. اگر جایی HasError صحیح بشه، باقی مراحل اجرا نمیشن.
مزایای این روش:
- هر کلاس فقط یک کار مشخص انجام میده
- اضافه کردن مرحلهی جدید فقط یه کلاس جدید + یه AddStep
- تست هر مرحله بهصورت جداگانه راحتتره
- کد بیزینس اصلی تمیز میمونه
البته که این فقط یک پیادهسازی ساده بود و بهروشهای مختلفی میشه این پترن رو اجرایی کرد.
سناریوی واقعی:
داری یک عملیات ثبت سفارش مینویسی. باید اعتبارسنجی کنی، موجودی چک کنی، تخفیف حساب کنی، توی دیتابیس ذخیره کنی، نوتیفیکیشن بفرستی و لاگ بگیری.
اگر همه این کارها رو توی یه متد طولانی بنویسی، بعد از چند ماه دیگه هیچکس جرأت تغییرش رو نداره. تستش هم که دیگه کابوسه.
☑️ راهحل ساده: Pipeline Pattern
هر مرحله رو یه کلاس مستقل میکنیم. یک Context داریم که هم Request و هم Result رو داخلش نگه میداره و با پراپرتی HasError جریان رو کنترل میکنه. Stateهای مشترک رو هم میتونیم توی همین Context نگه داریم.
هر مرحله اطلاعات مورد نیازش رو از Context میخونه، Result رو پر یا بهروزرسانی میکنه و در صورت نیاز HasError رو true میکنه. اگر جایی HasError صحیح بشه، باقی مراحل اجرا نمیشن.
مزایای این روش:
- هر کلاس فقط یک کار مشخص انجام میده
- اضافه کردن مرحلهی جدید فقط یه کلاس جدید + یه AddStep
- تست هر مرحله بهصورت جداگانه راحتتره
- کد بیزینس اصلی تمیز میمونه
البته که این فقط یک پیادهسازی ساده بود و بهروشهای مختلفی میشه این پترن رو اجرایی کرد.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👎2🤔1
از سرورها و فایلها و هرچی که دم دست دارید بکاپ تهیه کنید، به زودی اوضاع وخیم میشه، هر چیزی که فکر میکنید باید ازش پشتیبان تهیه کنید همین امروز وقتشه.
بدونید پیش از این بهتون خبر دادم.
ان شالله که هرچی هست خیره و از این مسیر سخت عبور می کنیم.
تا درودی دیگر بدرود ❤️.
بدونید پیش از این بهتون خبر دادم.
ان شالله که هرچی هست خیره و از این مسیر سخت عبور می کنیم.
تا درودی دیگر بدرود ❤️.
❤5👍1👀1
سلام، دلم براتون تنگ شده بود، امیدوارم حال همتون خوب باشه، انشالله به زودی نت پایدار بشه و دوباره بتونیم ادامه بدیم🌹♥️
❤7👌1