Forwarded from tech-afternoon (Amin Mesbahi)
از اونجایی که تعداد تیمهایی که تلاش کردن/میکنن تا DDD رو پیادهسازی کنن و یا محصول مبتنی بر معماری مایکروسرویس توسعه بدن، ولی در میانهی راه متوجه دشواریها، مشکلات و یا اشتباهات متعدد طراحی و پیادهسازی میشن، کم نیست؛ خوبه تا پرسش رو مرور کنیم، تا اگر موضوع مورد اقبالی بود بیشتر در موردش گپ بزنیم.
تا حالا به خواستگاه و پیشینهی خالقین DDD یا Microservice توجه داشتید؟ منظورم «خواستگاه نیازهایی» است که به خاطر برطرف شدن اون نیازها، افرادی با «پیشینه و تجربهی مشخص در تعامل با نوع خاصی از مسائل و سازمانها» شروع به طراحی راهکار یا پاسخ برای اون نیازها در اون سازمانها کردن؛ و بعدتر این راهکارها در سازمانهایی با چه مختصات و ابعادی، توسط چه افرادی توسعه و تکامل پیدا کرد تا امروز به انضمام این تعداد کتاب و مقاله و ویدیو و کنفرانس، در اختیار ما باشه؟!
بیاید با هم چند تا سوال کاریکاتوریزه رو مرور کنیم:
۱: از نظر امکانات در دسترس: آیا یک پزشک حاذق که تمام عمرش در پیشرفتهترین بیمارستانهای ژاپن یا سوییس تحصیل و کسبتجربه کرده؛ به صورت مستقیم (و طبیعتا بدون تغییر و سازگارپذیری) میتونه بره در یکی از مناطق محروم اتیوپی شروع به درمان کنه؟
۲: از نظر مقیاسها: آیا مرسومه که از ابزارآلات تعمیر ماشینهای معدن در کارگاه ساعتسازی استفاده کنن یا برعکس؟
هدفم از طرح این دو سوال، اینه که خیلی از مشکلاتی که میبینیم به خاطر یک عدم سازگاری یا تناسب بین نیاز، شرایط، و راهکاره! توجه به پیشنیازهای محیطی، و بستری که یک معماری میتونه توش به شکل صحیح پیاده بشه، یا کمتر مورد توجه قرار میگیره یا با خطای ادراکی روبرو میشه و نتیجهاش یا شکسته، یا دردسر، یا موجود عجیبالخلقهای که کسی قادر به درکش نیست!
🔑 چاره کار چیه؟
» اگر دنبال یک مسیر قابل تعمیم به عام باشیم، راه رو به خطا رفتیم؛ عملا عیار یک architect یا software engineer سنیور یا بالاتر (بسته به سایز سازمان و محصول) در میزان موفقیت و ظرافتهای طراحی مسیر، راهکار و معماری مشخص میشه. قرار هم نبوده و نیست، همه یک میزان موفقیت کسب کنن. خیلیها هم شکست میخورن یا پیروزینمایی میکنن.
(موضوعاتی مثل Strategic DDD یا Modular Monolith/Modulith، شناسایی پیشنیازها، فازبندی تغییرات و پیادهسازی، امکانپذیری transformation و... میتونن محور این سری از مطالب باشن)
👨🏼🦳 مارتین فالر: توی مقاله معروف "Microservice Prerequisites" سه تا پیشنیاز اساسی رو مطرح میکند:
قابلیت Rapid provisioning: قابلیت راهاندازی سریع infrastructure
قابلیت Basic monitoring: نظارت و observability
قابلیت Rapid application deployment: استقرار سریع نرمافزار
«در صورت ادامه بحث، چند مورد دیگه رو هم من بنا به تجربه اضافه خواهم کرد»
👨🏼🦳 کریس ریچاردسون توی کتاب "Microservices Patterns" بحث pattern-based approach رو ارائه میکنه وبارها تأکید داره مایکروسرویس «نسخهی واحد برای همه» نیست و باید دید کِی و چرا سراغش بریم؛ حتی «دلایل نادرست برای پذیرش مایکروسرویس» رو هم مستند کرده.
👨🏼🦳 استفان تیلکوف توی مقاله «Don’t start with a monolith» میگه وقتی هدف نهایی شما معماریِ مایکروسرویس باشه (بهویژه برای سیستمهای بزرگ)، «شروع با مونولیت» غالباً انتخاب درستی نیست و باید از اول به مرزبندیهای سختگیرانه و سیستمهای مستقل فکر کرد. بعدتر تیلکوف الگوی Self-Contained Systems (SCS) رو هم بهعنوان رویکرد همخانواده و کماصطکاکتر معرفی میکنه. ۴ سال بعدش، سم نیومن میاد روی روشها و الگوهای تکاملی برای شکستن مونولیت تمرکز میکنه (نه نفی یا اثبات مطلق هر کدوم)، و راهکارهای عملی برای مهاجرت تدریجی ارائه میده. کتاب معروف نیومن یعنی "Monolith to Microservices" عملاً پاسخ عملیِ «چگونه از مونولیت به مایکروسرویس برسیم؟» حساب میشه (اینو گفتم که بگم بین علما و بزرگان هم تفاوت نظر وجود داره 😁 خصوصا در مورد فالر و ریچاردسون؛ چون فالر استراتژی «اول مونولیت» برای شروع کارهای جدید رو طرح میکنه و میگه با این نکته که حتی اگه بعداً احتمالاً به مایکروسرویس برسید! این دیدگاه روبهروی موضع تیلکوف قرار میگیره و نشون میده اختلافنظر معنادار بین علما جدیه! )
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🥴2
Forwarded from صادق سپندارند
جریانهای کاریِ معیوب و چگونگی درست کردنشان
اگر صبحها احساس میکنید کار از لحظهی اول «گیر» میکند یا هر پیام کاری «فوری»تر از قبلی میشود و یا هر جلسه برای حل جلسهی قبل است احتمالاً مسئله شما تنبلی یا چیزهایی از این جنس نیست؛ «جریان کار»تان خراب است. خبر خوب؟ درستکردنش پیچیده و گران نیست؛ فقط نیاز به نگاه کردنِ درست دارد.
کتابها و تجربهها یک نکتهی طلایی میگویند: بروید و ببینید کار واقعاً چگونه انجام میشود. پشت داشبوردها همهچیز مرتب است، اما کفِ کار، گرههای کوچک، کوه میشوند. یک استاد مدیریت تعریف میکرد که چرا عملهای پیوند دیر شروع میشدند؛ همه دنبال «دکتر مقصر» بودند، اما با کمی مشاهده معلوم شد گره اصلی «پارکینگ» است! یک اصلاح ساده، کل برنامه را روان کرد.
مشکل رایج بعدی، برچسب “فوری” است. وقتی هر چیزی «اولویت یک» میشود، هیچچیز اولویت ندارد. راهحل: یک صفِ مشترک و شفاف بسازید؛ کارها را رتبهبندی کنید و قبل از شروع مورد بعدی، مورد فعلی را ببندید. یک بانک بینالمللی با همین کارو یک جلسهی هفتگی که همهی ذینفعان در آن روی یک فهرست مشترک تصمیم میگرفتند—میانگینِ زمانِ تأیید پروژهها را از ۱۲۰ روز به ۲۰ روز رساند.
نکتهی غیر شهودی اما حیاتی: استفادهی ۱۰۰٪ از آدمها، خروجی را بیشتر نمیکند؛ گلوگاه میسازد. کمی فضای خالی برای فکر و اصلاح بگذارید. هر جا حس کردید تیم برای عبور از یک پیچ، «میانبُر» میزند، بدانید سیستم دارد سیگنال میدهد: فرایند را ترمیم کنید، نه آدمها را فرسوده.
برای راهانداختنِ جریان، از همین چند حرکت ساده شروع کنید:
•تعریف «تمامشدن» را برای هر کار بنویسید (چه تحویلی، با چه معیار).
•کارهای همزمان را محدود کنید؛ بهجای ۱۰ کار نیمهتمام، ۳ کار کامل.
•تابلوی دیداری بزنید (فیزیکی یا دیجیتال): «در صف / در حال انجام / تمام».
•جلسهی هفتگیِ یکساعتهی بینوظیفهای برگزار کنید؛ یک فهرست مشترک، تصمیمِ واحد.
•بازخوردِ کفِ کار بگیرید؛ اگر از آنچه میبینید خجالتزده نمیشوید، کافی دقیق نشدهاید.
•اندازه بگیرید: زمانِ انتظار، زمانِ انجام، و نرخ بازگشت کار برای اصلاح. فقط همین سه تا.
فلسفهاش ساده است: کارخانهی خوب، «قهرمان» ندارد؛ جریانِ خوب دارد. هر جا کار گیر کرد، بهجای فشار بیشتر، اصطکاک را کم کنید. با شفافسازی، محدودکردن کارِ در جریان، و دیدن واقعیتِ کفِ کار، شلوغیِ بیحاصل به ثباتِ سودمند بدل میشود و ناگهان میبینید بدون اضافهکاری، خروجی بیشتر شده است
#مدیریت #رهبری #جریان_کار #گلوگاه #بهبود_فرایند #اکونومیست #سپندارند
اگر صبحها احساس میکنید کار از لحظهی اول «گیر» میکند یا هر پیام کاری «فوری»تر از قبلی میشود و یا هر جلسه برای حل جلسهی قبل است احتمالاً مسئله شما تنبلی یا چیزهایی از این جنس نیست؛ «جریان کار»تان خراب است. خبر خوب؟ درستکردنش پیچیده و گران نیست؛ فقط نیاز به نگاه کردنِ درست دارد.
کتابها و تجربهها یک نکتهی طلایی میگویند: بروید و ببینید کار واقعاً چگونه انجام میشود. پشت داشبوردها همهچیز مرتب است، اما کفِ کار، گرههای کوچک، کوه میشوند. یک استاد مدیریت تعریف میکرد که چرا عملهای پیوند دیر شروع میشدند؛ همه دنبال «دکتر مقصر» بودند، اما با کمی مشاهده معلوم شد گره اصلی «پارکینگ» است! یک اصلاح ساده، کل برنامه را روان کرد.
مشکل رایج بعدی، برچسب “فوری” است. وقتی هر چیزی «اولویت یک» میشود، هیچچیز اولویت ندارد. راهحل: یک صفِ مشترک و شفاف بسازید؛ کارها را رتبهبندی کنید و قبل از شروع مورد بعدی، مورد فعلی را ببندید. یک بانک بینالمللی با همین کارو یک جلسهی هفتگی که همهی ذینفعان در آن روی یک فهرست مشترک تصمیم میگرفتند—میانگینِ زمانِ تأیید پروژهها را از ۱۲۰ روز به ۲۰ روز رساند.
نکتهی غیر شهودی اما حیاتی: استفادهی ۱۰۰٪ از آدمها، خروجی را بیشتر نمیکند؛ گلوگاه میسازد. کمی فضای خالی برای فکر و اصلاح بگذارید. هر جا حس کردید تیم برای عبور از یک پیچ، «میانبُر» میزند، بدانید سیستم دارد سیگنال میدهد: فرایند را ترمیم کنید، نه آدمها را فرسوده.
برای راهانداختنِ جریان، از همین چند حرکت ساده شروع کنید:
•تعریف «تمامشدن» را برای هر کار بنویسید (چه تحویلی، با چه معیار).
•کارهای همزمان را محدود کنید؛ بهجای ۱۰ کار نیمهتمام، ۳ کار کامل.
•تابلوی دیداری بزنید (فیزیکی یا دیجیتال): «در صف / در حال انجام / تمام».
•جلسهی هفتگیِ یکساعتهی بینوظیفهای برگزار کنید؛ یک فهرست مشترک، تصمیمِ واحد.
•بازخوردِ کفِ کار بگیرید؛ اگر از آنچه میبینید خجالتزده نمیشوید، کافی دقیق نشدهاید.
•اندازه بگیرید: زمانِ انتظار، زمانِ انجام، و نرخ بازگشت کار برای اصلاح. فقط همین سه تا.
فلسفهاش ساده است: کارخانهی خوب، «قهرمان» ندارد؛ جریانِ خوب دارد. هر جا کار گیر کرد، بهجای فشار بیشتر، اصطکاک را کم کنید. با شفافسازی، محدودکردن کارِ در جریان، و دیدن واقعیتِ کفِ کار، شلوغیِ بیحاصل به ثباتِ سودمند بدل میشود و ناگهان میبینید بدون اضافهکاری، خروجی بیشتر شده است
#مدیریت #رهبری #جریان_کار #گلوگاه #بهبود_فرایند #اکونومیست #سپندارند
👍1🔥1
صادق سپندارند
جریانهای کاریِ معیوب و چگونگی درست کردنشان اگر صبحها احساس میکنید کار از لحظهی اول «گیر» میکند یا هر پیام کاری «فوری»تر از قبلی میشود و یا هر جلسه برای حل جلسهی قبل است احتمالاً مسئله شما تنبلی یا چیزهایی از این جنس نیست؛ «جریان کار»تان خراب است.…
"کارخانهی خوب، قهرمان ندارد؛ جریان خوب دارد."
👍3🔥1