آیا شما باور دارید که گوگل، متا، اوبر و ایربنب تقریباً کل کد خود را در یک مخزن قرار میدهند؟این روش به عنوان "مونورپو" شناخته میشود.مونورپو در برابر میکروپو. کدام بهتر است؟
چرا شرکتهای مختلف گزینه های مختلفی را انتخاب میکنند؟
آیا شما باور دارید که گوگل، متا، اوبر و ایربنب تقریباً کل کد خود را در یک مخزن قرار میدهند؟
مونورپو مدل جدیدی نیست؛ لینوکس و ویندوز هر دو با استفاده از مونورپو ایجاد شدهاند. برای بهبود قابلیت اطمینان و سرعت ساخت، گوگل ابزارهای داخلی ویژهای را برای مقیاس پذیری سریعتر و استانداردهای کدنویسی سختگیرانهای را برای حفظ سازگاری آن ایجاد کرده است.آمازون و نتفلیکس سفیران اصل فلسفه میکروسرویس هستند.
این رویکرد به طور طبیعی کد سرویس را در مخازن جداگانه جدا میکند. این روش سرعت بیشتری دارد، اما ممکن است پس از آن نقاط درد حاکمیتی را به همراه داشته باشد.
در مونورپو، هر سرویس یک پوشه است و هر پوشه دارای تنظیمات BUILD و کنترل مجوزهای OWNERS است. هر عضو سرویس مسئول پوشه خود است.
از سوی دیگر، در میکروپو، هر سرویس مسئول مخزن خود است و تنظیمات BUILD و مجوزها به طور معمول برای کل مخزن تنظیم میشوند.در مونورپو، وابستگیها در سراسر کدبانک به اشتراک گذاشته میشوند، بدون توجه به کسب و کار شما، بنابراین هنگام بروزرسانی نسخه، هر کدبانک نسخه خود را بهروز میکند.در میکروپو، وابستگیها در هر مخزن کنترل میشوند.
کسب و کارها براساس برنامههای خود تصمیم میگیرند که کی نسخه های خود را بهروز کنند.
مونورپو استانداردی برای بررسی پذیرش دارد. فرایند بررسی کد گوگل به عنوان یک استاندارد بالا معروف است، که اطمینان از استاندارد کیفیت هماهنگ برای مونورپو را به صورت یکپارچه برای تمام کسب و کارها فراهم میکند.
میکرو ریپو میتواند یا استاندارد خودش را تعیین کند و یا با بهکارگیری بهترین شیوهها، استاندارد اشتراکی را پذیرفته و اجرا کند. این میتواند سرعت رشد بیشتری برای کسبوکار فراهم کند، اما کیفیت کد ممکن است کمی متفاوت باشد.مهندسان گوگل Bazel و Meta Buck را ساختند.
ابزارهای دیگری نیز مانند Nix، Lerna و غیره در دسترس هستند.برای سالها، میکرو ریپو از ابزارهای پشتیبانی شده بیشتری برخوردار بوده است، از جمله Maven و Gradle برای Java، NPM برای NodeJS و CMake برای C/C++.