دربارهٔ این فصل
یادداشتِ همراه نوارتا حالا به این فکر کردهاید که وقتی نرمافزاری را روی بسترهای ابری مستقر میکنید، چطور میتوانید از سلامت و عملکرد آن مطمئن باشید در حالی که دسترسی فیزیکی به سرورهای آن ندارید؟ چه چالشهایی در انتظار تیمهای توسعهای است که میخواهند از روش سنتی فاصله بگیرند و برنامههای خود را مقیاسپذیر کنند؟
این مباحث در بخش چهارم کتاب «فراتر از اپلیکیشن دوازدهعاملی» نوشتهٔ «کوین هافمن» بررسی شدهاند که به ما کمک میکند نگاه عمیقتری به معماریهای مدرن داشته باشیم.
یکی از موضوعات کلیدی، همروندی (Concurrency) است که به ما میگوید برنامههای بومی ابر (Cloud Native) باید به جای بزرگ کردن یک پردازش واحد، مقیاس افقی داشته باشند و بار کاری را بین چند پردازش توزیع کنند. مشکل این است که افزودن منابع به یک پردازش منفرد که مقیاسپودی عمودی خوانده میشود، پاسخگوی نیازهای مدرن نیست و انتخاب مناسب این است که چندین نمونه برنامه ایجاد کنیم و بار کاری را بین آنها تقسیم نماییم؛ مانند استفاده از قوانین مقیاسدهی خودکار که تعداد نمونههای برنامه را بر اساس بار کاری تنظیم میکنند.
مسئلهٔ مهم دیگر، پایش از راه دور (Telemetry) است که به ما امکان میدهد رفتار سیستم را زیر نظر بگیریم. در محیطهای ابری، شما نمیتوانید مثل زمان توسعه محلی به درون برنامه سرک بکشید و نمونههای برنامه ممکن است مدام جابهجا شوند، بنابراین نویسنده پیشنهاد میکند برنامهها را مانند کاوشگرهای فضایی ببینیم که به ابزارهای دقیق سنجش نیاز دارند. در این میان، دستههای مختلفی از دادهها وجود دارند که پایش عملکرد اپلیکیشن (Application Performance Monitoring) یکی از آنهاست و جریانی از رویدادها را برای بررسی عملکرد فراهم میکند؛ در حالی که پایشهای مختص دامنه تجاری به گزارش رویدادهای مرتبط با کسبوکار مانند تعداد اقلام فروختهشده میپردازند.
امنیت، احراز هویت و کنترل دسترسی از دیگر ستونهای حیاتی هستند که نباید به عنوان یک کار پس از اتمام پروژه دیده شوند. مشکل اینجاست که تمرکز روی قابلیتهای اولیه باعث غفلت از امنیت میشود، در حالی که کدهای ما در شبکهها و کانتینر (Container) در حال گردش هستند و توسط کاربران مختلفی درخواست میشوند. بهترین گزینه این است که کنترل دسترسی مبتنی بر نقش (Role-Based Access Control) در تمام نقاط پایانی برنامه پیادهسازی شود تا هر درخواستی اعتبارسنجی گردد و این کار با ابزارهایی مانند استانداردهای مدرن از روز اول توسعه انجام گیرد.
در نهایت، مفهوم بومی ابر به برنامههایی اشاره دارد که برای اجرا روی سکو به عنوان خدمت (Platform as a Service) طراحی شدهاند تا تیمها به جای درگیر شدن با زیرساخت، روی هسته اصلی کسبوکار خود که نویسنده آن را به ایده تمرکز بر یک کار بزرگ تشبیه میکند، تمرکز کنند. چالش همیشگی در این میان، توازن میان اصول آرمانگرایانه و نیازهای واقعگرایانه و بودجه تیمها است که نشان میدهد سازش با واقعیتهای توسعه چقدر اهمیت دارد.
پیشنهاد من به شما این است که هنگام طراحی یا بازنگری پروژهها، ساختار برنامههای خود را با این اصول بسنجید تا بدون وابستگی به سختافزار مشخص، آماده مواجهه با بارهای سنگین ترافیکی باشند.
امیدوارم این مرور کوتاه توانسته باشد دید روشنتری نسبت به معماری مدرن نرمافزار به شما بدهد و در مسیر توسعه برنامههای مقیاسپذیر یاریتان کند.