پلتفرم دارا
یک هستهٔ مالی، یک موتور فرایند و زیرساختی مشترک که همهٔ ماژولها روی آن ساخته شدهاند. در این صفحه توضیح دادهایم هر بخش چه کاری میکند و چرا اینطور طراحی شده است.
اصول طراحی
این اصلها در همهٔ سرویسهای دارا رعایت میشوند و بیشتر رفتارهای پلتفرم از آنها نتیجه میشود.
- ۰۱
یک هسته برای همهٔ ماندهها
هیچ ماژولی ماندهٔ محلی نگه نمیدارد. سپرده، کیف پول، تسهیلات و پرتفوی سرمایهگذاری مانده را از هستهٔ مالی میخوانند و سند را همانجا ثبت میکنند. چارت حساب چندسطحی با تفصیل شناور و کلید یکتا روی هر ثبت، این هسته را به تنها مرجع قابل استناد تبدیل میکند.
- ۰۲
فرایند به شکل داده
گراف هر فرایند در یک ستون داده نگه داشته میشود و مثل هر دادهٔ دیگری نسخه میخورد، اعتبارسنجی و منتشر میشود. تغییر ترتیب کارها یا افزودن یک تأیید، تصمیمی در طراحی فرایند است و به چرخهٔ ساخت و انتشار در چند سرویس نیاز ندارد.
- ۰۳
هویت جدا از مجوز
صدور توکن کار ماژول احراز هویت است و عضویت، نقش و فهرست مجوزها کار ماژول کاربر و شرکت. توکن فقط در دروازه بررسی میشود و مشخصات تأییدشدهٔ کاربر، پس از پاکسازی هدرهای ورودی، به درخواست افزوده میشود.
- ۰۴
هر ماژول مالک دادهٔ خودش
مرز هر ماژول مرز پایگاهدادهٔ آن هم هست و هیچ ماژولی مستقیم در جدول ماژول دیگر نمینویسد. هر ماژول دو چیز به بیرون عرضه میکند: عملیات فراخوانیپذیر و رویدادهای منتشرشده.
- ۰۵
یک الگو در همهٔ سرویسها
هر سرویس دامنه همان ساختار لایهای، همان قالب پاسخ، همان قرارداد صفحهبندی و همان ترتیب پردازش درخواست را دارد. این یکنواختی خواندن و نگهداری کد را ساده میکند و افزودن ماژول تازه را کاری قابل تکرار میکند.
لایههای پلتفرم
از اپ مشتری تا زیرساخت، هر لایه مسئولیت مشخصی دارد. هستهٔ مالی در میانه قرار گرفته و همهٔ لایههای بالاتر برای مانده به آن تکیه میکنند.
- ۰۱
EXPERIENCE
لایهٔ تجربه
اپ مشتری، پنل سازمان، پورتال پذیرنده و بکآفیس. همه مستقیم روی همان دادهای کار میکنند که در هستهٔ مالی ثبت شده و نسخهٔ همگامشدهٔ جداگانهای ندارند.
- اپ مشتری
- پنل سازمان
- پورتال پذیرنده
- بکآفیس
- ۰۲
DOMAIN MODULES
ماژولهای دامنه
سپرده، تسهیلات، کارت، کیف پول و وثیقه هر کدام پایگاهدادهٔ خود را دارند. هیچ ماژولی در جدول ماژول دیگر نمینویسد و ارتباط از راه عملیات فراخوانیپذیر و رویدادهای منتشرشده است.
- سپرده
- تسهیلات
- کارت
- کیف پول
- وثیقه
- پذیرنده
- ۰۳
PROCESS ENGINE
موتور فرایند
گراف هر فرایند دادهٔ نسخهدار است. کارتابل کارشناسان، تایمرها و هماهنگی میان ماژولها در این لایه اجرا میشوند.
- طراح فرایند
- کارتابل
- تایمر پایدار
- صف خروجی رویداد
- ۰۴
FINANCIAL CORE
هستهٔ مالی
تنها مرجع مانده؛ چارت حساب چندسطحی با تفصیل شناور، سند سهمرحلهای و دورهٔ مالی با شمارهگذاری بازگشتناپذیر.
- چارت حساب
- سند
- دورهٔ مالی
- تفصیل شناور
- ۰۵
PLATFORM
زیرساخت
دروازهٔ واحد ورودی، هویت و مجوز جدا از هم، ثبت و کشف سرویس، مدیریت اسناد با رمزنگاری و لاگ متمرکز.
- API Gateway
- هویت و مجوز
- کشف سرویس
- مدیریت اسناد
- لاگ متمرکز
موتور فرایند
موتور فرایند دارا وضعیت هر پرونده را در سادهترین شکل ممکن نگه میدارد؛ خواندن وضعیت فعلی یک پرسوجوی ساده است و به بازخوانی تاریخچه نیازی ندارد.
- ۰۱
فرایند به شکل دادهٔ نسخهدار
هر فرایند چرخهٔ پیشنویس، منتشرشده و بایگانی دارد. انتشار نسخهٔ تازه یک فراخوانی است و به استقرار دوبارهٔ هیچ سرویسی نیاز ندارد. پروندههای در جریان روی نسخهٔ خودشان میمانند.
- ۰۲
پیشروی اتمیک پشت قفل پرونده
هر گام در تراکنشی جلو میرود که اول قفل همان پرونده را میگیرد. اگر چند ماژول همزمان پاسخ بدهند، پاسخها پشت همین قفل صف میشوند و وضعیت پرونده دوگانه نمیشود.
- ۰۳
رویداد و وضعیت در یک تراکنش
تغییر وضعیت و رویدادی که آن را اعلام میکند با هم ثبت میشوند یا هیچکدام. تحویل رویداد جداگانه، با امضای HMAC و تلاش دوباره با فاصلهٔ فزاینده انجام میشود.
- ۰۴
کارتابل انسانی و مهلتها
کار انسانی با نقش مقصد و محدودهٔ جغرافیایی ثبت میشود و میتوان آن را تحویل گرفت، تکمیل کرد، برگرداند یا ارجاع داد. تایمرها پایدارند و با راهاندازی دوبارهٔ سرویس از بین نمیروند.
- ۰۵
هجده نوع نود
از کار انسانی و تایمر تا فراخوانی سامانههای بیرونی. تحلیلگر فرایند گراف را در طراح بصری میکشد و برای هر کار انسانی نقش و مهلت تعیین میکند.
- ۰۶
اعتبارسنجی پیش از انتشار
گراف پیش از انتشار بررسی میشود تا گام بیخروجی یا مسیر ناتمام در آن نماند. خطاها در همان طراح دیده میشوند.
زیرساخت مشترک
ماژولهای دامنه روی این سرویسهای مشترک کار میکنند و هیچکدام این کارها را جداگانه تکرار نمیکنند.
احراز هویت
ورود کاربران و صدور توکن دسترسی در کل پلتفرم فقط در این ماژول انجام میشود.
دروازهٔ API
تنها ورودی درخواستها به ماژولها. توکن همینجا بررسی میشود و مسیر هر درخواست از روی ثبت سرویسها پیدا میشود.
مدیریت اسناد
فایلها و مدارک با رمزنگاری لایهای و در محل ذخیرهسازی قابل انتخاب نگهداری میشوند.
اعلان و پیامرسانی
پیامک، رایانامه، اعلان گوشی، صندوق پیام درون برنامه و کد یکبارمصرف، همه از یک نقطهٔ خروج.
زمانبند مرکزی
کارهای زماندار همهٔ ماژولها از یک زمانبند اجرا میشوند و منطق هر کار نزد ماژول صاحب آن میماند.
هاب سرویسهای خارجی
هر تماس با سامانههای بیرون از سازمان از مسیری تعریفشده عبور میکند که قابل پیکربندی و پایش است.
امنیت و ممیزی
امنیت در دارا به چند اصل ساده برمیگردد که در همهٔ ماژولها یکسان اجرا میشوند: یک ورودی، هویت جدا از مجوز، سند بازگشتناپذیر و سابقهٔ کامل.
یک در ورودی
هیچ درخواستی بدون عبور از دروازهٔ API به ماژولها نمیرسد. توکن همانجا بررسی و هدرهای ورودی پاکسازی میشوند.
هویت جدا از مجوز
صدور توکن کار ماژول احراز هویت است و نقشها و فهرست مجوزها در ماژول کاربر و شرکت تعریف میشوند.
سند بازگشتناپذیر
سند دائم ویرایش نمیشود و شمارهٔ عطف هر دورهٔ مالی پیاپی و بدون جای خالی است.
کلید یکتا روی هر ثبت
ثبت سند، انتقال وجه و خرید با کلید یکتا انجام میشوند تا تکرار درخواست اثر دوباره نگذارد.
مدارک رمزنگاریشده
فایلها و مدارک در ماژول مدیریت اسناد با رمزنگاری لایهای نگهداری میشوند و ماژولهای دیگر فقط شناسهٔ فایل را دارند.
سابقهٔ عملیات
گذارهای هر پرونده، عملیات کاربران و پاسخهای دستیار هوشمند همراه با منبعشان ثبت میشوند و برای ممیزی در دسترساند.
فناوریهایی که با آنها کار میکنیم
پلتفرم با فناوریهایی ساخته شده که در زیرساخت سازمانهای مالی ایران آشنا هستند و روی سرورهای خود سازمان قابل اجرا هستند.
بکاند
۰۱- .NET 10
- ASP.NET Core
- Node.js
رابط کاربری
۰۲- Next.js
- React
- TypeScript
داده و پیام
۰۳- SQL Server
- PostgreSQL
- Redis
- RabbitMQ
استقرار و مسیریابی
۰۴- Docker
- GitLab CI/CD
- YARP
- Eureka
لاگ و پایش
۰۵- Serilog
- Elasticsearch
- Seq
- Prometheus
از جلسهٔ شناخت تا راهاندازی
هر پروژه با شناخت سامانهها و روالهای فعلی سازمان شروع میشود و تا وقتی ماندهها و پروندهها با سامانهٔ قبلی تطبیق نخوردهاند، راهاندازی انجام نمیشود.
- ۰۱
Discovery
شناخت و تحلیل
محصولات، فرایندها، چارت حساب و سامانههای فعلی سازمان را با هم مرور میکنیم و پیش از هر تنظیمی، فهرست تفاوتها و تصمیمهای باز را مینویسیم.
- ۰۲
Configuration
طراحی و پیکربندی
دستههای سپرده، خطوط اعتباری، الگوهای سند، نقشها و فرایندهای تأیید روی پلتفرم تعریف میشوند. اگر نیازی بیرون از قابلیتهای موجود باشد، همینجا مشخص و برنامهریزی میشود.
- ۰۳
Migration & Testing
انتقال داده و آزمون
ماندهها و پروندههای باز از سامانهٔ قبلی منتقل و با گزارشهای آن تطبیق داده میشوند. کاربران کلیدی سناریوهای روزمره را روی محیط آزمون اجرا میکنند.
- ۰۴
Go-live & Support
راهاندازی و پشتیبانی
پس از تأیید تطبیقها، سامانهٔ قبلی در روز قطع بسته میشود و کار روی دارا ادامه پیدا میکند. آموزش کاربران، مستندات و پشتیبانی پس از راهاندازی بخشی از هر پروژه است.
معماری را با تیم فنی شما مرور کنیم
اگر تیم فنی سازمانتان میخواهد جزئیات معماری، استقرار و اتصال به سامانههای موجود را بررسی کند، جلسهای فنی ترتیب میدهیم.