برنامه نویسی

من میکروسرویس را دوست ندارم ، و به همین دلیل است

سلام به همه! من hưng phạm هستم ، یک توسعه دهنده پس زمینه که یک بار بود وسواس با استفاده از میکروسرویس – تا زمانی که مجبور شدم خودم آنها را بسازم و آنها را حفظ کنم. اکنون ، بعد از کشتی های شبانه روز با سیاهههای مربوط به 4-5 خدمات مختلف ، من چیزی را فهمیدم: میکروسرویس ها دیگر همان جذابیت پرشور را که قبلاً انجام داده اند ، ندارند. چرا؟ بگذارید داستان خود را به تفصیل به اشتراک بگذارم ، امیدوارم که این یک دیدگاه واقع بینانه تر در مورد خدمات میکروسرویس باشد.


1. در آغاز – خدمات میکروسروس مانند “گریل مقدس” به نظر می رسید

وقتی برای اولین بار میکروسروس ها را کشف کردم ، احساس فوق العاده ای داشت هیجان انگیزبشر اعتیاد به مواد مخدره ، مطالعات موردی از بازیکنان بزرگی مانند Netflix ، Amazon ، Uber و Google من را تقریباً وسواس کرد:

  • “برنامه خود را به قسمت های کوچکی که می توانند به طور مستقل توسعه یافته و مستقر شوند ، همانطور که می خواهید ، بشکنید!”
  • “هر سرویس را به طور جداگانه مقیاس کنید – نیازی به مقیاس کل برنامه نفخ نیست!”
  • “اگر شما در حال انجام خدمات میکروسرویس هستید ، عقب می افتید. این آینده توسعه نرم افزار است!”

من مستقیماً به Docker ، Kubernetes ، Mesh Service ، اتوماسیون CI/CD ، API Gateway … لیست چیزهایی که برای یادگیری بی پایان بود – بیشتر از مهلت های واقعی پروژه! من فکر کردم که یک فصل کاملاً جدید را برای حرفه باطن خود باز می کنم.

شرح تصویر


2. اما واقعیت آنقدر رویایی نبود

هنگامی که من بالاخره برخی از پروژه های تیمم را “خرد کردم” – تیم کوچک ما فقط 4-5 DEVS داشت – فهمیدم که میکروسرویس ها هستند نه فقط در مورد تقسیم کد. این یک وب پیچیده است که تقریباً مرا دیوانه کرد:

  • تأخیر و زمان بندی شبکه: اگر یک سرویس واحد کند باشد ، کل سیستم می تواند مانند یک خط Dominos خراب شود. یک درخواست به ظاهر ساده ممکن است از ده ها سرویس عبور کند – زمان و شکست های جزئی روتین شد.
  • مدیریت استقرار پیچیده: هر سرویس خط لوله CI/CD خاص خود را داشت ، پیکربندی های خاص خود ، نسخه های خاص خود را. استقرار دیگر فقط یک کلیک نبودند – آنها به یک کمپین تبدیل شدند.
  • سردردهای سازگاری داده: معاملات ساده تری وجود ندارد. اکنون ما باید در مورد قوام نهایی ، الگوهای پیچیده مانند حماسه ، ارکستر (کاموندا ، موقتی …) فکر کنیم – فقط شنیدن این کلمات باعث شد که من بخواهم تسلیم شوم.
  • سیاهههای مربوط به اشکال زدایی کابوس بودند: هنگامی که مشکلات تولید به وجود آمد ، مجبور شدم از طریق چندین سرویس از طریق خدمات مختلف حفر کنم و درخواست ها را در سیستم ها ردیابی کنم. احساس کردم شرلوک هولمز در تاریکی گیر می کند!

3. چیزهایی که میکروسرویس از تیم کوچک ما “دزدید”

برای تیم کوچک ما ، فهمیدم که میکروسرویس ها چیزهای ارزشمندی را از ما سرقت می کنند:

  1. تمرکز:
  • یکپارچه: یک repo ، یک پایگاه کد ، همه با هم کار می کنند – برای برقراری ارتباط ، آسان برای درک تصویر بزرگ.
  • MicroService: هرکسی که در خدمت خود قرار می گیرد ، فقط از طریق API صحبت می کند و در تیم سیلو ایجاد می کند.
  1. سرعت توسعه اولیه:
  • یکپارچه: یک بار مستقر ، یک بار بازپرداخت ، تغییرات کوچک به سرعت زنده شد.
  • MicroService: استقرار در خدمات پراکنده ، پیکربندی در همه جا ، بازپرداخت ها پیچیده تر بودند و خیلی بیشتر طول کشید.
  1. شادی از انتشار ویژگی ها:
  • Monolith: یک ویژگی را بلافاصله منتشر کنید ، بازخورد فوری را از کاربران دریافت کنید.
  • میکروسرویس ها: برای جلوگیری از شکستن API ها – سرسخت و آهسته ، با دقت هماهنگ شوید.

4. اما میکروسروس ها شرور نیستند

من انکار نمی کنم که میکروسرویس دارای برخی است واقعی نقاط قوت:

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

5. بنابراین چه زمانی باید از میکروسرویس استفاده کنید؟

من فکر می کنم میکروسرویس فقط وقتی می درخشد:

  • پروژه شما دارای یک تیم بزرگ پس زمینه (10+ devs) ، بنابراین می توانید بر اساس دامنه تقسیم شوید.
  • زیرساخت شما است به اندازه کافی بالغ (اتوماسیون CI/CD ، مشاهدات عالی – راهپیمایی ، ردیابی ، معیارها …) ، بنابراین استقرار مانند علم موشک نیست.
  • برنامه شما دامنه های واضح و جداگانه ای دارد – مانند پرداخت ها ، مدیریت کاربر ، تدارکات ، هر یک تقریباً مستقل عمل می کنند.
  • ترافیک شما بسیار زیاد است ، و شما واقعاً نیاز دارید اجزای خاص مقیاس برای صرفه جویی در هزینه ها و تقویت عملکرد.

6. و هنگامی که احتمالاً نباید “فانتزی بازی کنید”

اگر در یکی از این شرایط هستید ، دو بار قبل از پرش به میکروسرویس فکر کنید:

  • تیم کوچک (3-5 devs) ، غرق شدن در عقب نشینی با تن ویژگی های ساخت.
  • کاربرد ساده فقط با چند ماژول اصلی ، نیازی به مقیاس بندی پیچیده نیست.
  • هیچ تجربه ای با CI/CD یا DevOps – خدمات میکروسروس شما را وادار به یادگیری DevOps می کند.
  • مهلت های تنگ (مانند 1 ماه برای راه اندازی) به جای یک سال برای رشد پایدار.

7. نتیجه گیری: من از میکروسرویس متنفرم-من فقط “دنبال کردن اعتیاد به مواد مخدره” را دوست ندارم

خدمات میکروسرویس شر نیست. آنها “به طور خودکار عالی” نیستند. من فقط دوست ندارم وقتی تیم های کوچک روند کورکورانه را تعقیب می کنند و خود را با پیچیدگی های غیر ضروری بار می کنند.

برای من ، مهمترین چیز این است:

  • مشکل واقعی خود را درک کنید
  • معماری را که متناسب با اندازه تیم شما ، ماهیت برنامه شما و پیچیدگی واقعی مورد نیاز شما باشد ، انتخاب کنید.

به طور خلاصه:

  • تیم کوچک ، چند ویژگی ، مهلت های تنگ: یکپارچه پادشاه است.
  • تیم بزرگ ، حوزه های پیچیده ، ترافیک سنگین: میکروسرویس ها ناجی است.

8 و در مورد شما چطور؟

آیا تجربه میکروسرویس بسیار موفق داشته اید؟ یا یک فاجعه کامل؟ من دوست دارم داستانهای شما را بشنوم – بنابراین می توانیم از یکدیگر یاد بگیریم و از تکرار همان اشتباهاتی که انجام دادم جلوگیری کنیم.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا