ویرگول
ورودثبت نام
امیرمحمد عمومی | Amir Omumi
امیرمحمد عمومی | Amir Omumiبرنامه‌نویس بک‌اند و علاقه‌مند به DevOps. توسعه نرم‌افزارهای مقیاس‌پذیر و خودکارسازی زیرساخت‌ها مسیر من است. شماره تماس: 09356255053
امیرمحمد عمومی | Amir Omumi
امیرمحمد عمومی | Amir Omumi
خواندن ۳ دقیقه·۱۳ روز پیش

اگر اینترنت قطع شود، Build پروژه شما متوقف می‌شود؟

Nexus
Nexus

فرض کنید Pipeline اجرا شده است.

توسعه‌دهنده کد را Push کرده، Build آغاز شده و همه‌چیز طبق برنامه پیش می‌رود. اما چند دقیقه بعد فرآیند متوقف می‌شود.

نه به خاطر باگ.

نه به خاطر کمبود منابع سرور.

فقط به این دلیل که پروژه نتوانسته یک Package موردنیاز را دانلود کند.

این اتفاق بیشتر از چیزی که فکر می‌کنیم رخ می‌دهد. بسیاری از پروژه‌های امروزی برای دریافت پکیج‌های npm، NuGet، Docker Imageها یا حتی Repositoryهای لینوکس به اینترنت وابسته هستند. در چنین شرایطی هر اختلالی در اینترنت می‌تواند فرآیند توسعه، Build و Deploy را تحت تأثیر قرار دهد.

اما آیا راهی وجود دارد که این وابستگی را کاهش دهیم؟


Nexus چیست؟

Nexus Repository یک Repository Manager است که به شما اجازه می‌دهد پکیج‌ها، Artifactها و Imageهای موردنیاز سازمان را در یک محل متمرکز نگهداری و مدیریت کنید.

به زبان ساده، به جای اینکه هر توسعه‌دهنده، سرور یا Pipeline مستقیماً به اینترنت متصل شود، همه درخواست‌ها از طریق Nexus عبور می‌کنند.

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

اما قبل از اینکه سراغ مزایای Nexus برویم، بهتر است با نحوه نگهداری پکیج‌ها در آن آشنا شویم.


Repositoryها در Nexus چگونه کار می‌کنند؟

در Nexus می‌توان Repositoryها را به چند شکل مختلف ایجاد کرد. هر کدام از این Repositoryها کاربرد خاصی دارند و معمولاً در کنار یکدیگر استفاده می‌شوند.

سه نوع Repository که بیشتر از همه استفاده می‌شوند عبارت‌اند از:

  • Hosted Repository

  • Proxy Repository

  • Group Repository


Hosted Repository چیست؟

Hosted Repository محلی است که فایل‌ها و پکیج‌ها مستقیماً داخل خود Nexus ذخیره می‌شوند.

برای مثال فرض کنید تیم شما یک Package اختصاصی NuGet توسعه داده است یا Docker Imageهای داخلی سازمان را تولید می‌کند.

در این حالت می‌توانید آن‌ها را داخل یک Hosted Repository منتشر کنید تا سایر سرویس‌ها و توسعه‌دهندگان از همان مخزن استفاده کنند.

نمونه کاربردها:

  • پکیج‌های اختصاصی NuGet

  • پکیج‌های داخلی npm

  • Docker Imageهای سازمانی

  • فایل‌های Release

  • Artifactهای خروجی Build

در واقع Hosted Repository نقش یک مخزن داخلی برای سازمان را ایفا می‌کند.


Proxy Repository چیست؟

Proxy Repository یکی از مهم‌ترین قابلیت‌های Nexus است.

فرض کنید پروژه شما به یک Package از npm نیاز دارد.

بار اول که درخواست ارسال می‌شود، Nexus پکیج را از اینترنت دریافت می‌کند و در Cache خود ذخیره می‌کند.

از دفعات بعدی همان پکیج مستقیماً از Nexus تحویل داده می‌شود و دیگر نیازی به دانلود مجدد از اینترنت نیست.

مزایای این روش:

  • کاهش مصرف اینترنت

  • افزایش سرعت Build

  • کاهش وابستگی به سرویس‌های خارجی

  • دسترسی به پکیج‌های Cache شده در زمان اختلال اینترنت

برای مخازنی مانند npm، NuGet، Docker Hub و Repositoryهای لینوکس معمولاً از Proxy Repository استفاده می‌شود.


Group Repository چیست؟

در بسیاری از سازمان‌ها چندین Repository مختلف وجود دارد.

برای مثال:

  • یک Hosted Repository

  • چند Proxy Repository

  • چند مخزن اختصاصی دیگر

اگر کاربران مجبور باشند آدرس همه این Repositoryها را جداگانه تنظیم کنند، مدیریت سیستم پیچیده می‌شود.

Group Repository این مشکل را حل می‌کند.

در Group Repository چند Repository مختلف پشت یک آدرس واحد قرار می‌گیرند.

در نتیجه توسعه‌دهنده فقط یک آدرس را در npm، NuGet یا Docker تنظیم می‌کند و Nexus به‌صورت خودکار Repository مناسب را پیدا می‌کند.


Nexus از چه فناوری‌هایی پشتیبانی می‌کند؟

یکی از دلایل محبوبیت Nexus این است که محدود به یک اکوسیستم خاص نیست.

برخی از Repositoryهای قابل پشتیبانی:

  • npm

  • NuGet

  • Docker

  • Maven

  • PyPI

  • APT

  • Yum

  • Raw Repository

به همین دلیل اکثر تیم‌های توسعه نرم‌افزار و DevOps می‌توانند از آن استفاده کنند.


آیا Nexus فقط برای زمان قطعی اینترنت است؟

خیر.

بسیاری از سازمان‌ها حتی با دسترسی کامل به اینترنت نیز از Nexus استفاده می‌کنند.

زیرا Nexus مزایای دیگری هم دارد:

  • افزایش سرعت Build و Deploy

  • مدیریت متمرکز Artifactها

  • کنترل دسترسی کاربران

  • نگهداری نسخه‌های مختلف نرم‌افزارها

  • کاهش وابستگی به سرویس‌های خارجی

  • بهبود امنیت زنجیره تأمین نرم‌افزار

در واقع موضوع فقط «داشتن پکیج‌ها در زمان قطعی اینترنت» نیست؛ بلکه داشتن یک نقطه مرکزی برای مدیریت تمام Artifactهای سازمان است.


جمع‌بندی:

اگر پروژه شما برای دریافت پکیج‌های npm، NuGet، Docker Imageها یا Repositoryهای لینوکس به اینترنت وابسته است، Nexus می‌تواند بخش زیادی از این وابستگی را کاهش دهد.

با استفاده از Hosted Repository، Proxy Repository و Group Repository می‌توان پکیج‌ها را مدیریت، ذخیره و Cache کرد تا تیم توسعه و زیرساخت به منابع موردنیاز خود سریع‌تر و مطمئن‌تر دسترسی داشته باشند.

سؤال مهم این است:

اگر همین الان اینترنت قطع شود، کدام بخش از Pipeline شما از کار می‌افتد؟

قطعی اینترنتrepositoryپکیج
۱
۰
امیرمحمد عمومی | Amir Omumi
امیرمحمد عمومی | Amir Omumi
برنامه‌نویس بک‌اند و علاقه‌مند به DevOps. توسعه نرم‌افزارهای مقیاس‌پذیر و خودکارسازی زیرساخت‌ها مسیر من است. شماره تماس: 09356255053
شاید از این پست‌ها خوشتان بیاید