TC$ssC$ on valmis MESH_MANIFEST.md -tiedosto, jonka voit tallentaa jokaisen
uuden Mesh-projektisi juureen. Se toimii tiiviistC$nC$ ja rajoittamattomana
ohjeena tuleville tekoC$lychateteille ja kehittC$jille.
MESH_MANIFEST.md (Zero Trust Mesh Architecture)
TC$mC$ tiedosto mC$C$rittC$C$ projektin arkkitehtuurin, tietoturvasC$C$nnC6t
ja viestintC$protokollat. Kaikki uusi koodi ja kehitys on sopeutettava nC$ihin
sC$C$ntC6ihin.
1. Arkkitehtuurin Perusperiaatteet (DMZ-malli)
* Zero Trust & Eristys: Julkisen verkon ja sisC$verkon vC$lillC$ ei ole
suoria HTTP/REST-yhteyksiC$. Liiketoimintalogiikka ja tietokannat on eristetty
syvC$verkkoon (Deep Nodes), joilla ei ole suoraan julkista IP-osoitetta tai
pC$C$syC$ internetiin.
* Edge Gateway: Julkisella tai VPN-reunalla sijaitseva solmu (AlphaGateway)
toimii sokeana portinvartijana. Se tarjoilee staattiset tiedostot
(public_html/) read-only-tilassa ja vC$littC$C$ WebSocket-liikenteen sokeasti
eteenpC$in Mesh-runkoon.
* Resilienssi & Skalautuvuus: Solmut lC6ytC$vC$t toisensa UDP-autodiscoveryn
ja Gossip-protokollan kautta. Backend-palveluita voi skaalata
horisontaalisesti kC$ynnistC$mC$llC$ uusia prosesseja ilman kuormantasaajien
konfigurointia.
2. ViestintC$protokolla & Formaatti
Kaikki verkon yli kulkeva raakadata on minimoitu JSON-taulukko, joka noudattaa
seuraavaa standardia:
[Version, Type, MsgId, SenderId, TargetId, TTL, Tags, Payload]
* TargetId = null: Merkitsee Broadcast-viestiC$ (Flooding koko verkkoon).
Reitittimet pudottavat TTL-arvoa ja vC$littC$vC$t viestiC$ eteenpC$in.
* Deduplikointi: Jokaisella viestillC$ on uniikki MsgId, jota solmut
muistavat vC$liaikaisesti ikuisten silmukoiden estC$miseksi.
3. Frontend-kehityksen SC$C$nnC6t (Selain)
* Ei suoria HTTP-kutsuja: Selaimessa ei kC$ytetC$ perinteistC$
fetch()-metodia sisC$verkon osoitteisiin.
* meshFetch -adapteri: Kaikki API-kutsut on toteutettava ladataan tarvittavan
mesh-fetch.js -kirjaston kautta. Se tunneloi pyynnC6t WebSocketin yli
Mesh-verkkoon.
const res = await meshFetch('endpoint_nimi', {
method: 'POST',
body: { data: 'arvo' }
});
const data = await res.json();
* Tiedostonsiirto: Tiedostot kC$sitellC$C$n client-puolella Base64 (Data URL)
-muodossa ja vC$litetC$C$n JSON-payloadin sisC$llC$.
4. Backend-kehityksen SC$C$nnC6t (Node.js)
* Ei Express.js / HTTP-palvelimia: BackendeissC$ ei saa avata perinteisiC$
HTTP-portteja tai kC$yttC$C$ ExpressiC$/Fastifya.
* MeshRPC-abstraktio: Backend toimii P2P-solmuna, joka lukee verkon
postilaatikkoa (node.inbox) ja rekisterC6i RPC-endpointit MeshRPC-luokan
kautta:
import { HybridMeshNode } from './mesh.js';
import { MeshRPC } from './rpc.js';
const node = new HybridMeshNode("ServiceName");
const rpc = new MeshRPC(node);
rpc.on('endpoint_nimi', async (body, senderId) => {
// Liiketoimintalogiikka tC$hC$n
return { success: true, result: ... };
});
async function main() {
await node.start();
for await (const msg of node.inbox) {
await rpc.process(msg);
}
}
main();
* VirheenkC$sittely: Palvelinpuolella heitetyt virheet (throw new Error(...))
siepataan automaattisesti ja vC$litetC$C$n kysyjC$lle 500-virheenC$.
Onnistuneet palautukset (return data) lC$htevC$t takaisin 200 OK -statuksella.