Top Layout Campaign banner

تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

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


۱۵ اردیبهشت ۱۴۰۵

خلاصه کنید:

openaigeminiperplexity

وقتی دسترسی به اینترنت ناپایدار می‌شود، اولین چیزی که از کار می‌افتد فقط یک سایت یا API نیست؛ بلکه زنجیره‌ای از ابزارهایی است که روزانه به آن‌ها تکیه کرده‌ایم. از نصب یک پکیج ساده تا ارتباط با سرویس‌های خارجی، همه چیز به پایداری اینترنت وابسته است.

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

در چنین شرایطی، مسئله اصلی این است که چطور می‌شود سیستم‌هایی ساخت که در این اختلال‌ها متوقف نشوند؛ یعنی وابستگی‌ها را طوری مدیریت کرد که پروژه به اینترنت بین‌الملل گره نخورده باشد.

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

در این مقاله، به راهکارهایی برای توسعه در شرایط “نت ملی” می‌پردازیم؛ راهکارهایی که به حفظ جریان توسعه و افزایش پایداری پروژه‌ها کمک می‌کنند.

در ادامه خواهید خواند:

  • چرا در قطعی اینترنت خارجی پروژه‌ها از کار می‌افتند؟
  • در زمان قطعی اینترنت چه کارهایی می‌توان انجام داد؟
  • جمع بندی
  • سوالات متداول

چرا در قطعی اینترنت خارجی پروژه‌ها از کار می‌افتند؟

مشکل معمولاً از بخش‌هایی شروع می‌شود که در حالت عادی دیده نمی‌شوند:

  • CDNهایی که فایل‌های استاتیک را لود می‌کنند
  • APIهایی که به‌صورت روزمره به آن‌ها درخواست می‌زنیم
  • پکیج‌هایی که از رجیستری‌های خارجی نصب می‌شوند
  • سرویس‌های SaaS که پشت صحنه استفاده می‌کنیم

تا وقتی اینترنت پایدار است، این وابستگی‌ها مشکلی ایجاد نمی‌کنند؛ اما با قطع اینترنت خارجی، همین نقاط به گلوگاه اصلی تبدیل می‌شوند.

در زمان قطعی اینترنت چه کارهایی می‌توان انجام داد؟

اصل مهم در این شرایط، کاهش وابستگی مستقیم به اینترنت بین‌الملل است. این کار معمولاً با چند رویکرد ساده انجام می‌شود:

استفاده از mirrorهای داخلی

برای ابزارهایی مثل npm، pip، composer و Docker، استفاده از mirrorهای داخلی کمک می‌کند فرآیند نصب و build بدون اتصال مستقیم به منابع خارجی ادامه پیدا کند.

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

این کار باعث می‌شود:

  • نصب پکیج‌ها بدون اینترنت پایدار هم انجام شود
  • سرعت دانلود بیشتر شود
  • فرآیند build قابل پیش‌بینی‌تر شود
  • وابستگی به registryهای خارجی کمتر شود
استفاده از mirror های داخلی

در برخی زیرساخت‌های داخلی مثل لیارا، این موضوع با ارائه mirrorهای آماده برای ابزارهای پرکاربرد تا حد زیادی پوشش داده شده و توسعه در شرایط محدود را ساده‌تر می‌کند.

دسترسی به مستندات در سایت های داخلی

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

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

نامآدرس
برنامه آماده DevDocs لیاراhttps://liara.ir/one-click-apps/devdocs
مرکز مستندات وزیر وبhttps://c.vazirweb.ir/docs/index.html
مستندات لیاراhttps://docs.liara.ir
مستندات رسمیhttps://thealibigdeli.ir/official-docs

هاستینگ و زیرساخت داخلی

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

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

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

در این حالت معمولاً از موارد زیر استفاده می‌شود:

  • سرور یا VPS داخلی
  • دیتابیس مدیریت‌شده
  • Object Storage داخلی
  • DNS و CDN داخلی

این مدل کمک می‌کند بخش زیادی از سرویس‌ها مستقل از اینترنت بین‌الملل کار کنند.

زیرساخت‌های داخلی و سرویس‌ها

نوع سرویسکاربردلینک
هاست ابری مدیریت شده (PaaS) لیارااجرای اپلیکیشن‌هاhttps://liara.ir/products/cloud-host
دیتابیس ابری مدیریت شده (DBaaS) لیارامدیریت دیتابیسhttps://liara.ir/products/cloud-database
سرور مجازی ابری (IaaS) لیارازیرساخت اختصاصیhttps://liara.ir/products/cloud-server
فضای ذخیره‌سازی ابری (Object Storage) لیاراذخیره فایل‌هاhttps://liara.ir/products/object-storage
برنامه‌های یک کلیکی (SaaS) لیاراhttps://liara.ir/one-click-apps
DNSمدیریت دامنهhttps://liara.ir/products/dns

دسترسی به ابزارهای توسعه و ریپازیتوری‌ها

در بعضی شرایط برای مدیریت کد، استفاده از ابزارهایی مثل GitHub یا GitLab باعث می‌شود تیم‌ها همچنان بتوانند روی سورس‌کدها کار کنند و جریان توسعه متوقف نشود.

در کنار آن، در بعضی بازه‌ها، دسترسی به سرویس‌هایی مثل Vercel و Next.js و SourceForge و Let’s Encrypt برقرار بوده و همین موضوع کمک کرده بخش‌هایی از فرآیند توسعه مثل deploy و مدیریت SSL بدون توقف ادامه پیدا کند.

مدیریت فایل‌های استاتیک و CDN

فایل‌های استاتیک معمولاً بیشترین مشکل را در زمان محدودیت اینترنت ایجاد می‌کنند.
در این شرایط، استفاده از فضای ذخیره‌سازی ابری (Object Storage) کمک می‌کند فایل‌ها داخل زیرساخت داخلی نگهداری شوند و از آنجا سرویس‌دهی شوند.

این کار باعث می‌شود وابستگی به CDNهای خارجی کمتر شده و UI و تجربه کاربری حتی در شرایط اختلال هم حفظ شود.

وابستگی کمتر به سرویس‌های خارجی در توسعه نرم‌افزار

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

سرویس‌هایی مثل APIهای خارجی، SaaSها یا سرویس‌های third-party معمولاً نقطه شکست سیستم هستند.

در این شرایط بهتر است:

  • سرویس‌های حیاتی self-host شوند
  • برای سرویس‌های خارجی fallback در نظر گرفته شود
  • داده‌های پرمصرف cache شوند

جمع بندی

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

در چنین سناریوهایی، استفاده از زیرساخت‌های داخلی و سرویس‌هایی مثل هاست، دیتابیس و ذخیره‌سازی ابری، کمک می‌کند سیستم حتی در شرایط محدود هم پایدار باقی بماند.

سوالات متداول

۱. در زمان قطعی اینترنت خارجی برنامه‌نویس‌ها چه کار می‌کنند؟

معمولاً وابستگی‌ها را کاهش می‌دهند و از mirrorهای داخلی، cache و سرویس‌های self-hosted استفاده می‌کنند تا فرآیند توسعه ادامه پیدا کند.

۲. چرا پروژه‌ها در شرایط نت ملی دچار مشکل می‌شوند؟

چون ابزارهای توسعه مثل npm، Docker، APIها و CDNها به اینترنت خارجی وابسته‌اند و با قطع آن‌ها، فرآیند build و deploy مختل می‌شود.

۳. mirror داخلی چیست و چه کمکی در توسعه می‌کند؟

mirror داخلی نسخه کش‌شده‌ای از پکیج‌ها و ایمیج‌هاست که بدون اتصال مستقیم به منابع خارجی استفاده می‌شود و باعث ادامه روند توسعه در شرایط محدود می‌شود.

۴. آیا می‌توان بدون اینترنت خارجی هم توسعه نرم‌افزار انجام داد؟

بله، اما فقط در صورتی که وابستگی‌ها از قبل cache یا mirror شده باشند و سرویس‌های حیاتی روی زیرساخت داخلی قرار گرفته باشند.

۵. چه سرویس‌هایی بیشتر تحت تاثیر قطعی اینترنت هستند؟

CDNها، APIهای خارجی، registryهای پکیج (مثل npm و pip) و سرویس‌های SaaS بیشترین وابستگی را به اینترنت خارجی دارند.