نگاهی عمیق به معماری Azure Resource Manager (ARM)

نگاهی عمیق به معماری Azure Resource Manager (ARM)

سرفصل موضوعات

تکامل کنترل ابری: چرا معماری اهمیت دارد

محاسبات ابری به طور بنیادی چشم‌انداز فناوری سازمانی را تغییر داده است. سازمان‌ها دیگر موفقیت خود را صرفاً با مرکز داده‌های فیزیکی یا قدرت پردازش خام سخت‌افزارسنجش نمی‌کنند. در عوض، چابکی، مقیاس‌پذیری، حاکمیت (Governance) و امنیت، اکوسیستم دیجیتال مدرن را دیکته می‌کنند. با این حال، مدیریت هزاران منابع ابری مجزا – ماشین‌های مجازی، پایگاه‌های داده، شبکه‌های مجازی و توابع سرورلس (Serverless) – یک چالش عملیاتی عظیم ایجاد می‌کند. بدون یک لایه مدیریتی متمرکز و یکپارچه، محیط‌های ابری به سرعت به هزارتوهای آشفته، پرهزینه و ناامن تبدیل می‌شوند.
ورود Azure Resource Manager که به طور جهانی با نام ARM شناخته می‌شود. به عنوان سرویس استقرار و مدیریت بنیادی برای مایکروسافت آژور، ARM یک لایه مدیریتی سازگار را فراهم می‌کند که شما را قادر می‌سازد منابع را در حساب مایکروسافت آژور خود ایجاد، به‌روزرسانی و حذف کنید. درک معماری ARM صرفاً یک چک‌لیست اداری برای مدیران سیستم نیست؛ بلکه یک مهارت حیاتی برای معماران ابری، مهندسان DevOps و تصمیم‌گیرندگان سازمانی است که می‌خواهند راهکارهای ابری مقاوم، مقیاس‌پذیر و امن بسازند.
برای قدردانی کامل از ظرافت ARM، باید به گذشته و پیشنیار آن نگاه کنیم: مدل استقرار کلاسیک (Classic). در روزهای اولیه مایکروسافت آژور، مدیریت از طریق مدل Azure Service Management (ASM) انجام می‌شد. در ASM، هر منبع به طور مستقل وجود داشت و مدیریت یک اپلیکیشن چندلایه نیازمند ایجاد منابع فردی و دوختن دستی آن‌ها به یکدیگر بود. اگر استقراری در نیمکت راه با شکست مواجه می‌شد، پاکسازی آشفتگی حاصل یک تلاش دستی و مستعد خطا بود. امنیت، دسترسی مبتنی بر نقش و مدیریت چرخه حیات در اجزای مختلف تکه‌تکه شده بود.
ARM با معرفی مفهوم resource groupها و مدل استقرار اعلامی (Declarative)، این پارادایم را متحول کرد. به جای رفتار با اجزای ابری به عنوان موجودیت‌های ایزوله، ARM آن‌ها را در کانتینرهای منطقی گروه‌بندی می‌کند. این تغییر معماری نحوه مفهوم‌سازی زیرساخت ابری توسط سازمان‌ها را تغییر داد و از اسکریپت‌نویسی امری (Imperative) به سمت نیت اعلامی حرکت کرد. با بررسی درون‌و‌برون معماری ARM، می‌توانیم پتانسیل واقعی اتوماسیون ابری، حاکمیت و برتری عملیاتی را آزاد کنیم.

فلسفه هسته: استقرار اعلامی در برابر اسکریپت‌نویسی امری

در قلب Azure Resource Manager یک تغییر فلسفی عمیق نهفته است: گذار از مدیریت امری به مدیریت اعلامی. برای درک اینکه چرا معماری ARM به این شکل ساختار یافته است، باید این تمایز بنیادی را درک کرد.
در یک مدل امری، شما دنباله‌ای از دستورات را ارائه می‌دهید که سیستم قدم به قدم اجرا می‌کند. اگر می‌خواهید خانه‌ای بسازید، یک اسکریپت امری به این شکل است: پی‌ریزی کنید، چارچوب چوبی را بسازید، دیوارپوش‌ها را نصب کنید و دیوارها را رنگ کنید. اگر مرحله‌ای با شکست مواجه شود، یا اگر نیاز داشته باشید بعداً خانه را تغییر دهید، اسکریپت باید حالت‌های خطا را مدیریت کند، شرایط موجود را بررسی کند و بفهمد چه کارهایی از قبل انجام شده است. این رویکرد مستعد انحراف (Drift)، شرایط مسابقه (Race conditions) و اسکریپت‌های استقرار شکننده است.
برعکس، مدل اعلامی کاملاً بر روی حالت نهایی تمرکز دارد. با استفاده از ARM، شما در یک تمپلیت یا فایل پیکربندی اعلام می‌کنید که زیرساخت شما چه شکلی باشد، و Azure Resource Manager می‌فهمد که چگونه آن را محقق کند. با بازگشت به تمثیل خود، شما به سادگی بیان می‌کنید: «من یک خانه سه خوابه، دو حمام با رنگ آبی می‌خواهم.» سیستم محیط فعلی را در برابر حالت نهایی اعلام‌شده ارزیابی می‌کند و فقط تغییرات لازم را اعمال می‌کند. اگر پی‌ریزی از قبل انجام شده باشد، آن مرحله را رد می‌کند. اگر رنگ دیوارها اشتباه باشد، آن‌ها را دوباره رنگ می‌کند.
این رویکرد اعلامی زیربنای کل معماری ARM است و مزایای عمیقی را برای محیط‌های سازمانی به همراه دارد:
  • ایدومپوتنس (Idempotency): می‌توانید همان تمپلیت استقرار را بارها و بارها اجرا کنید و دقیقاً به همان حالت حاصل بدون عوارض جانبی ناخواسته یا ایجاد منابع تکراری دست یابید.
  • سازگاری (Consistency): استقرارها در محیط‌های مختلف – توسعه، استیجینگ و پروداکشن – از دقیقاً همان بلوپرینت‌ها استفاده می‌کنند و انحراف پیکربندی و خطای انسانی را از بین می‌برند.
  • پیش‌بینی‌پذیری (Predictability): قبل از اعمال تغییرات، ARM به شما اجازه می‌دهد استقرار را پیش‌نمایش (Preview) کنید، و به تیم‌های مهندسی وضوح مطلق در مورد آنچه اضافه، تغییر یا حذف خواهد شد، می‌دهد.
  • قابلیت ردیابی (Traceability): هر استقرار به عنوان یک تراکنش ردیابی می‌شود و یک مسیر حسابرسی جامع از اینکه چه کسی چه چیزی را چه زمانی تغییر داده است، ارائه می‌دهد.

کالبدشناسی معماری ARM: Control Plane و Data Plane

برای درک نحوه اجرای دستورات شما توسط مایکروسافت آژور، باید معماری داخلی ARM را کالبدشکافی کنیم. در سطح بالا، مایکروسافت آژور معماری خود را به دو صفحه (Plane) عملیاتی متمایز تقسیم می‌کند: Control Plane و Data Plane. درک مرز و تعامل بین این دو صفحه برای تسلط بر حاکمیت و امنیت مایکروسافت آژور ضروری است.

Control Plane

Control Plane مغز متفکر Azure Resource Manager است. هر زمان که از طریق Azure Portal، Azure CLI، Azure PowerShell یا REST APIها با مایکروسافت آژور تعامل می‌کنید، درخواست شما به Control Plane آرُم برخورد می‌کند. Control Plane مسئول دریافت درخواست‌ها، احراز هویت هویت شما، تأیید دسترسی‌ها و پردازش پیکربندی منابع شما است.
هنگامی که درخواستی برای ایجاد یک ماشین مجازی ارسال می‌کنید، Control Plane متادیتا و ارکستراسیون را مدیریت می‌کند. این بخش تضمین می‌کند که منبع در subscription، resource group و منطقه صحیح وجود دارد. این بخش بررسی می‌کند که آیا شما مجوزهای مناسب را از طریق Azure Role-Based Access Control (RBAC) دارید یا خیر. همچنین هرگونه Azure Policy اعمال‌شده را ارزیابی می‌کند تا از انطباق با استانداردهای حاکمیت شرکتی اطمینان حاصل شود. هنگامی که تمام اعتبارسنجی‌ها با موفقیت انجام شد، Control Plane دستوراتی را به resource provider زیرین ارسال می‌کند تا زیرساخت فیزیکی یا مجازی را پروویژن کند.
نکته مهم این است که Control Plane ترافیک عملیاتی روزمره را در داخل خود منبع مدیریت نمی‌کند. برای مثال، هنگامی که یک Azure SQL Database را با استفاده از یک تمپلیت ARM مستقر می‌کنید، Control Plane نمونه پایگاه داده را پروویژن می‌کند، قوانین فایروال را تنظیم می‌کند و لایه را پیکربندی می‌کند. با این حال، هنگامی که پایگاه داده در حال اجرا است، Control Plane کنار می‌رود.

Data Plane

از سوی دیگر، Data Plane بازوی اجرایی است. این بخش با استفاده واقعی و تعامل با منبع مستقر شده سر و کار دارد. با ادامه مثال Azure SQL Database، Data Plane پرس‌وجهای SQL که در پایگاه داده اجرا می‌کنید، درج سطرها، بازیابی رکوردها و احراز هویت کاربر که به صورت داخلی توسط موتور پایگاه داده مدیریت می‌شود را مدیریت می‌کند.
به همین ترتیب، برای یک Azure Storage Account، Control Plane کانتینر حساب ذخیره‌سازی را ایجاد کرده و کلیدهای دسترسی، قوانین شبکه و تنظیمات رمزگذاری آن را مدیریت می‌کند. Data Plane آپلود کردن بولاب‌ها، دانلود فایل‌ها و خواندن موجودیت‌های جدول را مدیریت می‌کند.
جداسازی Control Plane از Data Plane یک شاهکار در طراحی معماری است. این کار تضمین می‌کند که عملیات مدیریتی عملکرد بارهای کاری در حال اجرا را کاهش ندهد و برعکس، ترافیک داده‌های سنگین باعث مختل شدن صفحه مدیریت نشود. این جداسازی همچنین به مایکروسافت اجازه می‌دهد تا دسترسی‌پذیری بالا و ایزوله‌سازی امنیتی را در مراکز داده جهانی مایکروسافت آژور حفظ کند.

پایپ‌لاین پردازش ARM: سفر یک درخواست

هنگامی که یک استقرار یا درخواست مدیریتی را در مایکروسافت آژور آغاز می‌کنید، سفری بسیار ساختاریافته را در پایپ‌لاین پردازش ARM طی می‌کند. هر درخواست با بررسی دقیق برای اطمینان از امنیت، انطباق و یکپارچگی ساختاری درمان می‌شود. بیایید این سفر را قدم به قدم دنبال کنیم:
  1. احراز هویت (Authentication): لحظه‌ای که یک درخواست به نقطه پایانی مایکروسافت آژور برخورد می‌کند، سیستم باید به یک سوال اساسی پاسخ دهد: «تو کی هستی؟» احراز هویت توسط Microsoft Entra ID (که قبلاً Azure Active Directory نامیده می‌شد) انجام می‌شود. چه یک کاربر انسانی باشید که به پورتال وارد می‌شود و چه یک سرویس پرینسیپال (Service principal) که یک پایپ‌لاین CI/CD خودکار را اجرا می‌کند، اعتبار شما تأیید می‌شود و یک توکن امنیتی صادر می‌شود. این توکن هویت، اطلاعات tenant و ادعاهای امنیتی شما را در بر می‌گیرد.
  2. مجوزدهی (Authorization): دانستن اینکه شما کیستید کافی نیست؛ مایکروسافت آژور باید تعیین کند که چه کارهایی را مجاز به انجام هستید. پس از احراز هویت، درخواست به مرحله مجوزدهی منتقل می‌شود که توسط Azure Role-Based Access Control (RBAC) پشتیبانی می‌شود. ARM نقش‌های اختصاص‌یافته شما را در برابر محدوده (Scope) درخواست بررسی می‌کند. آیا تلاش می‌کنید یک ماشین مجازی را در subscriptionای مستقر کنید که در آن فقط مجوزهای Read دارید؟ اگر چنین است، درخواست رهگیری شده و قبل از اینکه منابعی لمس شوند، با یک خطای مجوز رد می‌شود. اگر نقش Contributor یا Owner را برای resource group هدف داشته باشید، برای ادامه کار پاکسازی می‌شوید.
  3. ارزیابی پالیسی (Policy Evaluation): حتی اگر مجوز مناسبی داشته باشید، سازمان شما ممکن است قوانین حاکمیتی محکمی در مورد نحوه ساخت منابع داشته باشد. اینجاست که Azure Policy وارد عمل می‌شود. ARM درخواست ورودی را در برابر تمام پالیسی‌های قابل اجرا که در سطح management group، subscription یا resource group اختصاص یافته‌اند، ارزیابی می‌کند.
  4. محدودیت‌ها و سهمیه‌های Subscription (Subscription Limits and Quotas): قبل از دست زدن به سخت‌افزار، ARM محدودیت‌ها و سهمیه‌های منابع مرتبط با subscription شما را بررسی می‌کند. آیا subscription شما سهمیه vCPU باقی‌مانده کافی برای پروویژن کردن ماشین‌های مجازی درخواست‌شده را دارد؟ آیا حداکثر تعداد حساب‌های ذخیره‌سازی مجاز در یک منطقه را تجاوز کرده‌اید؟ این نگهبان‌ها از ایجاد منابع فراری جلوگیری می‌کنند و در دسترس بودن منابع را در سراسر فابریک ابری مایکروسافت آژور تضمین می‌کنند.
  5. تعامل با Resource Provider: هنگامی که بررسی‌های احراز هویت، مجوزدهی، پالیسی و سهمیه با موفقیت پاک شدند، ARM درخواست اعلامی شما را به فراخوانی‌های API قابل اقدام ترجمه کرده و آن‌ها را به Resource Provider مناسب تحویل می‌دهد.

ردیاب‌های منابع (Resource Providers): موتورهای مایکروسافت آژور

برای درک اینکه چگونه ARM آرایه وسیعی از سرویس‌های موجود در مایکروسافت آژور را مدیریت می‌کند، باید به دقت به Resource Providers نگاه کنیم. یک Resource Provider سرویسی است که منابع را برای یک سرویس خاص مایکروسافت آژور تأمین و مدیریت می‌کند.
هنگامی که به مایکروسافت آژور نگاه می‌کنید، به عنوان یک پلتفرم منسجم به نظر می‌رسد، اما در زیر کاپوت، یک صورت فلکی عظیم از میکروسرویس‌ها است. هر سرویس دارای Resource Provider اختصاصی خود است. برای مثال:
  • Microsoft.Compute: ماشین‌های مجازی، مجموعه‌های دسترسی (Availability sets) و اسنپ‌شات‌های دیسک را مدیریت می‌کند.
  • Microsoft.Storage: حساب‌های ذخیره‌سازی، بولاب‌ها، اشتراک فایل‌ها و صف‌ها را مدیریت می‌کند.
  • Microsoft.Network: شبکه‌های مجازی، زیرشبکه‌ها، گروه‌های امنیت شبکه و لود بالانسرها را مدیریت می‌کند.
  • Microsoft.Web: برنامه‌های App Service، وب‌اپلیکیشن‌ها و اپلیکیشن‌های فانکشن را مدیریت می‌کند.
هنگامی که ARM یک تمپلیت استقرار حاوی ترکیبی از شبکه‌های مجازی، حساب‌های ذخیره‌سازی و ماشین‌های مجازی را دریافت می‌کند، به عنوان یک ارکستراتور هوشمند عمل می‌کند. این بخش سعی نمی‌کند همه چیز را به طور همزمان به روشی آشفته بسازد. در عوض، وابستگی‌های اعلام‌شده در تمپلیت را تجزیه و تحلیل می‌کند، استقرار را به وظایف مجزا تقسیم می‌کند و آن وظایف را به Resource Providerهای مربوطه در ترتیب زمانی صحیح هدایت می‌کند.
علاوه بر این، Resource Providers مسئول مدیریت عملیات ناهمزمان (Asynchronous) هستند. از آنجا که پروویژنینگ ابری زمان می‌برد – راه‌اندازی سخت‌افزار، پیکربندی هایپروایزرها و تخصیص آدرس‌های IP فوری نیستند – Resource Providers کدهای وضعیت و URIهای ردیابی را به ARM برمی‌گردانند. ARM به طور مداوم ارائه‌دهنده را پولینگ می‌کند تا عملیات با موفقیت به پایان برسد یا با شکست مواجه شود، و از قابلیت اطمینان سرتاسری اطمینان حاصل می‌کند.

زیرساخت به عنوان کد (IaC): تمپلیت‌های ARM و Bicep

یکی از متحول‌کننده‌ترین نتایج معماری ARM، ظهور Infrastructure as Code (IaC) است. از نظر تاریخی، پیکربندی سرورها و شبکه‌ها شامل کلیک کردن دستی از طریق رابط‌های کاربری گرافیکی یا اجرای اسکریپت‌های پیچیده و رویه‌ای بود که نگهداری آن‌ها دشوار بود. ARM یک رویکرد استاندارد و مبتنی بر کد را برای تعریف محیط‌های ابری معرفی کرد.

تمپلیت کلاسیک ARM (JSON)

تمپلیت‌های سنتی ARM در قالب JSON (JavaScript Object Notation) نوشته می‌شوند. یک تمپلیت استاندارد ARM در چند بخش متمایز ساختار یافته است: Schema، ContentVersion، Parameters، Variables، Functions، Resources و Outputs. در حالی که تمپلیت‌های JSON قدرتمند، قوی و قابل خواندن توسط ماشین هستند، اما دارای اشکالات قابل توجهی برای مهندسان انسانی هستند. JSON به طور بدنامی پرحرف است.

تکامل به سمت Bicep

با تشخیص اصطکاک نوشتن JSON خام، مایکروسافت Bicep را معرفی کرد. Bicep یک زبان خاص دامنه (DSL) برای استقرار اعلامی منابع مایکروسافت آژور است. این بخش به عنوان یک لایه انتزاعی شفاف روی تمپلیت‌های ARM عمل می‌کند، به این معنی که در زیر کاپوت، کد Bicep مستقیماً قبل از ارسال به Control Plane مایکروسافت آژور به تمپلیت‌های استاندارد ARM JSON کامپایل می‌شود.
Bicep با ارائه مزایای کلیدی، تجربه توسعه‌دهنده را به طور چشمگیری بهبود می‌بخشد: سینتکس پاک‌تر، مدولارسازی، ایمنی نوع (Type Safety) و پشتیبانی از IntelliSense.

سلسله مراتب Scope: گروه‌های مدیریتی، Subscriptionها و Resource Groupها

Azure Resource Manager یک مدل محدوده سلسله‌مراتبی (Hierarchical scoping model) را فراهم می‌کند که سازمان‌ها را قادر می‌سازد حاکمیت، انطباق و امنیت را در مقیاس مدیریت کنند. سلسله مراتب Scope آرُم شامل چهار سطح متمایز است:
  1. Management Groups: در بالای سلسله مراتب قرار دارند. گروه‌های مدیریتی به شما کمک می‌کنند دسترسی، پالیسی و انطباق را در چندین subscription مایکروسافت آژور مدیریت کنید.
  2. Subscriptions: در زیر گروه‌های مدیریتی قرار دارند. یک subscription واحد منطقی از سرویس‌های مایکروسافت آژور است که به یک حساب مایکروسافت آژور متصل است. این بخش به عنوان یک مرز مالی برای صورت‌حساب و یک مرز امنیتی عمل می‌کند.
  3. Resource Groups: یک واحد سازمانی بنیادی در معماری ARM است. این یک کانتینر منطقی است که منابع مرتبط را برای یک راهکار مایکروسافت آژور نگه می‌دارد.
  4. Resources: در پایه سلسله مراتب، منابع فردی خودشان قرار دارند – ماشین‌های مجازی، پایگاه‌های داده SQL، حساب‌های ذخیره‌سازی و اپلیکیشن‌های فانکشن.

حاکمیت، امنیت و انطباق در معماری ARM

پذیرش ابر بدون حاکمیت نسخه‌ای برای هزینه‌های سرسام‌آور، آسیب‌پذیری‌های امنیتی و آشفتگی عملیاتی است. معماری ARM از پایه برای ارائه حاکمیت در سطح سازمانی از طریق سه ستون اصلی مهندسی شده است: Azure RBAC، Azure Policy و Resource Locks.
  • Role-Based Access Control (RBAC): تضمین می‌کند که کاربران و سیستم‌های خودکار فقط مجوزهای مورد نیاز برای انجام کارهای خود را دارند و به اصل حداقل دسترسی (Least privilege) پایبند هستند.
  • Azure Policy: در حالی که RBAC کنترل می‌کند چه کسی می‌تواند اقداماتی را انجام دهد، Azure Policy کنترل می‌کند چه اقداماتی مجاز هستند. Azure Policy منابع شما را در برابر قوانین و استانداردهای حالت مورد نظر ارزیابی می‌کند.
  • Resource Locks: حذف یا تغییر تصادفی منابع بحرانی پروداکشن می‌تواند باعث اختلالات فاجعه‌بار کسب‌وکار شود. ARM این ریسک را از طریق Resource Locks (CanNotDelete و ReadOnly) برطرف می‌کند.

اجرای استراتژیک و عملیات سازمانی

طراحی و پیاده‌سازی یک معماری ابری مبتنی بر ARM مستلزم دیدگاه استراتژیک، تخصص فنی و برنامه‌ریزی دقیق است. ادغام تمپلیت‌های ARM و ماژول‌های Bicep در پایپ‌لاین‌های CI/CD سازمانی – مانند GitHub Actions، Azure DevOps یا GitLab CI – مدیریت زیرساخت را به یک رشته مهندسی نرم‌افزار تبدیل می‌کند.

ویژگی‌های پیشرفته ARM: باز کردن قفل مدیریت ابری سطح بعدی

فراتر از پروویژنینگ اولیه منابع، Azure Resource Manager قابلیت‌های پیشرفته‌ای را ارائه می‌دهد که برای مدیریت سناریوهای پیچیده سازمانی و ساده‌سازی جریان‌های کاری عملیاتی طراحی شده‌اند.
  • عملیات What-If: یکی از نگرانی‌های تاریخی Infrastructure as Code عدم قطعیت اجرای یک استقرار بود: «اگر این تمپلیت را اجرا کنم واقعاً چه چیزی تغییر خواهد کرد؟» ARM این نگرانی را با عملیات What-If حل می‌کند.
  • Template Specs و Deployment Stacks: یک Template Spec به شما اجازه می‌دهد یک تمپلیت ARM یا Bicep را به عنوان یک منبع بومی در یک subscription یا resource group مایکروسافت آژور ذخیره کنید. Deployment Stacks مدیریت اعلامی را یک قدم جلوتر می‌برد و با مجموعه‌ای از منابع و تمپلیت‌های استقرار آن‌ها به عنوان یک واحد چرخه حیات اتمی واحد رفتار می‌کند.

نتیجه‌گیری: ارزش ماندگار معماری ARM

Azure Resource Manager بسیار بیشتر از یک ابزار استقرار ساده است؛ این ضربان قلب معماری پلتفرم ابری مایکروسافت آژور است. با یکپارچه‌سازی احراز هویت، مجوزدهی، اجرای پالیسی و ارکستراسیون منابع در یک Control Plane منسجم، ARM سازمان‌ها را توانمند می‌سازد تا محیط‌های ابری پیچیده را با اطمینان بی‌سابقه‌ای بسازند، ایمن کنند و مقیاس دهند.
از تغییر انقلابی آن به سمت تمپلیت‌های اعلامی و سینتکس Bicep گرفته تا فریمورک‌های حاکمیتی دقیق آن شامل Role-Based Access Control و Azure Policy، ARM زیرساخت ساختاری لازم برای فناوری اطلاعات سازمانی مدرن را فراهم می‌کند. تسلط بر معماری ARM حرفه‌ای‌های ابری را قادر می‌سازد تا از آتش‌نشانی واکنشی به مهندسی پیشگیرانه و خودکار انتقال یابند.

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

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

بیشتر بدانید: