توسعه و پلتفرم‌های Low-Codeتست و صحه‌گذاری شده On-Premises

راهنمای جامع معماری فارم سرورهای سازمانی و کلاسترینگ OutSystems On-Premises

راهنمای مهندسی معماری چندسروری (Multi-Server Farm)، تفکیک لایه‌های Controller و Front-End، کلاسترینگ دیتابیس MSSQL/Oracle، راه‌اندازی صف پیام RabbitMQ، پیکربندی IIS Application Pool و پیاده‌سازی فعال‌سازی دائمی آفلاین برای پلتفرم Low-Code اوت‌سیستمز در دیتاسنترهای ایزوله.

دپارتمان تخصصی پلتفرم‌های سازمانی و Low-Code دپارتمان Licentraتیم مهندسی و تضمین پایداری
تاریخ انتشار: ۱۰ اسفند ۱۴۰۴
زمان مطالعه: ۵ دقیقه
حجم مطلب: ۱٬۰۸۲ کلمه
اندازه متن:

آیا این راهنمای فنی برای شما مفید و کاربردی بود؟

بازخورد شما مستقیماً به تیم مهندسی نرم‌افزار سازمانی Licentra جهت غنابخشی مستندات منتقل می‌گردد.

راهنمای جامع معماری فارم سرورهای سازمانی و کلاسترینگ OutSystems On-Premises
خلاصه اجرایی و نکات کلیدی این راهنما

این مقاله به عنوان مستند فنی رسمی و راهنمای عملیاتی، نیازمندی‌ها، ساختار دیتابیس، سناریوهای مانیتورینگ و فرآیندهای راه‌اندازی و پایداری را در محیط‌های واقعی مورد تحلیل قرار می‌دهد:

محیط استقرار: شبکه‌های ایزوله On-Premises و دیتاسنترهای Air-Gapped
مخاطبان هدف: مدیران سیستم، کارشناسان دواپس و مهندسان شبکه
لایسنسینگ: دائمی و بدون نیاز به اتصال یا اعتبارسنجی اینترنتی
پشتیبانی: اعتبارسنجی‌شده در لابراتوار فارم‌های عملیاتی Licentra

پلتفرم OutSystems یکی از قدرتمندترین محیط‌های توسعه نرم‌افزار به روش Low-Code در مقیاس سازمانی (Enterprise-Grade) است که به تیم‌های فناوری اجازه می‌دهد سامانه‌های پیچیده وب و موبایل را در کمترین زمان ممکن توسعه و مستقر نمایند. با این حال، در بانک‌ها، شرکت‌های بیمه و صنایع مادر که دیتاسنترهای ایزوله و بدون دسترسی به اینترنت دارند، استفاده از سرویس‌های Cloud سازنده (OutSystems Cloud / AWS PaaS) به دلیل الزامات حاکمیت داده (Data Sovereignty) مقدور نیست.

در این شرایط، تنها راهکار استاندارد، استقرار نسخه OutSystems Platform Server On-Premises در قالب یک فارم سروری چندلایه (Multi-Server Farm Architecture) است. در این مقاله جامع، طراحی توپولوژی فارم، جداسازی نقش‌های Deployment Controller و Front-Endها، پیکربندی صف پیام RabbitMQ، تنظیمات پایگاه داده متمرکز و تثبیت لایسنس دائمی آفلاین تشریح می‌شود.

کنسول معماری و استقرار سازمانی OutSystems Platform Server
📷 کنسول معماری و استقرار سازمانی OutSystems Platform Server

۱. توپولوژی معماری چندسروری OutSystems Farm #

یک استقرار سازمانی OutSystems شامل سه لایه مجزا و کامپوننت‌های زیر است:

text
                  ┌─────────────────────────────────────────┐
                  │       Reverse Proxy / F5 Load Balancer  │
                  │             https://apps.corp.local     │
                  └───────────────────┬─────────────────────┘
                                      │
            ┌─────────────────────────┴─────────────────────────┐
            │                                                   │
            ▼                                                   ▼
┌───────────────────────┐                           ┌───────────────────────┐
│  Front-End Node 1     │                           │  Front-End Node 2     │
│   IIS / .NET CLR      │                           │   IIS / .NET CLR      │
│  192.168.30.21        │                           │  192.168.30.22        │
└───────────┬───────────┘                           └───────────┬───────────┘
            │                                                   │
            ├─────────────────────────┬─────────────────────────┤
            │                         │                         │
            ▼                         ▼                         ▼
┌───────────────────────┐ ┌───────────────────────┐ ┌───────────────────────┐
│ Deployment Controller │ │ RabbitMQ Message Bus  │ │   MSSQL AlwaysOn AG   │
│  Service Center / 1CP │ │  Cache Invalidation   │ │     Core Databases    │
│     192.168.30.10     │ │      Port: 5672       │ │ (Catalog, Platform)   │
└───────────────────────┘ └───────────────────────┘ └───────────────────────┘

تفکیک وظایف سرورها (Server Role Segregation):

۱. Deployment Controller Server (سرور کنترلر):

- وظیفه کامپایل ماژول‌های eSpace، تبدیل متادیتا به کدهای استاندارد C# / ASP.NET و اجرای فرآیند 1-Click Publish.

- میزبانی پرتال مدیریتی مرکزی Service Center و کنسول حاکمیت چرخه عمر نرم‌افزار LifeTime.

- این سرور نباید مستقیماً در معرض ترافیک کاربران نهایی قرار گیرد.

۲. Front-End Execution Servers (سرورهای اجرا):

- میزبانی وب‌سایت‌ها و وب‌سرویس‌های کامپایل‌شده روی IIS Application Pools.

- دریافت درخواست‌های کلاینت‌ها از پشت لودبالانسر شبکه.

- هر سرور فرانت‌اند پردازش سبک‌تری روی حافظه پردازنده برای کامپایل دارد و تمرکز آن بر روی پاسخ‌دهی سریع به درخواست‌های HTTP/WebSockets است.

۳. RabbitMQ Messaging Cluster (بستر همگام‌سازی کش):

- پلتفرم OutSystems برای باطل کردن کش‌های حافظه (Cache Invalidation) بین نودهای مختلف فرانت‌اند به یک Message Broker سبک نیاز دارد. عدم پیکربندی صحیح RabbitMQ باعث می‌شود کاربری که به Node1 متصل است داده‌های تغییریافته توسط کاربر Node2 را مشاهده نکند.

۲. طراحی و پیکربندی کاتالوگ پایگاه داده (Database Catalog Architecture) #

پایگاه داده در OutSystems قلب ذخیره‌سازی متادیتا و داده‌های بیزنسی است. بهترین الگو در MSSQL، تفکیک کاتالوگ‌ها به چهار بخش مستقل جهت مدیریت دسترسی و بهینه‌سازی I/O دیسک است:

sql
-- ایجاد دیتابیس کاتالوگ اصلی پلتفرم OutSystems
CREATE DATABASE [outsystems_platform]
COLLATE Latin1_General_CI_AI;
GO

-- ایجاد دیتابیس داده‌های لاگ رویدادها (تفکیک برای جلوگیری از کاهش سرعت دیتابیس اصلی)
CREATE DATABASE [outsystems_logging]
COLLATE Latin1_General_CI_AI;
GO

-- ایجاد دیتابیس مدیریت چرخه عمر (LifeTime)
CREATE DATABASE [outsystems_lifetime]
COLLATE Latin1_General_CI_AI;
GO

-- تنظیم Flag جهت جلوگیری از Deadlock در تراکنش‌های همزمان کامپایل
ALTER DATABASE [outsystems_platform] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [outsystems_logging] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;
ALTER DATABASE [outsystems_lifetime] SET READ_COMMITTED_SNAPSHOT ON WITH ROLLBACK IMMEDIATE;
GO

۳. پیکربندی سرور Controller و ابزار Configuration Tool #

پس از نصب پکیج OutSystems Platform Server بر روی ماشین Controller، ابزار Configuration Tool را اجرا نمایید:

powershell
cd "C:\Program Files\OutSystems\Platform Server"
.\ConfigurationTool.exe

تنظیمات حیاتی در تب‌های ابزار:

۱. Platform Tab:

- انتخاب Database Engine: SQL Server

- وارد کردن نام سرور یا Listener کلاستر: sql-ag-listener.corp.local

- احراز هویت با کاربر os_admin و زدن دکمه Grant Permissions جهت ایجاد Schemaهای اتوماتیک.

۲. Session State Tab:

- برای محیط چندسروری، جلسه کاربران (User Session) نباید In-Proc باشد. گزینه SQL Server Session Provider را انتخاب نموده و دیتابیس outsystems_session را معرفی کنید تا کاربر با سوییچ بین Front-Endها از برنامه لاگ‌اوت نشود.

۳. Cache Tab (RabbitMQ Configuration):

- تعیین آدرس سرور RabbitMQ: 192.168.30.15

- پورت اتصال: 5672

- کاربر و کلمه عبور تعریف‌شده در RabbitMQ VHost.

powershell
# اسکریپت تایید وضعیت سرویس‌های اصلی OutSystems
Get-Service -Name "OutSystems Deployment Service" | Select-Object Name, Status
Get-Service -Name "OutSystems Deployment Controller Service" | Select-Object Name, Status
Get-Service -Name "OutSystems Log Service" | Select-Object Name, Status

۴. استقرار و اتصال Front-End Servers به کلاستر فارم #

روی سرورهای Front-End (مثلاً Node1 و Node2)، نرم‌افزار Platform Server نصب می‌شود اما در ویزارد Configuration Tool، تیک گزینه This machine is a Deployment Controller برداشته می‌شود.

۱. در فیلد Deployment Controller Server، آدرس سرور اصلی 192.168.30.10 وارد می‌گردد.

۲. پس از اتمام اعمال تنظیمات روی فرانت‌اند، وارد کنسول وب Service Center به آدرس http://192.168.30.10/ServiceCenter شوید.

۳. به مسیر Administration -> Servers مراجعه کرده و بر روی Add Server کلیک کنید.

۴. نام و IP سرور فرانت‌اند جدید را ثبت نموده و تست اتصال شبکه را برقرار سازید.

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

۵. لایسنسینگ آفلاین On-Premises و دور زدن محدودیت‌های لایسنس ابری #

پلتفرم رسمی OutSystems در نسخه‌های سازمانی به مکانیزم شمارش کاربران داخلی (Internal Named Users)، حجم Application Objects (AO) و استعلام لایسنس از سرورهای سازنده متکی است. در زیرساخت‌های ایزوله داخلی:

۱. کد سخت‌افزاری سرور (Serial Number): در Service Center در صفحه لایسنس یک هش منحصربه‌فرد بر اساس شناسه ماشین‌های Controller و Front-End تولید می‌شود.

۲. تزریق فایل کلید لایسنس Licentra: بسته سازمانی Licentra با ثبت کدهای سخت‌افزاری تمام گره‌های فارم در یک فایل امضاشده دیجیتال، امکان اجرای نامحدود Application Objectها و ساخت تعداد کاربر نامحدود را در حالت ۱۰۰٪ آفلاین فراهم می‌سازد.

۳. پایداری فرآیند 1-Click Publish: بدون نیاز به ارتباط با اینترنت، کدهای زبان میانی و پکیج‌های جاوااسکریپت به درستی ساخته شده و روی تمامی نودهای IIS مستقر می‌شوند.

powershell
# استعلام وضعیت رجیستری و سرویس لایسنس پلتفرم
$regKey = "HKLM:\SOFTWARE\OutSystems\Platform Server"
Get-ItemProperty -Path $regKey -Name "InstallationPath", "Version"

۶. بهینه‌سازی عملکرد IIS و تنظیمات Application Pool #

برای پشتیبانی از هزاران کاربر همزمان روی پلتفرم سازمانی، تنظیمات زیر روی وب‌سرور تمامی Front-Endها اعمال گردد:

  • Queue Length: افزایش طول صف استخر برنامه از ۱۰۰۰ به ۵۰۰۰ درخواست جهت جلوگیری از خطای HTTP 503 Service Unavailable.
  • Idle Time-out (minutes): تنظیم روی 0 (غیرفعال‌سازی خاموش شدن Worker Process در زمان بیکاری).
  • Recycling Regular Time Interval (minutes): تنظیم بازیافت روزانه در ساعات کم‌بار (مثلاً ساعت ۰۳:۰۰ بامداد) جهت آزادسازی نشتی حافظه احتمالی برنامه‌های سنگین.

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

دپارتمان تخصصی پلتفرم‌های سازمانی و Low-Code دپارتمان Licentra

دپارتمان مهندسی و تضمین پایداری سامانه‌های On-Premises
درخواست مشاوره فنی

تمامی راهنماها و بسته‌های ارائه‌شده توسط مهندسان Licentra در فارم‌های عملیاتی و شبکه‌های ایزوله سازمانی تست و صحه‌گذاری شده‌اند تا پایداری کامل بدون نیاز به اینترنت یا سرویس‌های ابری خارجی تضمین گردد.

مقالات و راهنماهای مرتبط

راهنماهای پیشنهادی بر اساس موضوع، پلتفرم و برچسب‌های مشترک

مشاهده همه مقالات
راهنمای جامع معماری، استقرار و مدیریت چرخه حیات OutSystems Platform Low-Code در بستر On-Premises
پلتفرم‌های توسعه نرم‌افزار و Low-Code

راهنمای جامع معماری، استقرار و مدیریت چرخه حیات OutSystems Platform Low-Code در بستر On-Premises

راهنمای فنی و عملیاتی راه‌اندازی پلتفرم توسعه سریع نرم‌افزار (Low-Code) OutSystems بر بستر سرورهای محلی؛ پیکربندی Platform Server، کنترلر انتشار (Deployment Controller)، مدیریت محیط‌ها با LifeTime، کامپایل کدهای بومی C# .NET و لایسنس سازمانی.

۲۰ بهمن ۱۴۰۴مطالعه کامل