Deployment i Održavanje Čuvarko Servera
Informacije o serveru
- Hosting provajder: OpalStack
- SSH korisničko ime:
vlazic-cuvarko - SSH IP adresa:
opal6.opalstack.com - SSH port:
22 - Putanja do aplikacija:
~/apps - Putanja do logova aplikacija:
~/logs/apps
Aplikacije
U folderu ~/apps nalaze se sve aplikacije a u ~/logs/apps nalaze se logovi svih aplikacija.
Projekat Čuvarko sastoji se od 3 aplikacija, svaka sa svojim dev i production instancama:
Frontend Next.js aplikacija:
- Production instanca:
cuvarko_com - Dev instanca:
dev_cuvarko_com
- Production instanca:
Backend Nest.js aplikacija:
- Production instanca:
api_cuvarko_com - Dev instanca:
dev_api_cuvarko_com
- Production instanca:
Redis instanca za backend keširanje:
- Production instanca:
redis_api_cuvarko_com - Dev instanca:
redis_dev_api_cuvarko_com
- Production instanca:
Deployment
Deployment se vrši za frontend i backend aplikacije putem GitHub Actions-a. Detalji o deploymentu mogu se pronaći unutar repozitorijuma svake aplikacije u folderu .github/workflows.
Nakon što developer izvrši merge na development ili production granu u nekom od projekata, pokreću se testovi. Ako testovi prođu, fajlovi se prenose na OpalStack server, a zatim se vrši restart servera.
Backup
OpalStack podržava periodičnu izradu backupa https://docs.opalstack.com/user-guide/faqs/#what-is-opalstacks-backup-policy, ali se ne treba oslanjati samo na to.
Opalstack retains recent backups as follows:
The 3 most recent daily backups
The 2 most recent weekly backups
The 2 most recent monthly backups
Please contact the Opalstack support team if you need data recovered from your server's backups.
Please include the following information for the items you need recovered:
For files and directories: the original location of the file and/or directory
For databases: the type of database (MariaDB or PostgreSQL) and its name
For all items: the date from which the data should be recovered.
Potrebno je implementirati sopstveni sistem backupa za bazu podataka. Trenutno je planirana implementacija custom backupa za bazu i S3 fajlove u v2 fazi projekta.
Važno je napomenuti da S3 fajlovi nisu hostovani na OpalStack-u, već na DigitalOcean Spaces servisu, i za njih trenutno nemamo backup.
Baza podataka
Projekat Čuvarko koristi PostgreSQL bazu podataka. Imamo tri baze, od koje su dve u upotrebi a treća je u planu kad/ako budemo imali test okruženje:
- Produkciona baza:
api_cuvarko_com@opal6.opalstack.com - Development baza:
dev_api_cuvarko_com@opal6.opalstack.com - Test baza:
test_api_cuvarko_com@opal6.opalstack.com- ova baza trenutno nije vezana za nijednu aplikaciju, pa je mozemo ignorisati
Web UI za upravljanje bazama
OpalStack pruža Web UI za upravljanje bazama podataka, koji omogućava brisanje, promenu lozinke korisnika i druge administrativne funkcionalnosti. Možete pristupiti Web UI za upravljanje bazama putem sledećeg linka: OpalStack Postgres Web UI.
Adminer Web UI za rad sa podacima
Za rad sa podacima u bazama podataka, možete koristiti Adminer Web UI. Evo linkova ka Adminer Web UI za svaku od baza:
Produkciona baza:
Development baza:
Kroz Adminer Web UI možete pristupiti bazi, pregledati podatke, izvršavati upite i vršiti druge manipulacije nad podacima.
Startovanje i zaustavljanje aplikacija
Svaka aplikacija, uključujući i server, ima svoje skripte za startovanje start i zaustavljanje stop. Ove skripte se nalaze u repozitorijumu svake aplikacije na GitHub-u. Redis aplikacija nema skripte za startovanje i zaustavljanje jer se ona automatski startuje i zaustavlja zajedno sa backend aplikacijom.
Sam server preko cronjob-a automatski pokreće start skripte svake aplikacije na svakih 10 minuta. U slučaju pada servera, automatski će se pokušati ponovno pokretanje. Trenutno postoji prostor za unapređenje u ovom procesu.
Manuelno resetovanje i debagovanje aplikacije
Ukoliko je potrebno, može se izvršiti manuelno resetovanje i debagovanje aplikacija na serveru. Evo koraka za to:
SSH konekcija na server: Izvršiti SSH konekciju na server koristeći komandu
ssh vlazic-cuvarko@opal6.opalstack.com. Ovo pretpostavlja da je javni SSH ključ osobe koja se pokušava prijaviti na server dodat u~/.ssh/authorized_keysfajl na serveru.Lociranje aplikacije: U podfolderu
apps, pronađite željenu aplikaciju i uđite u nju. Na primer, za frontend aplikaciju, izvršitecd ~/apps/cuvarko_com.Resetovanje aplikacije: Izvršite skriptu
stopza zaustavljanje aplikacije, a zatim skriptustartza ponovno pokretanje aplikacije.Pregled logova: Logovi aplikacije nalaze se u
~/logs/apps/[ime_aplikacije]/node_error.logi~/logs/apps/[ime_aplikacije]/node_output.log. Možete pregledati ove logove kako biste saznali razlog pada servera. Takođe je u planu integracija Sentry servisa koji će olakšati rad sa server logovima.
Provera dostupnosti aplikacija
Imamo implementiran sistem za proveru dostupnosti aplikacija online koji se oslanja na N8N sistem automatizacije. Ovaj sistem redovno proverava dostupnost frontend-a i backend aplikacija na razvojnom i produkcionom okruženju svakih 15 minuta. Provera se vrši putem HTTP zahteva kako bi se proverio status odgovora sa HTTP kodom 200.
Trenutno, sistem za proveru dostupnosti je hostovan na odvojenom serveru, što znači da će i dalje biti operativan čak i u slučaju pada glavnog servera.
Vladimir Lazić je zadužen za održavanje ovog sistema, pa čim dođe do pada servera, on će biti obavešten putem telegram poruke i moći će da reaguje na vreme.
U budućnosti, možemo razmotriti dodatne funkcionalnosti za ovaj sistem, kao što je obaveštavanje tima o stanju dostupnosti ili implementacija generalne status stranice. Ovo bi omogućilo korisnicima i timu da u svakom trenutku provere da li su svi servisi dostupni. Ova tema će se dalje razmatrati kako bi se unapredila transparentnost i praćenje dostupnosti aplikacija.