ویرگول
ورودثبت نام
رحیم لطفی
رحیم لطفی
رحیم لطفی
رحیم لطفی
خواندن ۱۱ دقیقه·۲ روز پیش

معماری فنی و زیرسیستم‌های سامانه بانکداری متمرکز (Core Banking System)

مقدمه: هسته مرکزی بانک مدرن

سامانه بانکداری متمرکز (Core Banking System یا به اختصار CBS) قلب تپنده هر مؤسسه مالی است. این سامانه مسئولیت ثبت، پردازش، اعتبارسنجی و نگهداری تمامی تراکنش‌های بانکی را بر عهده دارد؛ از افتتاح حساب و واریز وجه گرفته تا پرداخت تسهیلات و تسویه‌های بین‌المللی، همگی در نهایت به CBS ختم می‌شوند. در معماری متمرکز سنتی، یک پایگاه داده مرکزی و یک هسته پردازشی واحد، وضعیت مالی مشتریان، مانده حساب‌ها و دفتر کل بانک را در لحظه به‌روز نگه می‌دارد. اما تحولات سال‌های اخیر — از ظهور بانکداری دیجیتال و تراکنش‌های آنی تا الزامات سخت‌گیرانه نظارتی و نیاز به در دسترس‌پذیری ۲۴/۷ — معماران را به بازاندیشی در ساختار این سیستم‌ها واداشته است.

Core Banking System
Core Banking System

بررسی تطبیقی معماری‌های رایج در CBS

معماری یکپارچه (Monolithic)

در این رویکرد قدیمی اما همچنان پرکاربرد، کل سامانه به صورت یک اپلیکیشن واحد با پایگاه داده مشترک پیاده‌سازی می‌شود. تمام زیرسیستم‌ها — مانند مدیریت حساب، پردازش وام، ماژول پرداخت و گزارش‌گیری — در یک فرایند واحد اجرا شده و از طریق فراخوانی مستقیم توابع با یکدیگر ارتباط برقرار می‌کنند. مزیت اصلی این معماری، سادگی در مدیریت تراکنش‌های اسیدی (ACID) و تضمین سازگاری قوی (Strong Consistency) داده‌هاست، چرا که تمام تغییرات درون یک محدوده تراکنشی واحد روی یک بانک اطلاعاتی رخ می‌دهد. با این حال، این رویکرد چالش‌های جدی برای بانک‌های امروزی ایجاد کرده است: هر تغییر جزئی در یک زیرسیستم، نیاز به تست و استقرار مجدد (Redeployment) کل سامانه دارد؛ مقیاس‌پذیری عمودی (افزایش توان سخت‌افزاری) به سرعت به سقف اقتصادی خود می‌رسد؛ و وجود یک باگ در بخش پرداخت می‌تواند کل عملیات سپرده‌گذاری را از کار بیندازد.

معماری مبتنی بر میکروسرویس (Microservices)

در مقابل، معماری میکروسرویس هر قابلیت بانکی را به عنوان یک سرویس مستقل و کوچک با پایگاه داده اختصاصی تعریف می‌کند. سرویس سپرده‌ها، سرویس وام، سرویس مشتری، سرویس پرداخت و... هر کدام به صورت جداگانه توسعه، استقرار و مقیاس‌دهی می‌شوند و از طریق APIهای سبک (معمولاً REST یا gRPC) یا با استفاده از پیام‌رسان‌های غیرهمزمان مانند Kafka با یکدیگر تعامل دارند. مزیت کلیدی برای بانک‌های بزرگ، قابلیت توسعه موازی توسط تیم‌های مجزا و مقیاس‌پذیری افقی (Horizontal Scaling) مستقل هر سرویس است. به عنوان مثال، در ساعات اوج تراکنش‌ها، تنها سرویس پرداخت نیاز به افزایش نمونه‌ها (Instances) دارد. چالش اصلی اما مدیریت تراکنش‌های توزیع‌شده و حفظ سازگاری داده‌ها در صورت خرابی یکی از سرویس‌هاست.

معماری ابری-بومی (Cloud-Native)

این رویکرد گامی فراتر از میکروسرویس برداشته و از مفاهیمی مانند کانتینرها (Docker)، ارکستراسیون (Kubernetes)، مش سرویس (Service Mesh مانند Istio) و تأمین خودکار زیرساخت (Infrastructure as Code) استفاده می‌کند. یک CBS ابری-بومی قادر است در پاسخ به نوسانات حجم تراکنش‌ها به طور خودکار نمونه‌های جدید ایجاد کند، در صورت خرابی یک نود بی‌درنگ آن را جایگزین سازد و به‌روزرسانی‌های پیوسته (Continuous Delivery) را بدون وقفه در ارائه سرویس انجام دهد. بانک‌هایی که از ابتدا روی این معماری سرمایه‌گذاری می‌کنند، مزیت رقابتی آکاری در سرعت ارائه سرویس‌های جدید و کاهش هزینه‌های عملیاتی به دست می‌آورند، اما پیچیدگی زیرساخت و نیاز به تغییر فرهنگ سازمانی از موانع اصلی پذیرش آن است.


زیرسیستم مدیریت حساب و دفتر کل (General Ledger)

دفتر کل توزیع‌شده در یک CBS مدرن، دیگر یک جدول ساده رابطه‌ای نیست. این زیرسیستم باید ساختار حساب‌ها را به صورت سلسله‌مراتبی (حساب‌های کل، معین و تفصیلی) به همراه ویژگی‌هایی مانند نوع حساب (سپرده قرض‌الحسنه، جاری، پس‌انداز، بلندمدت)، مالکیت (حقیقی، حقوقی، مشترک) و محدودیت‌های عملیاتی (حداکثر برداشت روزانه، نرخ سود علی‌الحساب) مدیریت کند. پیاده‌سازی دفتر کل توزیع‌شده به معنای آن است که اجزای مختلف دفتر ممکن است روی شاردهای (Shard) متفاوتی از پایگاه داده قرار گیرند یا حتی در دیتاسنترهای جغرافیایی جداگانه توزیع شده باشند.

ثبت تراکنش‌های دوطرفه (Double-Entry) همچنان سنگ بنای صحت حسابداری بانکی است. هر رویداد مالی باید حداقل دو ورودی داشته باشد: یک بدهکاری در یک حساب و یک بستانکاری معادل در حساب دیگر.

برای نمونه، هنگام واریز نقدی به حساب جاری مشتری، حساب «صندوق» بانک بستانکار (کاهش) و حساب جاری مشتری بدهکار (افزایش) می‌شود. در یک سیستم توزیع‌شده، اجرای این قانون ساده اما حیاتی به معماری‌های پیچیده‌تری نیاز دارد: هر سرویس (مثلاً سرویس سپرده و سرویس نقدینگی) باید قبل از نهایی‌سازی تراکنش، از سازگاری دفتر کل اطمینان حاصل کند. برای حسابرسی مالی نیز باید تمامی تغییرات به صورت دفتر روزنامه (Journal) با قابلیت بازگشت‌ناپذیری (Immutable) ثبت شوند — موضوعی که استفاده از بلاکچین یا دفتر کل نامتمرکز را در برخی پیاده‌سازی‌های پیشرو توجیه می‌کند.


هسته پردازش تراکنش و مدیریت تراکنش‌های توزیع‌شده

در یک CBS یکپارچه، پردازش یک تراکنش ساده مانند انتقال وجه بین دو حساب داخلی، درون یک تراکنش پایگاه داده اسیدی (ACID) انجام می‌شود. اما در معماری میکروسرویس، این عملیات ساده به دو سرویس مجزا (سرویس حساب مبدأ و سرویس حساب مقصد) و احتمالاً یک سرویس دفتر کل مستقل تقسیم می‌شود. در اینجا دو الگوی اصلی برای حفظ سازگاری وجود دارد:

پروتکل تعهد دوفازی (Two-Phase Commit - 2PC): که با نام آماده‌سازی و تعهد (Prepare & Commit) نیز شناخته می‌شود. در این الگو یک هماهنگ‌کننده (Coordinator) از همه سرویس‌های درگیر می‌پرسد: «آیا می‌توانید این تغییر را انجام دهید؟» اگر همه پاسخ مثبت بدهند، هماهنگ‌کننده فرمان نهایی‌سازی (Commit) را صادر می‌کند؛ در غیر این صورت همه را به حالت پیشین بازمی‌گرداند (Rollback). مزیت 2PC حفظ دقیق سازگاری قوی است، اما هزینه سنگین قفل‌گذاری طولانی‌مدت روی منابع و کاهش شدید در دسترس‌پذیری در صورت خرابی هماهنگ‌کننده، آن را برای سامانه‌هایی با نیازمندی پاسخ‌دهی زیر ثانیه نامناسب ساخته است.

الگوی ساگا (Saga Pattern): در مقابل، این الگو تراکنش را به یک توالی از تراکنش‌های محلی (Local Transactions) تجزیه می‌کند که هر کدام توسط یک سرویس انجام شده و رویداد خود را منتشر می‌کند. اگر مرحله‌ای با شکست مواجه شود، ساگا تراکنش‌های جبرانی (Compensating Transactions) را به ترتیب معکوس اجرا می‌کند. برای مثال در انتقال وجه، ابتدا سرویس مبدأ مانده را کم می‌کند (مرحله ۱) و رویداد «وجه کسر شد» منتشر می‌کند. سرویس مقصد با شنیدن این رویداد، مانده را زیاد می‌کند (مرحله ۲). اگر مرحله ۲ شکست بخورد، سرویس مبدأ رویداد جبرانی «برگرداندن وجه کسرشده» را اجرا می‌کند.

الگوی Saga سازگاری نهایی (Eventual Consistency) را تضمین می‌کند — یعنی پس از مدت کوتاهی سیستم به حالت درست خود می‌رسد — و هیچ قفل بلندمدتی ایجاد نمی‌کند، اما در لحظه کوتاهی پس از خطا، ممکن است داده‌ها در دو سرویس ناهماهنگ باشند.

انتخاب بین 2PC و Saga مصداق مستقیم قضیه CAP است: در حضور پارتیشن شبکه (Partition)، آیا سازگاری (Consistency) را قربانی می‌کنید یا در دسترس‌پذیری (Availability) را؟ بانکداری متمرکز سنتی همواره سازگاری را ترجیح داده، اما بانکداری مدرن در بسیاری از موارد (مثل نمایش موقت مانده اشتباه در کنار پرداخت موفق) سازگاری نهایی را می‌پذیرد تا در دسترس‌پذیری ۲۴/۷ حفظ شود.


ماژول‌های اصلی بانکی

زیرسیستم سپرده‌ها (Deposits): این ماژول مسئول مدیریت انواع حساب‌های سپرده (جاری، پس‌انداز، کوتاه‌مدت، بلندمدت) و محاسبه خودکار سود بر اساس نرخ‌های شناور یا ثابت است. ویژگی‌های کلیدی شامل مسدودی وجوه (Block/Unblock)، سقف برداشت، صدور دسته‌چک الکترونیک و تولید گردش‌های روزانه می‌شود. معماری این ماژول باید از ثبت تراکنش‌های با حجم بسیار بالا (میلیون‌ها در ساعت) در ساعات اوج پشتیبانی کند.

تسهیلات و وام‌ها (Lending): قلب درآمدزایی بانک. این زیرسیستم چرخه کامل اعطای تسهیلات — از درخواست و اعتبارسنجی (با اتصال به سامانه‌های اعتباری مانند سامانه نمره‌دهی اعتباری بانک مرکزی)، تصویب، قرارداد، پرداخت اصل تسهیلات، محاسبه اقساط (با روش‌های کاهش مانده یا سرمایه ثابت)، شناسایی اقساط معوق، تا مدیریت وصول — را پوشش می‌دهد. در معماری مدرن، موتور محاسبه سود و جریمه به عنوان یک سرویس مستقل با قابلیت تنظیم پویای نرخ‌ها بر اساس تأخیر پرداخت طراحی می‌شود.

مدیریت مشتریان بانکی (Banking CRM): فراتر از یک CRM معمولی، این ماژول باید نمای ۳۶۰ درجه از مشتری شامل تمام حساب‌ها، تسهیلات، کارت‌ها، تعهدات، امضاءهای مجاز و مدارک احراز هویت (KYC) را در خود داشته باشد. همچنین مدیریت نقش‌ها (مدیر، کارشناس، ممیز)، سطح دسترسی و تاریخچه تعاملات با شعبه و اپلیکیشن موبایل از وظایف آن است. یکپارچگی با سیستم مبارزه با پولشویی (AML) برای اسکن تراکنش‌های پرخطر الزامی است.

پردازش پرداخت‌ها (Payments): این ماژول دروازه ارتباطی بانک با شبکه‌های پرداخت (ساتنا، پایا، شتاب، سوئیفت) و درگاه‌های PSP است. قابلیت‌های کلیدی عبارتند از: مسیریابی هوشمند تراکنش بر اساس هزینه، زمان و در دسترس بودن مقصد؛ رعایت استانداردهای ISO 20022 برای پیام‌های مالی؛ مدیریت بچ (Batch) برای پرداخت‌های انبوه حقوق و غیره؛ و پیاده‌سازی مکانیسم‌های امنیتی مانند CVV2 پویا و توکن‌سازی (Tokenization) کارت.


لایه دسترسی به داده و مدیریت پایگاه داده با در دسترس‌پذیری بالا

معماری داده در CBS مدرن دو پیکربندی اصلی دارد:

Active-Passive: در این حالت تنها یک نود پایگاه داده فعال است و نود دیگر به صورت آماده به کار (Standby)، تراکنش‌ها را به صورت همگام (Synchronous) یا غیرهمگام (Asynchronous) دریافت می‌کند. در حالت همگام، تراکنش تنها زمانی متعهد (Commit) می‌شود که روی هر دو نود نوشته شود؛ این کار حداکثر سازگاری را تضمین می‌کند اما تأخیر (Latency) را افزایش می‌دهد. در حالت غیرهمگام، نود فعال بدون انتظار برای نود آماده‌به‌کار، تراکنش را نهایی می‌کند و در صورت خرابی ناگهانی، احتمال از دست رفتن آخرین تراکنش‌ها (RPO بالاتر) وجود دارد.

Active-Active: این پیکربندی هر دو نود را همزمان فعال نگه می‌دارد و درخواست‌ها را بین آن‌ها توزیع می‌کند. این رویکرد حداکثر در دسترس‌پذیری (99.999% یا پنج‌ناین) و مقیاس‌پذیری خواندن را فراهم می‌آورد، اما حل تعارض نوشتن همزمان روی یک رکورد در دو نود بسیار چالش‌برانگیز است. راهکارهای رایج شامل استفاده از شاردینگ مبتنی بر کلید (مثلاً توزیع مشتریان بر اساس شماره ملی) به طوری که هر مشتری همیشه به یک نود خاص نگاشت شود، یا استفاده از پایگاه‌های داده NoSQL با مدل سازگاری نهایی مانند Cassandra است.

معیارهای RTO (Recovery Time Objective) و RPO (Recovery Point Objective) در بانک‌های بزرگ معمولاً به ترتیب کمتر از ۱۵ دقیقه و کمتر از ۱ ثانیه تعریف می‌شوند.

دستیابی به این اعداد مستلزم ترکیبی از همگام‌سازی همزمان (برای RPO پایین) و زیرساخت خودکار Failover (برای RTO پایین) است. بسیاری از بانک‌ها از راهکارهای مبتنی بر کلاستر با توافق جمعی (Consensus algorithms مانند Raft یا Paxos) استفاده می‌کنند که بدون نیاز به یک نود هماهنگ‌کننده مرکزی، بین چندین نسخه از داده توافق ایجاد می‌کنند.


امنیت، تاب‌آوری (Resiliency) و بازیابی فاجعه (Disaster Recovery)

در صنعت بانکداری، امنیت تنها یک لایه نیست، بلکه در تمام لایه‌های معماری نفوذ کرده است. الزامات نظارتی مانند استاندارد PCI-DSS برای پردازش اطلاعات کارت‌های اعتباری، دستورالعمل‌های بانک مرکزی برای نگهداری حداقل ۷ سال از تراکنش‌ها، و الزام به رمزنگاری داده‌ها در حالت ذخیره‌سازی (Encryption at Rest) و در حال انتقال (Encryption in Transit) از حداقل‌های پذیرش هستند.

استراتژی تاب‌آوری (Resiliency) شامل «طراحی برای شکست» (Design for Failure) است؛ یعنی هر مؤلفه باید در برابر خرابی مؤلفه‌های وابسته مقاوم باشد. الگوهایی مانند:

قطع مدار (Circuit Breaker): که پس از تعداد مشخصی خطا از یک سرویس، درخواست‌ها را بدون اجرای واقعی با خطا برمی‌گرداند.

الگوی Retry با Backoff نمایی: تکرار درخواست با فاصله‌های فزاینده.

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

بازیابی فاجعه (DR) فراتر از خرابی‌های سخت‌افزاری ساده است. یک سناریوی واقعی شامل آتش‌سوزی در دیتاسنتر، قطع برق منطقه‌ای یا حتی حمله سایبری گسترده است. استراتژی‌های Failover باید حداقل سه سطح داشته باشند: Failover درون یک رک (به یک سرور جایگزین)، Failover درون دیتاسنتر (به یک کلاستر مجزا)، و Failover برون‌شهری (به دیتاسنتر دوم در شهر یا استان دیگر). هر سطح به نوبه خود هزینه و پیچیدگی را افزایش می‌دهد، اما دستیابی به هدف 99.999% در دسترس‌پذیری (کمتر از ۵.۲۶ دقیقه خرابی در سال) بدون DR برون‌شهری غیرممکن است. آزمایش‌های منظم بازیابی (Disaster Recovery Drills) — حداقل سالی دو بار — بخش جدایی‌ناپذیر از فرایندهای عملیاتی بانک است.


چالش‌های مهاجرت سیستم‌های سنتی (Legacy Migration) به معماری مدرن

مهاجرت از یک CBS یکپارچه و اغلب مبتنی بر فناوری‌های قدیمی مانند COBOL و پایگاه داده‌های غیررابطه‌ای اختصاصی، یکی از پرریسک‌ترین پروژه‌های فناوری اطلاعات در بانک‌هاست.

الگوی خفه‌کننده (Strangler Pattern): این الگو که توسط مارتین فاولر معرفی شده، رویکردی تدریجی ارائه می‌دهد؛ به جای بازنویسی یک‌باره کل سیستم، قابلیت‌های جدید را به صورت میکروسرویس‌های مجزا پیاده‌سازی کنید و مسیریاب (Router / API Gateway) را طوری تنظیم کنید که درخواست‌های مربوط به آن قابلیت، ابتدا به سرویس جدید هدایت شوند. سپس به تدریج قابلیت‌های قدیمی را از سیستم یکپارچه خارج کرده و با سرویس‌های جدید جایگزین کنید، تا جایی که سیستم قدیمی کاملاً جای خود را به سیستم جدید بدهد.

مهاجرت فازی (Phased Migration): این رویکرد عملی‌تر است؛ ابتدا زیرسیستم‌های کم‌ریسک مانند مدیریت اطلاع‌رسانی (SMS و ایمیل مشتریان) را منتقل کنید، سپس به سراغ ماژول‌های اصلی مانند سپرده‌ها بروید و در نهایت وام و پرداخت را مهاجرت دهید. در تمام این مدت، هم سیستم قدیمی و هم سیستم جدید به صورت همزمان اجرا می‌شوند و یک لایه همگام‌سازی داده (Data Sync Layer) اطمینان می‌دهد که تغییرات هر دو سیستم با یکدیگر سازگار بمانند.

مدیریت ریسک در حین گذار مستلزم چند اقدام حیاتی است: اجرای موازی (Parallel Run) به مدت حداقل سه ماه که در آن هر تراکنش هم روی سیستم قدیم و هم روی سیستم جدید اجرا شده و خروجی‌ها مقایسه می‌گردند؛ طراحی یک نقشه بازگشت (Rollback Plan) دقیق با پنجره زمانی حداکثر یک‌ساعته؛ و آموزش گسترده کارکنان شعب و مرکز عملیات قبل از قطع کامل سیستم قدیمی.

تجربه نشان می‌دهد که حتی با بهترین برنامه‌ریزی، ناهنجاری‌های داده‌ای پیش‌بینی‌نشده — مانند کدهای شبای نامعتبر، تاریخ‌های بازه‌ای در سیستم قدیم که با فرمت نادرست ذخیره شده‌اند، یا قوانین سوددهی پیچیده که مستند نیستند — در حین مهاجرت ظاهر می‌شوند. داشتن یک تیم واکنش سریع (SWAT Team) با دسترسی مستقیم به کد قدیم و جدید برای حل این موارد، ضرورتی انکارناپذیر است.

#CoreBankingSystem #CBS #بانکداری_متمرکز #هسته_مرکزی_بانک #MonolithicArchitecture #معماری_یکپارچه #Microservices #میکروسرویس #CloudNative #ابری_بومی #GeneralLedger #دفتر_کل #DoubleEntry #حسابداری_دوطرفه #TransactionProcessing #پردازش_تراکنش #DistributedTransaction #تراکنش_توزیع‌شده #TwoPhaseCommit #2PC #SagaPattern #سازگاری_نهایی #EventualConsistency #CAPTheorem #Deposits #سپرده‌ها #Lending #تسهیلات_وام #BankingCRM #مدیریت_مشتریان #PaymentProcessing #پردازش_پرداخت #ActivePassive #ActiveActive #HighAvailability #دسترس‌پذیری_بالا #RTO #RPO #DisasterRecovery #بازیابی_فاجعه #Resiliency #تاب‌آوری #CircuitBreaker #قطع_مدار #BankingSecurity #امنیت_بانکی #PCIDSS #Encryption #رمزنگاری #LegacyMigration #مهاجرت_سیستم_سنتی #StranglerPattern #الگوی_خفه‌کننده #PhasedMigration #مهاجرت_فازی #BankingModernization #تحول_بانکداری #DigitalBanking #بانکداری_دیجیتال #OpenBanking #بانکداری_باز #CoreBankingTransformation #تحول_هسته_بانکی #BankingArchitecture #معماری_بانکی #FinancialServices #خدمات_مالی #FinTech #فینتک


بانکداری متمرکزمعماریبانکداری دیجیتالمعماری میکروسرویس
۶
۰
رحیم لطفی
رحیم لطفی
شاید از این پست‌ها خوشتان بیاید