TGViewer
Learning With M Learning With M @learning_with_m · 2.25K subscribers
Post #157 1.96K

Forwarded from tech-afternoon (Amin Mesbahi)

📱 معماری سلولی چیه، لزوم توجه بهش؛ و چرا slack رفت دنبالش؟

بی‌مقدمه: فصل گرما در پیش است، اخبار گواه اینه که بهبود خاصی در ظرفیت تولید، یا مدیریت توزیع برق کشور اتفاق نیوفتاده، برای اینکه با از دسترس خارج شدن دیتاسنترها، سرویس‌هامون دچار مشکل نشه، بهتره نگاهی به معماری سلولی و تجربه اسلک بندازیم...

توی معماری سلولی سیستم‌های پیچیده به واحدهای مستقل و خودکفا (سلول‌ها) تقسیم می‌شن. هر سلول می‌تونه به تنهایی کار کنه و اگر یک سلول دچار مشکل بشه، بقیه سلول‌ها می‌تونن به کار خودشون ادامه بدن.

❓ مشکل slack از کجا شروع شد؟
یه روز توی اسلک، نمودارهای مانیتورینگ نشون دادن که یکی از Availability Zone (AZ) های AWS در منطقه us-east-1 داره پکت‌های زیادی رو از دست میده. این باعث خطا و کندی سرویس برای کاربرها شده بود.
مشکل اصلی اینجا بود که با وجود اینکه اسلک از چند AZ استفاده می‌کرد، وقتی یک AZ دچار مشکل می‌شد، کل سرویس تحت تأثیر قرار می‌گرفت! خب این اصلاً منطقی نیست! مگه نه اینکه هدف استفاده از چند AZ همین هست که اگه یکی به مشکل خورد، بقیه کار رو پیش ببرن؟

در مورد اسلک، هر AZ تبدیل به یک سلول شد. یعنی مجموعه‌ای از سرویس‌هایی که در یک AZ هستن و می‌تونن به عنوان یک واحد از سرویس خارج بشن یا به سرویس برگردن.

🎯 اسلک چهار هدف اصلی داشت:

- حذف ترافیک از یک AZ در کمتر از ۵ دقیقه (سرعت)
- حذف ترافیک نباید باعث خطای قابل مشاهده برای کاربر بشه
- خروج و بازگشت ترافیک یک AZ باید تدریجی باشه (مثلاً ۱٪ یا ۱۰٪)
- مکانیزم Drain نباید به AZ مشکل‌دار وابسته باشه

🧠 استراتژی‌های پیاده‌سازی در اسلک

*️⃣منزوی‌سازی (Siloing): سرویس‌ها در یک AZ فقط با سرویس‌های همون AZ ارتباط داشته باشن. ساده‌ترین روش، اما برای همه سرویس‌ها امکان‌پذیر نیست.

*️⃣مدیریت سرویس‌های با consistency قوی: سرویس‌هایی مثل Vitess (لایه شاردینگ روی MySQL) نیاز به مدیریت failover دارن.

*️⃣تقسیم‌بندی براساس CAP: سرویس‌ها براساس نیازشون به Consistency یا Availability دسته‌بندی شدن:
🔤سرویس‌های Stateless مثل webapp ها (راحت‌ترین)
🔤سرویس‌های Eventually Consistent مثل Memcache (نسبتاً راحت)
🔤سرویس‌های Strongly Consistent مثل Vitess (سخت‌ترین)


*️⃣کنترل ترافیک با Envoy و xDS: استفاده از traffic weighting برای هدایت تدریجی ترافیک

چرا این بار موفق شدن؟
اسلک قبلاً یک بار تلاش کرده بود این کار رو انجام بده و شکست خورده بود. این بار چند اصل مهم رو رعایت کردن:

- تدریجی بودن (Incrementality): به جای ساخت یک سیستم کاملاً جدید و تغییر یکباره، هر سرویس رو جداگانه و تدریجی تغییر دادن.
- نگاه از پایین به بالا (Bottom-up): با هر تیم سرویس جداگانه کار کردن و راهکار مخصوص اون سرویس رو پیدا کردن.
- به اندازه کافی خوب (Good Enough): پذیرفتن اینکه لازم نیست همه سرویس‌ها یکجا و کامل تغییر کنن.
- رویکرد Roofshot به جای Moonshot: به جای یک حرکت مستقیم و بلندپروازانه، مجموعه‌ای از قدم‌های کوچکتر که در هر مرحله ارزش ایجاد می‌کنه.
- تست‌های منظم: هر هفته یک AZ رو drain می‌کردن و پیشرفت رو اندازه می‌گرفتن.

⛳️ نتایج:

- الان می‌تونن یک AZ رو در ۶۰ ثانیه از سرویس خارج کنن
- هزینه‌های انتقال داده بین AZ کاهش پیدا کرده
- یک مکانیزم blue-green deployment جدید به دست آوردن
- راهکار عمومی برای مقابله با مشکلات محدود به یک AZ دارن

📝 نکته‌های کلیدی برای پروژه‌های زیرساختی بزرگ

*️⃣تدریجی ولی مداوم کار کنید: پروژه‌های بزرگ زیرساختی باید گام به گام پیش برن
*️⃣در نظر بگیرید هر سرویس دلیلی برای وضعیت فعلیش داره: تصور نکنید که افراد دیگه اشتباه کردن
*️⃣ارزش رو در هر مرحله قفل کنید: پروژه باید در هر مرحله ارزش ایجاد کنه، نه فقط در پایان
*️⃣کارآیی رو برای کاهش ریسک فدا کنید: گاهی راه مستقیم، بهترین راه نیست

🔔 اگر سرویسی دارین که مردم بهش وابسته هستن یا با از دسترس خارج شدنش کار مردم می‌خوابه، لطفا قبل از وقوع حادثه، به فکر علاج باشین... تابستان در پیش است و قطعی برق نزدیک. دیتاسنترهای مختلف (ترجیحا پراکندگی شهری/استانی) می‌تونه در کنار معماری سلولی کمک کنه، هم به اعتبار و درآمد سازمان شما و مهم‌تر به کار مردم...

💬 اگر دوست داشتید در موردش صحبت کنیم، حتمن بگید، سوال و پیشنهاد هم مثل همیشه باعث خوشحالی...
  • 👍 11
More from @learning_with_m
  1. Oct 4, 2026قسمت اول از طراحی سیستم ورک فلو انجین - چیزی شبیه به n8n توی این جلسه سعی میکنیم، یه ورک ف…
  2. Oct 3, 2026آندری کارپتی (Andrej Karpathy) یه توییت جالب زده در مورد اینکه با قوی‌تر شدن LLMها، کار اص…
  3. Sep 27, 2026به عنوان یک معلم، یادگیری برای من امیده، به عنوان یک پدر، یادگیری برای من مسیر نجات فرزندم…
  4. Sep 25, 2026این هم خیلی جالب درآورده بود Iranshahr.netlify.app
  5. Sep 24, 2026همینه! به نظرم AI میتونه همه چی بزنه و اینکه 'چی' بزنه نیاز به وقت و زمان داره. این نکته خ…
  6. Sep 22, 2026مارتین فاولر یه مطلب نوشته به اسم «I don't like LLMs». فاولر قبول داره که این ابزارها کار…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →