Skip to content

Lager Guru - Maintenance Checklist

Регулярни задачи за поддръжка и оптимизация на Lager Guru приложението.

Съдържание

Ежедневни задачи

✅ 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:latest

Security Patch Priority

  1. Critical - Приложи веднага
  2. High - Приложи в рамките на 1 седмица
  3. Moderate - Приложи в рамките на 1 месец
  4. Low - Приложи при следващото планирано update

Dependency Upgrades

Upgrade Strategy

  1. Minor/Patch Updates:

    • Автоматично чрез Dependabot
    • Тествай в development
    • Merge в production
  2. 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 -20

Backup 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
Следващ преглед: [Дата на следващия преглед]

Released under Commercial License