Мультитенантра & идемпотентра
AiHummer мультитенантуп: акызаҵәык агейтуэй акырынтә ауаажәларатә ҭыԥ ималоит акызаҵәык адырраҭарадза аҟынтә рдыррақәа реихазҵаны. Ҩба амеханизм ари ишәарҭарада ауеит — Postgres Row-Level Security (RLS) аԥхьара/аҩра аизырхара рзы, насгьы идемпотентратә услар аретрайқәеи ахаҿ аиҭашьақәыргылареи аамҭала иҟоу аалырҟьара ҩынтә рымуртә.
Атенант аизырхара Row-Level Security ала
Аизырхара адырраҭарадза аҿы ишьақәгылоуп, аппликациа акод аҿы мацара акәым. AiHummer
аазҵаарақәа иауеит иазааны идоу Postgres-роль (aihummer_app) ала, уи RLS
аполитикақәа иадхалоуп, уи аҟынтә адырраҭарадза ахаҭа иаԥхоит иаалоу атенант
изтәым асрокқәа.
RLS опт-ин-уп. Уи иаунакыруеит агейтуэй аҩбатәи адхалара ажәакаҵәык иазааны идоу ароль азы:
# gateway.env
# Owner pool — runs migrations and privileged maintenance
AIHUMMER_DATABASE_URL=postgres://aihummer:***@localhost:5432/aihummer?sslmode=disable
# Restricted role — activates RLS for normal request traffic
AIHUMMER_DB_APP_URL=postgres://aihummer_app:***@localhost:5432/aihummer?sslmode=disable
[!NOTE] Хост-нативла аинсталлерқәа рзы аинсталлер
AIHUMMER_DB_APP_URLавтоматла иауаԥҟоит, уи аҟынтә RLS адефолтла иаауеит астандарттә деплоймент аҿы. Авариабль ушьымҭакуа агейтуэй ауонер-пул мацара аҿы иауеит насгьы RLS аактивтахом.
Атенант-хатә скопингра
Иазааны идоу ароль аҩныҟа, иаауазаалак аазҵаара уи атенант ахь ископингроуп: агейтуэй
иаалоу атенант аконтекст адхалара аҿы иауаԥҟоит уи RLS аполитикақәа
ииашоу ауаажәларатә ҭыԥ ахь иршьартә. WHERE tenant_id = … афильтрқәа зегьы рҿы напыла иаԥырмҵаӡом;
аполитика уи централла ишьақәнаргылоит, уи аанарԥшуеит иаԥырԥҟьаз афильтр егьырҭ
атенант асрокқәа аалырҟьартә алшара ишамоу.
Асистема / абайпас режим
Аусура ҩаԥхьараны кросс-тенантуп — азхылаԥшратә аусуҩқәа, аиҭархиаҩқәеи аусура аусқәеи зегьы аинстанс ала иауеит. Ари иауеит асистема / абайпас режим аҿы рыхәҭоу рбартә. Абайпас иаазааны идоу ауаажәларатә аусуҩқәа рзы иаҟоуп, аазҵаара-обработка апаҭ рзы мап.
[!WARNING] Амиграциақәа зегьы ауонер-пул аҿы иауеит, азакәызаалак иазааны идоу ароль ала мап. Ауонер адхалара амалра ималоит асхема аиԥшахара ацны RLS аполитикақәа рыруртә; иазааны идоу ароль ҩаԥхьараны имам. Ҩба адхалара асрокқәа хазырхазны иаанкыл насгьы
aihummer_appароль уи иахәҭоу мацара иаҭ.
Идемпотентратә аалырҟьарақәа
Ахаҿ ҩаԥхьаратә аалырҟьарақәа иаԥиҵартә алшоит: ашәҟәы аршьҭра, ажәабжь аканал ахь иаҭакыҵны аршьҭра. Ахаҿ иеиҭагар — иуланахо аиашамра иабзоураны, ма агейтуэй ахаҿ агьежьаҿы иаиҭагаз насгьы аиҭашьақәыргылара иеиҭанарԥшуа — убри аалырҟьарақәа ҩынтә рымуртә. AiHummer ари иқәнаршәоит ҩба еицныҟәало ахәҭақәа рацны.
Resume-стабилтә ledger-аҭыӡҭыԥ
Иаауазаалак аалырҟьара иануп resume-стабилтә ledger-аҭыӡҭыԥ: ахаҿ аҟынтә детерминистла иҵыху аҭыӡҭыԥ, уи аҟынтә убри ахаҿ аиҭаԥшра убри акызаҵәык аҭыӡҭыԥ иҟанаҵоит, иҿыцу аҟынтә мап. Ledger игәынкьалоит аҭыӡҭыԥқәа иарбаны иаусҟаҵахьоу.
Аалырҟьара абарьер
Аалырҟьарак абас ашәҟәы ма аканал-аршьҭра иануу ашьҭахь, уи иахьыло аалырҟьара абарьер ledger иаԥшуа. Ари аҭыӡҭыԥ иаусҟаҵахьазар, абарьер иаԥырҟьоит насгьы аалырҟьара иаԥхоит; иаусырмҟаҵацзар, аалырҟьара иауеит насгьы аҭыӡҭыԥ иануп.
side-effect requested
└─▶ compute resume-stable ledger key
└─▶ barrier: key already committed?
├─ yes ─▶ skip (no double-send)
└─ no ─▶ perform effect ─▶ commit key
Алҵшәа ауп exactly-once адәныҟатәи аҿагылашьа, ашьҭаҵара иаҩныҟа at-least-once иаауазаалагьы. Аретрайқәа ишьақәгыларала ишәарҭарам, убри ауп ахаҿ аиҭашьақәыргылара (ахь(уба Ашьҭаҵара, outbox & аиҭашьақәыргылара) иаԥырҟьаз ахаҿ иеиҭанарԥшартә зыршаахо аиашьара акызаҵәык амеил ма акызаҵәык аҭак ҩынтә иоумартә.
[!TIP] Убри ауп AiHummer иқәныршәоу ашьҭаҵареи автоматтә ахаҿ аиҭашьақәыргылареи иадуу ажәабжьқәа рҩынтәтәра ашәарҭарада иаалартә зыршаахо — идемпотентра ауп ашьҭаҵара аиқәыршәарақәа изшьаԥгылоу абаза.
Аҩаџьара иуцо
- Ахаҿ зныҟәгало арантайм: Агейтуэй & ахаҿ адвигатель.
- Аҭакқәа ишԥаиҭало exactly-once: Ашьҭаҵара, outbox & аиҭашьақәыргылара.