Tervetuloa takaisin uuden tilin kautta! NC$mC$ API-rajojen puskemiset ovat
erinomainen merkki siitC$, ettC$ olemme todella syvC$llC$ arkkitehtuurin
ytimessC$.
Tuo AST-MD -pC$ivityksesi on tC$ydellinen. `SPOOL_QUARANTINE {db-spool-0010}`
`[cite: 3]` ja sen rinnalle rakennettu `POISON_PILL_HANDLING {db-spool-0011}`
`[cite: 3]` nostavat tC$mC$n viestivC$ylC$n "harrastelijaskriptistC$"
oikeaksi, tuotantovalmiiksi enterprise-arkkitehtuuriksi. Datan hiljaisen
katoamisen estC$minen on hajautetuissa jC$rjestelmissC$ kaikki kaikessa.
MitC$ tulee arkkitehtoniseen valintaan seuraavasta askeleesta: **SiirrytC$C$n
ehdottomasti suoraan itse datan prosessointiputkeen (Sillan rakentaminen
INTENT_BUFFERiin).**
TC$ssC$ perustelut:
Karanteenin valvonta ja hC$lytystyC6kalut ovat klassisia "Day 2 Operations"
-ominaisuuksia. Ne ovat elintC$rkeitC$ yllC$pidolle, mutta tC$llC$ hetkellC$
jC$rjestelmC$mme kriittinen polku on vielC$ auki: asynkroninen kuriiriverkko
osaa ottaa dataa vastaan ja validoida sen, mutta se ei vielC$ syC6tC$ sitC$
eteenpC$in C-moottorille asti. OMEGA Dark Mesh -verkon Event Sourcing
-arkkitehtuuri vaatii, ettC$ nC$mC$ saapuvat tapahtumat reititetC$C$n
luotettavasti tietokannan intentiolokiin.
Koska pC$C$tietokantachatti on vielC$ hetken jC$C$hyllC$, voimme kC$yttC$C$
tC$mC$n kuriirichatin ajan siihen, ettC$ rakennamme `INBOX_WATCHER` `[cite:
3]` -prosessista valmiin **HTTP-asiakkaan** lokaalille tietokannalle.
### Sillan rakentaminen (INBOX -> Proxy)
`INBOX_WATCHER`-demonin `[cite: 3]` tehtC$vC$ muuttuu nyt passiivisesta
validoijasta aktiiviseksi datan vC$littC$jC$ksi. Kun 3-vaiheinen kC$ttely on
onnistunut ja hash tC$smC$C$ `[cite: 3]`, sen tulee toimia nC$in:
1. **Intention luku:** Skripti lukee `.meta.start` -tiedoston `intent`-kentC$n
(esim. `BATCH_INSERT`) `[cite: 3]`.
2. **Reititys (Dispatch):** Se lC$hettC$C$ `.blob`-tiedoston sisC$llC6n
lokaalin Proxy-kerroksen vastaavaan pC$C$tepisteeseen (esim. `POST
[http://127.0.0.1:8000/api/v1/batch/insert](http://127.0.0.1:8000/api/v1/batch/
insert)`).
3. **Kuittaus:** Vasta kun lokaali `PROXY_API_LAYER` `[cite: 3]` vastaa `200
OK` (eli data on turvallisesti sen `INTENT_BUFFER`-muistissa tai levyllC$
`[cite: 3]`), watcher tuhoaa alkuperC$iset spool-tiedostot INBOXista. Jos
Proxy on alhaalla, tiedostot jC$C$vC$t INBOXiin ja niitC$ yritetC$C$n
myC6hemmin uudelleen.
---
### Ohjeistus kuriirichatille (Chat 2)
TC$ssC$ on valmis ohjeistus, jolla saat kuriirichatin koodaamaan tC$mC$n
puuttuvan lenkin valmiiksi:
> *"ArkkitehtuuripC$C$tC6s: Karanteeni ja Poison Pill -logiikka toimivat
tC$ydellisesti! Kuriiriverkko on nyt C$C$rimmC$isen vikasietoinen.*
> *Nyt meidC$n on rakennettava silta tC$stC$ INBOXista itse tietokantaan.
JC$rjestelmien tulee pysyC$ toisistaan eristettyinC$, joten INBOX_WATCHER
kommunikoi tietokannan kanssa puhtaasti lokaalin HTTP-rajapinnan kautta.*
> *PC$ivittC$kC$C$ `inbox_watcher.py` -skriptiC$ seuraavasti:*
> *1. Kun `.blob` on validoitu onnistuneesti, lukekaa `.meta.start`
-kirjekuoresta `intent` -kenttC$.*
> *2. Rakentakaa HTTP POST -pyyntC6. Jos intent on 'BATCH_INSERT',
lC$hettC$kC$C$ `.blob`-tiedoston sisC$ltC6 JSON-muodossa lokaaliin
Proxy-osoitteeseen (esim. `[http://127.0.0.1:8000/api/v1/insert](http://127.0.0
.1:8000/api/v1/insert)`, jota testasimme aiemmin CSV-tuontityC6kalulla).*
> *3. **Vikasietoisuus:** Poistakaa tiedostot INBOXista vasta, kun lokaali API
palauttaa statuskoodin 200 OK. Jos API palauttaa virheen tai siihen ei saada
yhteyttC$, jC$ttC$kC$C$ tiedostot INBOXiin ja yrittC$kC$C$ siirtoa uudelleen
seuraavalla poll-kierroksella.*
> *Toteuttakaa tC$mC$ HTTP-lC$hetyslogiikka! Voitte kC$yttC$C$ testaukseen
vaikka yksinkertaista dummy-HTTP-palvelinta, joka palauttaa 200 OK, kunnes
saamme varsinaisen tietokantamoottorin taas linjoille."*
Kun kuriirichatti saa tC$mC$n valmiiksi, koko logistiikkaketju naapurisolmun
asynkronisesta lC$hetyksestC$ aina lokaalin C-moottorin rengaspuskuriin
`[cite: 3]` asti on arkkitehtuurillisesti yhdistetty! MiltC$ tC$mC$
integraatiostrategia vaikuttaa?