Архитектурын тодорхойлолт
Gerege Nexus-ын систем архитектур, давхаргууд ба техникийн шийдвэрүүд.
Монгол
·
English
1. Системийн ерөнхий архитектур
Gerege Nexus нь өндөр бүтээмжтэй, Монгол Улсын цахим дэд бүтэцтэй нягт холбогдох боломжтой модульт монолит платформ — төрийн болон хувийн хэвшлийн байгууллагын үйлчилгээ, үйл ажиллагаа, систем, өгөгдлийг нэгтгэнэ.
1.1 Өндөр бүтээмжтэй модуль монолит
- Zero-latency execution — бизнес модулиуд (
contacts,products,inventory,billing,documents,sso_clients) нь Go хэлнийModuleконтрактыг хэрэгжүүлж, нэг бинарид компиллогдоно. - Тенант бүрийн апп стор — модуль тус бүр тенантад идэвхтэй эсэхийг
PostgreSQL (
app_installations) динамикаар шийднэ. - DAG хамаарал шийдвэрлэлт — Directed Acyclic Graph ба semver ашиглан модулийн хамаарлыг мөчлөг үүсгэхгүйгээр тооцоолно.
- Каталогийн синк —
catalog/apps.jsonцорын ганц эх сурвалж бөгөөдappsхүснэгт ачаалал бүрт түүнээс шинэчлэгдэнэ.
1.2 Cloud-native тэсвэрлэлт (go-zero-оос санаа авсан)
- Adaptive circuit breaker (
resilience/breaker.go) — Google SRE-ийн гулсах цонхон дээрх алдааны харьцаагаар хүсэлтийг татгалзана. - Adaptive load shedding (
resilience/loadshedder.go) — зэрэг ажиллах хүсэлтийн тоо хэтэрвэл503 Service Unavailableбуцаана. - Singleflight coalescing (
resilience/singleflight.go) — давхардсан асуулгыг нэгтгэж, кэш нурах үеийн ачааллыг бууруулна. - Exponential backoff retry (
resilience/retry.go) — түр зуурын алдаанд давтан оролдоно.
1.3 Төрийн мэдээлэл солилцоо ба танилт нэвтрэлт
- ХУР систем — иргэний бүртгэл (
WS100101), хуулийн этгээдийн мэдээлэл (WS100201). Клиент нь платформд, хэрэглэгчид харагдах нүүр ньapps/egov(/egov) — лавлагаа, сувгийн төлөв, лавлагааны түүх. - ДАН ба E-ID (
eidmongolia.mn,developer.gerege.mn) — тоон гарын үсэг, Mobile OTP, банкны SSO, царай танилт. - OAuth2 / OIDC provider (
/.well-known/openid-configuration) — платформын өөрийн бие даасан танилтын сервер.
Mock горим нь зөвхөн хөгжүүлэлтийн орчинд ажиллана.
ENVIRONMENT=productionүед автоматаар унтарна.
2. Системийн бүтцийн диаграм
+-----------------------------------------------------------------------------------+
| Gerege Nexus |
+-----------------------------------------------------------------------------------+
|
+-------------------------+-------------------------+
| |
+-------------------+ +-------------------+
| Next.js 16 Client | | Go 1.26 Backend |
| (App Router) | | (Chi Router) |
+-------------------+ +-------------------+
| |
+-------+-------+ +-------+-------+
| | | |
+---------------+ +---------------+ +---------------+ +---------------+
| AI Copilot UI | | E-ID / DAN | | Cloud-Native | | State Exchange|
| Drawer Panel | | SSO Provider | | Resilience | | (xyp.gerege) |
+---------------+ +---------------+ +---------------+ +---------------+
|
+---------------+
| Shared-Schema |
| PostgreSQL |
+---------------+
3. Хүсэлтийн урсгал
- Дундын middleware — логлолт, panic сэргээлт, load shedding, Prometheus хэмжүүр, аюулгүй байдлын толгойнууд, CORS.
- Танилт — session токеныг cookie эсвэл
Authorization: Bearerтолгойгоос уншиж,sessionsхүснэгтээс шалгана. Токен нь өгөгдлийн санд SHA-256 хэш хэлбэрээр хадгалагдана. - Тенантын контекст —
tenant_idнь Go context-д шингэж, бүх асуулга түүгээр хязгаарлагдана. - Апп хаалт — модулийн маршрут бүр
app_installationsдээрх төлөвөөр шалгагдана; суулгаагүй бол403 Forbidden. - Модулийн handler — бизнес логик, өгөгдлийн сангийн гүйлгээ.
4. Өгөгдлийн загварын үндсэн хүснэгтүүд
| Хүснэгт | Зориулалт |
|---|---|
tenants, users, memberships |
Олон тенант, хэрэглэгчийн харьяалал |
roles, permissions, role_permissions, membership_roles |
RBAC эрхийн загвар |
sessions |
Сервер талын session токен (SHA-256 хэш) |
apps, app_versions, app_installations, installation_events |
Апп стор ба суулгалтын түүх |
contacts, products, warehouses, stock_levels, stock_movements |
Үндсэн бизнес өгөгдөл |
billing_invoices, document_records |
Нэхэмжлэх ба цахим баримт |
oauth2_clients |
OAuth2 client аппликейшнүүд |
Бүх схемийн өөрчлөлт backend/db/migrations/ доторх goose миграцаар хийгдэнэ.
Ажиллах үед DDL гүйцэтгэхийг хориглоно.
5. Архитектурын шийдвэрүүд
| Шийдвэр | Шалтгаан |
|---|---|
| Микросервис биш модуль монолит | Процесс доторх дуудлага нь сүлжээний хоцролтгүй; модулийн хил нь Go интерфейсээр хангагдана |
ORM ашиглахгүй (pgx + гар бичмэл SQL) |
Асуулгыг тодорхой, оновчтой байлгах; далд N+1-ээс сэргийлэх |
| Дундын схем (shared schema) олон тенант | Схем хуулбарлахгүйгээр tenant_id-аар тусгаарлана |
| Каталог файл нь эх сурвалж | Апп нэмэхэд SQL гараар бичихгүй; apps хүснэгт автоматаар синк болно |
| Opaque session токен | JWT-ийн цуцлах боломжгүй байдлаас зайлсхийж, шууд хүчингүй болгоно |
6. Хариуцагчид
- Gerege Systems Development Team (@gerege-systems)
- Gemini AI, Claude AI