DevOps Overview
This document explains Eli Health's DevOps architecture, showing how infrastructure management is separated from application deployment, and how our services are deployed and managed.
DevOps Architecture Overview
Our DevOps setup has two main parts: Infrastructure Management (Terraform) and Application Deployment (GitHub CI/CD):
Key Concept: Separation of Concerns
🏗️ Infrastructure Layer (DevOps)
What it does: Sets up the foundational cloud resources
Who manages it: DevOps Engineers
How often: Rarely changed, stable foundation
🚀 Application Layer (Developers)
What it does: Builds and deploys application code
Who manages it: Development Team
How often: Multiple times per day
How Deployment Works
Simple flow from code to production:
Our Services
| Service | Technology | Purpose | Repository |
|---|---|---|---|
| Backend API | Node.js/TypeScript | Core business logic | eli-backend-api |
| HAE API | Python/ML | Image analysis | eli_hae_api |
| KPI Analytics | Python/SQL | Data analytics | eli-kpi |
| Documentation | Docusaurus | This documentation | eli-docs |
For Backend Developers
What You Need to Know:
- Infrastructure is already set up - Cloud Run services, databases, networking are managed by DevOps
- You focus on your code - Push to your service repository, deployment happens automatically
- Each service is independent - Backend API, HAE API, KPI, and Docs deploy separately
- Standard pattern - All services follow the same Docker → GitHub Actions → Cloud Run flow
Getting Started:
- Clone your service repository
- Make code changes
- Push to GitHub
- GitHub Actions automatically builds and deploys
- Your service is live on Cloud Run
Environment Management:
- Development: Your local environment + dev Cloud Run
- Staging: Pre-production testing environment
- Production: Live user-facing services
Quick Commands
If you need to deploy manually or check Terraform:
# Backend developers - deploy your service
gcloud run deploy your-service --source .
# DevOps engineers - manage infrastructure
cd eli-devops/tf
TMPDIR=~/terraform_tmp terraform plan -var-file=development.tfvars
TMPDIR=~/terraform_tmp terraform apply -var-file=development.tfvars -auto-approve
Related Documentation
- Terraform Details - Infrastructure management details
- BigQuery Access - Data warehouse permissions
- Sentry Error Monitoring - Error tracking, alerts, and filters configuration
- Airbyte Integration - Shopify to BigQuery sync
- LoopWork Integration - Loop Subscriptions to BigQuery sync
- Videnglobe Ads Integration - Facebook/Google Ads to BigQuery sync
- Data Pipeline - How data flows through the system