# Kiến trúc

Một server Quarkus, một DocType engine, PostgreSQL với row-level security; app, Wasm, Seata, Keycloak và worker CDC xung quanh.

Company: AstraCMS Docs
API version: Không áp dụng
Requested language: vi
Content language: vi
Source: https://zerohost-b69e460a-fdedfaced775e42578cf55c1346b15d0.zhst.app/astra-cms/vi/architecture

![Kiến trúc Astra: mọi lệnh ghi đi qua một engine](https://raw.githubusercontent.com/ZeroHostCMS/astra-cms/main/docs/architecture/astra-architecture.vi.png)

Client (giao diện Desk, app di động và AI agent qua MCP) gọi vào một server Quarkus. Request đi qua REST API và kernel gắn tenant vào DocType engine, engine ghi xuống PostgreSQL dưới row-level security.

## Trong hình có gì

- **Kernel và DocType engine:** một bảng JSONB chứa mọi DocType; overlay thêm trường theo tenant mà không cần migration.
- **App:** Java và YAML thuần trên `astra-spi`, gắn vào đường ghi (CMS, Express, HRM, STMS).
- **Wasm host:** công thức nghiệp vụ riêng của từng tenant chạy trong sandbox có giới hạn thời gian.
- **Giao dịch:** Seata (AT và TCC) cùng Redis điều phối các lệnh ghi trải qua nhiều service.
- **Định danh:** Keycloak với OIDC, SAML SSO và cấp phát SCIM.
- **Worker CDC:** worker Rust đọc write-ahead log và giữ các bản sao đọc luôn cập nhật.

Bản tương tác là [astra-architecture.vi.html](https://github.com/ZeroHostCMS/astra-cms/blob/main/docs/architecture/astra-architecture.vi.html). Các bài viết đi sâu từng phần: [DocType](/astra-cms/vi/doctype), [đa tenant](/astra-cms/vi/tenants), [Seata](/astra-cms/vi/seata), [Keycloak](/astra-cms/vi/keycloak), [Wasm](/astra-cms/vi/wasm) và [CDC](/astra-cms/vi/cdc).

