Lager Guru - Maintenance Checklist
Регулярни задачи за поддръжка и оптимизация на Lager Guru приложението.
Съдържание
- Ежедневни задачи
- Седмични задачи
- Месечни задачи
- Квартални задачи
- Годишни задачи
- Security Updates
- Dependency Upgrades
- Database Maintenance
- Log Rotation
- Backup Verification
Ежедневни задачи
✅ Health Check
- [ ] Провери health endpoint:
http://lager-guru.internal/health.html - [ ] Провери Docker контейнери:
docker compose ps - [ ] Провери критични логове:
docker compose logs --tail=50
✅ Мониторинг
- [ ] Провери Supabase dashboard за errors
- [ ] Провери application metrics (ако имаш monitoring tool)
- [ ] Провери disk space:
df -h
Автоматизация:
bash
# Cron job за ежедневен health check
0 9 * * * curl -f http://lager-guru.internal/health.html || echo "Health check failed" | mail -s "Lager Guru Alert" admin@company.comСедмични задачи
✅ Security Audit Review
bash
# Провери GitHub Dependabot PRs
gh pr list --label "dependencies"
# Провери npm audit
npm audit --audit-level=moderate
# Провери security advisories
npm audit --json | jq '.vulnerabilities'- [ ] Прегледай Dependabot pull requests
- [ ] Приложи critical security patches
- [ ] Документирай security updates
✅ Backup Integrity
bash
# Провери последния backup
ls -lh backups/lager-guru/ | tail -1
# Тествай restore (опционално, в test environment)
# pg_restore --list backups/lager-guru/lager-guru-YYYYMMDD_HHMMSS.dump- [ ] Провери дали последният backup е успешен
- [ ] Провери backup file size (не трябва да е 0 bytes)
- [ ] Провери backup retention policy
✅ Application Logs Review
bash
# Провери логове за errors
docker compose logs --since 7d | grep -i error | wc -l
# Провери логове за warnings
docker compose logs --since 7d | grep -i warning | wc -l- [ ] Прегледай error логове от последната седмица
- [ ] Провери за необичайни patterns
- [ ] Документирай проблеми и решения
✅ Performance Monitoring
- [ ] Провери response times
- [ ] Провери database query performance
- [ ] Провери memory usage:
docker stats --no-stream
Месечни задачи
✅ Dependency Updates
Автоматични (Dependabot):
- [ ] Прегледай и merge Dependabot PRs
- [ ] Тествай в development environment преди production
- [ ] Документирай breaking changes
Ръчни проверки:
bash
# Провери за outdated packages
npm outdated
# Провери major version updates
npm outdated | grep -E "MAJOR|WANTED"
# Обнови package.json (ако е нужно)
npm update- [ ] Провери за major version updates
- [ ] Прегледай changelogs за breaking changes
- [ ] Планирай upgrade path за major versions
✅ Database Maintenance
Vacuum и Analyze:
sql
-- Провери database size
SELECT pg_size_pretty(pg_database_size('postgres'));
-- Провери таблици с bloat
SELECT
schemaname, tablename,
pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size
FROM pg_tables
WHERE schemaname = 'public'
ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC;
-- Vacuum (автоматично в Supabase, но може да провериш)
VACUUM ANALYZE;
-- Провери статистики
ANALYZE;- [ ] Провери database size growth
- [ ] Провери за table bloat
- [ ] Изпълни VACUUM ANALYZE (ако не е автоматично)
- [ ] Провери index usage
Index Optimization:
sql
-- Провери unused indexes
SELECT
schemaname, tablename, indexname, idx_scan, idx_tup_read, idx_tup_fetch
FROM pg_stat_user_indexes
WHERE idx_scan = 0
ORDER BY pg_relation_size(indexrelid) DESC;
-- Провери slow queries (ако имаш pg_stat_statements)
SELECT query, calls, total_time, mean_time
FROM pg_stat_statements
ORDER BY mean_time DESC
LIMIT 10;✅ Audit Log Review
sql
-- Провери audit logs за последния месец
SELECT
changed_by,
table_name,
action,
COUNT(*) as changes,
MAX(changed_at) as last_change
FROM public.audit_log
WHERE changed_at >= NOW() - INTERVAL '1 month'
GROUP BY changed_by, table_name, action
ORDER BY changes DESC;- [ ] Прегледай audit logs за аномалии
- [ ] Провери за неоторизирани промени
- [ ] Документирай важни промени
- [ ] Archive стари audit logs (ако е необходимо)
✅ Backup Retention
bash
# Провери backup retention
find backups/lager-guru/ -name "*.dump*" -mtime +30 -ls
# Провери backup count
ls -1 backups/lager-guru/ | wc -l- [ ] Провери backup retention policy
- [ ] Изтрий стари backups (според retention policy)
- [ ] Архивирай критични backups (off-site)
✅ SSL/TLS Certificate Renewal (ако имаш)
bash
# Провери certificate expiry
openssl s_client -connect lager-guru.internal:443 -servername lager-guru.internal < /dev/null 2>/dev/null | openssl x509 -noout -dates
# Или чрез certbot
certbot certificates- [ ] Провери certificate expiry date
- [ ] Обнови certificate (ако е необходимо)
- [ ] Тествай HTTPS connection
Квартални задачи
✅ Security Updates
Node.js и Base Images:
bash
# Провери Node.js version
node --version
# Провери Docker base image versions
docker images | grep node
docker images | grep nginx
# Провери за security advisories
npm audit
docker scout cves hashmatrix/lager-guru:latest- [ ] Провери за Node.js security updates
- [ ] Обнови Docker base images (node:18-alpine, nginx:stable-alpine)
- [ ] Провери за OS-level vulnerabilities
- [ ] Приложи security patches
Dependency Security:
bash
# Провери за известни vulnerabilities
npm audit --audit-level=moderate
npm audit fix --dry-run
# Провери за outdated critical dependencies
npm outdated | grep -E "supabase|react|vite"- [ ] Провери за critical vulnerabilities
- [ ] Приложи security patches
- [ ] Тествай след security updates
✅ Performance Optimization
Database Performance:
sql
-- Провери за missing indexes
EXPLAIN ANALYZE SELECT * FROM public.shipments WHERE driver_id = '...';
-- Провери query performance
SELECT
query,
calls,
total_time,
mean_time,
max_time
FROM pg_stat_statements
WHERE mean_time > 100
ORDER BY mean_time DESC
LIMIT 20;- [ ] Прегледай database query performance
- [ ] Оптимизирай бавни заявки
- [ ] Добави indexes където е необходимо
- [ ] Провери за query plan changes
Application Performance:
bash
# Провери bundle size
npm run build
du -sh dist/
# Провери за large dependencies
npx bundle-phobia [package-name]- [ ] Провери bundle size growth
- [ ] Оптимизирай code splitting
- [ ] Премахни неиспользуеми dependencies
- [ ] Провери за performance regressions
✅ Code Quality Review
bash
# Провери lint errors
npm run lint
# Провери type errors
npm run type-check # ако имаш такъв script
# Провери test coverage (ако имаш tests)
npm run test -- --coverage- [ ] Прегледай code quality metrics
- [ ] Рефакторирай legacy code
- [ ] Документирай сложни части
- [ ] Провери code review best practices
✅ Infrastructure Review
Docker и Containerization:
bash
# Провери Docker image size
docker images hashmatrix/lager-guru
# Провери за dangling images
docker images -f "dangling=true"
# Провери disk usage
docker system df- [ ] Оптимизирай Docker image size
- [ ] Изчисти dangling images и containers
- [ ] Провери Docker resource limits
- [ ] Обнови Docker Compose version (ако е необходимо)
Network и Security:
bash
# Провери firewall rules
sudo ufw status verbose
# Провери Nginx configuration
nginx -t # ако имаш достъп
# Провери SSL/TLS configuration
sslscan lager-guru.internal- [ ] Прегледай firewall rules
- [ ] Провери Nginx security headers
- [ ] Тествай SSL/TLS configuration
- [ ] Провери за security misconfigurations
Годишни задачи
✅ Major Version Upgrades
Node.js:
bash
# Провери текуща версия
node --version
# Провери LTS schedule
# https://nodejs.org/en/about/releases/- [ ] Планирай upgrade към най-новия LTS
- [ ] Тествай в development environment
- [ ] Документирай breaking changes
- [ ] Планирай migration window
Framework Updates:
- [ ] React major version upgrade
- [ ] Vite major version upgrade
- [ ] Supabase SDK major version upgrade
- [ ] Други critical dependencies
✅ Architecture Review
- [ ] Прегледай application architecture
- [ ] Идентифицирай technical debt
- [ ] Планирай refactoring initiatives
- [ ] Провери alignment с best practices
✅ Disaster Recovery Test
bash
# Тествай backup restore процес
# 1. Създай тестов database
# 2. Restore от production backup
# 3. Провери data integrity
# 4. Тествай application functionality- [ ] Тествай backup restore процес
- [ ] Документирай recovery procedures
- [ ] Провери backup retention policy
- [ ] Тествай failover procedures (ако имаш)
Security Updates
Automated Security Scanning
GitHub Dependabot:
- Автоматично проверява за vulnerabilities
- Създава PRs за security updates
- Конфигурация:
.github/dependabot.yml
npm audit:
bash
# Провери за vulnerabilities
npm audit
# Fix автоматично (ако е безопасно)
npm audit fix
# Fix с breaking changes
npm audit fix --force # внимавай!Docker Security:
bash
# Провери Docker image за vulnerabilities
docker scout cves hashmatrix/lager-guru:latest
# Или с Trivy
trivy image hashmatrix/lager-guru:latestSecurity Patch Priority
- Critical - Приложи веднага
- High - Приложи в рамките на 1 седмица
- Moderate - Приложи в рамките на 1 месец
- Low - Приложи при следващото планирано update
Dependency Upgrades
Upgrade Strategy
Minor/Patch Updates:
- Автоматично чрез Dependabot
- Тествай в development
- Merge в production
Major Updates:
- Ръчен преглед на changelog
- Тествай в отделен branch
- Планирай migration window
- Документирай breaking changes
Upgrade Checklist
- [ ] Прегледай changelog
- [ ] Провери за breaking changes
- [ ] Тествай в development environment
- [ ] Прегледай code за deprecated APIs
- [ ] Обнови документация
- [ ] Deploy в production
- [ ] Мониторирай за errors
Database Maintenance
Regular Tasks
Vacuum:
sql
-- Автоматично в Supabase, но може да провериш настройките
SHOW autovacuum;Analyze:
sql
-- Обновява статистики за query planner
ANALYZE public.shipments;
ANALYZE public.zones;
ANALYZE public.profiles;Index Maintenance:
sql
-- Провери за unused indexes
SELECT * FROM pg_stat_user_indexes WHERE idx_scan = 0;
-- Rebuild indexes (ако е необходимо)
REINDEX TABLE public.shipments;Database Optimization
Query Optimization:
- Прегледай EXPLAIN ANALYZE за бавни заявки
- Добави indexes където е необходимо
- Оптимизирай JOIN операции
- Провери за N+1 query problems
Connection Pooling:
- Провери connection pool settings в Supabase
- Оптимизирай connection pool size
- Мониторирай connection usage
Log Rotation
Docker Logs
bash
# Настрой Docker log rotation
# В docker-compose.yml:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"Application Logs
Nginx Logs:
bash
# Настрой log rotation за Nginx
# /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0640 www-data adm
sharedscripts
postrotate
[ -f /var/run/nginx.pid ] && kill -USR1 `cat /var/run/nginx.pid`
endscript
}Audit Logs
sql
-- Archive стари audit logs (ако е необходимо)
CREATE TABLE IF NOT EXISTS public.audit_log_archive (LIKE public.audit_log);
INSERT INTO public.audit_log_archive
SELECT * FROM public.audit_log
WHERE changed_at < NOW() - INTERVAL '1 year';
DELETE FROM public.audit_log
WHERE changed_at < NOW() - INTERVAL '1 year';Backup Verification
Backup Testing
bash
# Тествай backup restore (в test environment)
pg_restore --list backups/lager-guru/lager-guru-YYYYMMDD_HHMMSS.dump
# Провери backup integrity
pg_restore --schema-only backups/lager-guru/lager-guru-YYYYMMDD_HHMMSS.dump | head -20Backup Retention
- Daily backups: Запази последните 7 дни
- Weekly backups: Запази последните 4 седмици
- Monthly backups: Запази последните 12 месеца
- Yearly backups: Запази за 7 години
Off-site Backups
- [ ] Регулярно копирай backups на off-site location
- [ ] Тествай restore от off-site backups
- [ ] Документирай backup locations
- [ ] Провери backup encryption (ако е необходимо)
Автоматизация
Cron Jobs
bash
# Добави в crontab: crontab -e
# Ежедневен health check
0 9 * * * curl -f http://lager-guru.internal/health.html || echo "Health check failed" | mail -s "Lager Guru Alert" admin@company.com
# Седмичен backup
0 2 * * 0 /path/to/scripts/backup-db.sh
# Месечен database maintenance
0 3 1 * * psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "VACUUM ANALYZE;"GitHub Actions
Вече имаш автоматичен CI/CD pipeline (.github/workflows/ci.yml):
- Build при всяко push
- Lint проверки
- Security audit
- Artifact storage
Последна актуализация: 2025-11-05
Следващ преглед: [Дата на следващия преглед]