Üdv,
A Cloud Run-ban ha kérés érkezik, akkor indít egy konténert egy adott image-ből (Container Registry -> Images). Adott idő után megszünteti a konténert. (Gondolom: dokcer run -rm ....)
Teszt jelleggel használom, de jó volna hogy a konténer megtartsa az állapotát, pontosabban az adatbázis ne vesszen el (python django sqlite3).
Van erre elegáns megoldás? Vagy mit kellene beállítani?
- 306 megtekintés
Hozzászólások
Amire neked szükséged van az szerintem egy persistent volume, amit fel tudsz csatolni minden konténer induláskor, erre gondolok: https://cloud.google.com/run/docs/tutorials/network-filesystems-filesto…
- A hozzászóláshoz be kell jelentkezni
Nekem is ez jutott elsőre eszembe, de mi van, ha több Cloud Run instance fut?
- A hozzászóláshoz be kell jelentkezni
Hogy érted?
- A hozzászóláshoz be kell jelentkezni
Feltételezem, nem minden instance-nak van egy saját sqlite adatbázisa (saját adatokkal), hanem az alkalmazásnak van egy db, és ezt kellene minden instance-ból elérni. Cloud Run esetében az instance-ok száma minimum 0-5 egy időben, sípol is a webes GUI, ha ötnél kisebb max párhuzamos instance-t akarsz engedélyezni. Persze ettől még csinálhatsz 0-1 instance-ban futó appot, és akokr elvileg nem lesz gond, de akkor a skálázhatóságnak lőttek.
Vagy nem értem, mi a kérdés. :)
- A hozzászóláshoz be kell jelentkezni
de mi van, ha több Cloud Run instance fut?
Akkor több ilyenre van szükséged.
És ha felmerül a gondolat, hogy "nade ugyanazt az egy darab valamit kéne több ilyenből elérni", akkor nekiállsz, és elkezdesz valami értelmes architektúrát a szoftver alá álmodni.
- A hozzászóláshoz be kell jelentkezni
És ha felmerül a gondolat
Szerintem felmerül, de majd OP megmondja. :)
Ezek eldobható konténerek, adott esetben azt sem tudod kívülről, hány db fut belőle. Ha mondjuk eddig max 5 konténer futott egyszerre, létrehozták az öt adatbázist, aztán leskálázódik nullára, majd jön egy request, és létrejön 1 db konténer, az ötből melyik sqlite DB-vel kötöd össze? Mi lenne az a feladat, amire ez a legjobb megoldás? :)
szerk: ennyi infóból nekem még az sem egyértelmű, hogy sqlite-ra van-e egyáltalán szükség
- A hozzászóláshoz be kell jelentkezni
Ennyi infóból nekem az egyértelmű, hogy ha nem 1 példányban akar ez a kóceráj futni, akkor úgy kb. 99.99%, hogy nem jó az architektúra.
- A hozzászóláshoz be kell jelentkezni
Sajnos limitált a gyakorlati tapasztalatom a FileStore-ral, de ha jól értelmezem a dokumentációt, lehetőséged van több konténerből is használni konkurensen. Persze azt meg kellene oldalni, hogy alkalmazásoldalon ez ne okozzon problémát.
- A hozzászóláshoz be kell jelentkezni
SQlite nem támogatja a hálózatos működést. Mi a feladat pontosan? :)
- A hozzászóláshoz be kell jelentkezni
Cloud Run-ban egy sqlite db perzisztens lehet? Ha már a konténer megszűnik.
- A hozzászóláshoz be kell jelentkezni
Lehet. De minek? Miért pont úgy? Mi a cél?
- A hozzászóláshoz be kell jelentkezni
Mi a cél?
+1
Egyelőre annyit tudok, hogy egy gyárilag stateless-nek kitalált eszközt akarunk statefullá tenni, utólag. :) Nem lehetetlen, de jó lenne tudni, milyen problémára keressük a megoldást.
lásd még: XY problem
- A hozzászóláshoz be kell jelentkezni
Ahogy írtam tesztelem a dolgot.
Ha stateless a szolgáltatás, akkor bocsi.
- A hozzászóláshoz be kell jelentkezni
Jó, de mi a feladat? Ha nem titkos. :)
Példa: nekem van olyan Cloud Run appom, aminek kell konfig adatbázis, ami esetemben egy sima Firestore object, amit induláskor betölt a cucc. Ez azért kellett, mert ugyanazzal a konténer image-dzsel több hasonló, de nem ugyanolyan appot (nem instance-t!) is létre akartam hozni. Lehet, hogy van rá elegánsabb módszer, de pár sorból megvan, kb. tíz fillér egy hónapra, és nem kell foglalkozni semmi olyannal, ami a networkös sqlite-nál probléma.
- A hozzászóláshoz be kell jelentkezni
Egy demo python, django, sqlite app (adatok vannak DB-ben, amit meg szeretnénk jeleníteni).
A tanulóknak akarom bemutatni egy egyszerű appon keresztül (költségek nélkül), hogyan fejlesztünk, üzemeltetünk (devops). Ez most egy kicsi szelete az egésznek, de így talán érdekesebb nekik, meg nyilván életszerűbb.
- A hozzászóláshoz be kell jelentkezni
Ja, így már érthető.
Akkor vagy azt csinálnám, hogy egy minta adatbázis eleve benne lenne a konténerben, amit aztán lehet query-zni és szerkesztgetni az appon keresztül, de akkor az instance-szal együtt a változtatások mennek a levesbe. Ha életszagúbb példát akarsz, akkor GCP-ben vannak hosted adatbázisok, érdemesebb lehet inkább azt piszkálni (devops szempontból talán relevánsabb is, mint a sqlite), ha nem futtatod éjjel nappal, az is centekből megvan kb.
- A hozzászóláshoz be kell jelentkezni
Igen, maradt az első verzió. Később finomítunk rajta.
- A hozzászóláshoz be kell jelentkezni