0Pricing
SQL Academy · 강의

스키마 변경을 위한 CI(GitHub Actions)

모든 PR에서 임시 데이터베이스를 사용해 GitHub Actions 내부에서 마이그레이션, dbt build, SQLFluff 린트를 실행해보세요.

스키마 변경을 위한 CI(GitHub Actions)은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

SQL에 CI가 필요한 이유

수동 마이그레이션은 서비스 중단을 일으킵니다. CI는 다음을 찾아냅니다.

  • 적용에 실패하는 마이그레이션
  • 기존 테스트를 깨뜨리는 마이그레이션
  • 환경 간 스키마 변경
  • 린트 및 테스트 회귀

견고한 SQL CI 파이프라인

  1. 일시적인 PostgreSQL 실행(Docker / GitHub Actions 서비스)
  2. 처음부터 모든 마이그레이션 적용
  3. 스테이징 스키마 복사본에 새 마이그레이션만 적용
  4. dbt 빌드 / Flyway 테스트 / 애플리케이션 테스트 실행
  5. SQLFluff 린트
  6. 스키마 차이 보고서 생성

GitHub Actions: PostgreSQL 서비스

작업과 함께 PostgreSQL을 실행합니다.

name: ci
on: [pull_request]
jobs:
  test:
    runs-on: ubuntu-latest
    services:
      pg:
        image: postgres:16
        env:
          POSTGRES_PASSWORD: postgres
        ports: ['5432:5432']
        options: >-
          --health-cmd pg_isready
          --health-interval 10s
          --health-timeout 5s
          --health-retries 5
    steps:
      - uses: actions/checkout@v4
      - name: Run migrations
        env:
          DATABASE_URL: postgres://postgres:postgres@localhost:5432/postgres
        run: |
          ./scripts/migrate.sh

린트 단계

SQLFluff 린트를 별도의 작업으로 실행합니다.

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
      - run: pip install sqlfluff && sqlfluff lint models/

CI에서 dbt 빌드

dbt 프로젝트의 경우 다음과 같이 합니다.

- name: dbt deps & build
  run: |
    pip install dbt-postgres
    dbt deps
    dbt build --profiles-dir profiles/ci

스키마 차이

migra(또는 apgdiff, schemahero)는 마이그레이션이 도입하는 변경 사항을 보여줍니다.

pip install migra
migra postgres://baseline postgres://branch > diff.sql
# Comment diff.sql on the PR

순방향 전용 전략

항상 새 마이그레이션을 만들고, 이미 적용된 마이그레이션은 수정하지 않습니다. CI는 마이그레이션 순서가 처음부터 적용되는지 확인합니다.

이전 버전과 호환되는 스키마 변경

각 PR의 스키마는 이전 앱 버전과 호환되어야 하므로 앱과 DB를 어떤 순서로든 배포할 수 있습니다. CI는 NEW 스키마에 대해 OLD 앱 테스트를 실행하여 이를 검증할 수 있습니다.

테스트 데이터 시드

CI의 작은 픽스처 스크립트를 사용하면 현실적인 데이터를 대상으로 테스트를 실행할 수 있습니다.

- name: Seed
  run: psql $DATABASE_URL < seed/dev.sql

마이그레이션 테스트의 잠금 시간 제한

CI 마이그레이션에서 잠금 시간 제한을 설정하여 운영 환경의 동작을 재현합니다.

ALTER DATABASE postgres SET lock_timeout = '5s';

운영 환경 적용

운영 환경 마이그레이션에는 일회성 작업을 사용합니다.

  • 재시도 기능이 있는 마이그레이션 실행기
  • 실패 시 알림
  • 롤백 절차 문서화

데이터베이스 브랜치 패턴

Neon, Supabase 브랜칭과 같은 도구를 사용하면 각 PR마다 운영 환경의 복사본을 만들 수 있습니다. 그런 다음 실제 데이터 복사본을 대상으로 마이그레이션과 앱 테스트를 실행합니다.

복습

SQL은 CI에 포함되어야 합니다.

  • 일시적인 PG 서비스 실행
  • 마이그레이션 적용 + dbt 빌드
  • SQLFluff로 린트
  • 마이그레이션된 스키마를 대상으로 앱 테스트 실행
  • 검토를 위한 스키마 차이 확인

빠른 확인

GitHub Actions 작업에 PostgreSQL 데이터베이스를 추가하는 가장 간단한 방법은 무엇인가요?

자주 묻는 질문

“스키마 변경을 위한 CI(GitHub Actions)” 강의는 무료인가요?

네 — “스키마 변경을 위한 CI(GitHub Actions)” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“스키마 변경을 위한 CI(GitHub Actions)”에서 뭘 배우나요?

모든 PR에서 임시 데이터베이스를 사용해 GitHub Actions 내부에서 마이그레이션, dbt build, SQLFluff 린트를 실행해보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

SQL Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“스키마 변경을 위한 CI(GitHub Actions)” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. DBT (Data Build Tool) 기초
  2. SQLFluff와 린팅
  3. SQL 테스트: dbt tests, Great Expectations
  4. 스키마 변경을 위한 CI(GitHub Actions)
← SQL Academy(으)로 돌아가기