Jak spravovat místo na disku na serveru?

Děláme virtuální tabuli pro učitele, hodně jsem jako primárně frontend vývojář podcenil zájem a jak to server (ne)zvládá. Momentálně řešíme problém s místem na disku. Máme klasickou Digital ocean VPS s diskem 160 GB (maximální, co DO nabízí).

Máme disk zaplněný asi z 95%, prakticky jenom MariaDB databází tabulkami v InnoDB.

Ještě teď bych mohl udělat nějaké optimalizace, ale to už jsem dělal několikrát a dlouhodobě to není úplně udržitelný postup. Někdy prostě narazíme na limit.

Digital ocean nabízí MySQL/MariaDB jako samostatnou službu, co mě ale opravdu překvapuje, že je tento postup naprosto násobně dražší. Droplet, kde můžu mít nainstalovanou databázi + cokoliv stojí pro nás 40 USD vs. ekvivalentní databáze jako služba 240 USD.

A ještě kromě databáze, nabízí DO volume. Chápu, že jde prostě o lépe škálovatelný přídavný disk ke dropletu, ale jaké má výhody/nevýhody oproti disku dropletu a databázi jako službě?

Překvapují mě tak rozdílné ceny u pro mě vlastně velmi podobných služeb, takže tam asi bude nějaký zásadní rozdíl, co mi uniká.

Proto se vás, zkušenějších serverařů ptám, kde je optimální mít umístěnou databázi?

💽 Přímo na VPS?
💽💾 Pokud na VPS, kolik má být na takovém stroji ideálně volného diskového místa?
💽 Na VPS v rámci Docker containeru?
💽 V rámci volume?
💽 Na separátní VPS/Containeru ve stejném regionu?
💽 Jako dedikovanou službu ve stejném regionu?
💽 Klidně kdekoliv, klidně u jiného poskytovatele (např. AWS) pokud jde o Frankfurt/Frankfurt?

PS: Naše databáze má to specifikum, že máme obrovské množství řádků, kde každý obsahuje malinký druh informací (je to event-sourced). A do databáze se zapisuje velmi často a čte se po dávkách (vždy, když si někdo otevře tabuli).

PPS: Těch 150GB databáze je opravdu jenom databáze; mnoho assetů (jako obrázku) máme na AWS S3.

Autor

Pavol Hejný

Milovník technologií, Startuper ve vzdělávání, Programátor a spoluorganizátor mnoha akcí např. CzechFutureTech.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *