Skip to main content

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

ServiceTechnologyPurposeRepository
Backend APINode.js/TypeScriptCore business logiceli-backend-api
HAE APIPython/MLImage analysiseli_hae_api
KPI AnalyticsPython/SQLData analyticseli-kpi
DocumentationDocusaurusThis documentationeli-docs

For Backend Developers

What You Need to Know:

  1. Infrastructure is already set up - Cloud Run services, databases, networking are managed by DevOps
  2. You focus on your code - Push to your service repository, deployment happens automatically
  3. Each service is independent - Backend API, HAE API, KPI, and Docs deploy separately
  4. Standard pattern - All services follow the same Docker → GitHub Actions → Cloud Run flow

Getting Started:

  1. Clone your service repository
  2. Make code changes
  3. Push to GitHub
  4. GitHub Actions automatically builds and deploys
  5. 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