정지용
기술스택 목록
도구

Atlas

프로젝트 1에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.

이 기술은 무엇인가요?

데이터베이스 스키마를 코드로 관리하고 마이그레이션을 자동화하는 오픈소스 도구

Atlas는 데이터베이스 스키마를 선언적으로 정의하고, 변경 사항을 안전하게 적용할 수 있도록 돕는 스키마 마이그레이션 도구입니다. HCL이나 SQL로 원하는 스키마 상태를 선언하면, Atlas가 현재 데이터베이스와 비교해 필요한 마이그레이션 SQL을 자동으로 생성합니다. Terraform처럼 infrastructure-as-code 철학을 데이터베이스 스키마 관리에 적용한 도구로, 스키마 변경의 버전 관리와 배포 자동화를 지원합니다.

이럴 때 사용합니다

  • 여러 환경에 걸쳐 데이터베이스 스키마를 일관되게 배포하고 싶을 때
  • 스키마 변경 사항을 코드 리뷰와 버전 관리 대상으로 만들고 싶을 때
  • 수동 ALTER 문 작성 실수를 줄이고 마이그레이션을 자동화하고 싶을 때
  • CI/CD 파이프라인에서 스키마 변경을 자동으로 검증하고 적용하고 싶을 때

핵심 개념

Declarative Schema
최종 스키마 상태를 HCL이나 SQL로 선언하면, Atlas가 현재 상태와 비교해 필요한 변경 작업을 자동으로 계산합니다.
Schema Inspection
실행 중인 데이터베이스에 연결해 현재 스키마 구조를 읽어오고 분석하는 기능입니다.
Migration Directory
스키마 변경 히스토리를 순서대로 담은 마이그레이션 파일들의 모음으로, 버전 관리 시스템에 커밋해 변경 이력을 추적합니다.
Diff & Apply
선언한 스키마와 실제 데이터베이스를 비교(diff)해 차이를 파악하고, 그 차이를 반영(apply)하는 핵심 워크플로우입니다.
HCL Schema
Atlas가 제공하는 HCL 기반 스키마 정의 언어로, 테이블·컬럼·인덱스·제약 조건 등을 구조적으로 표현할 수 있습니다.

HCL로 스키마 정의 후 마이그레이션 생성

HCL로 users 테이블 구조를 선언하고, atlas migrate diff 명령으로 현재 DB와 비교해 마이그레이션 SQL 파일을 자동 생성합니다.

HCL
# schema.hcl
table "users" {
  schema = schema.public
  column "id" {
    type = int
    auto_increment = true
  }
  column "email" {
    type = varchar(255)
    null = false
  }
  primary_key {
    columns = [column.id]
  }
  index "email_idx" {
    columns = [column.email]
    unique = true
  }
}

# 마이그레이션 생성
# atlas migrate diff --env local

처음 쓸 때 흔한 함정

  • 선언적 방식과 마이그레이션 파일 방식을 혼용하면 상태 충돌이 발생할 수 있습니다
  • 프로덕션 적용 전 dry-run으로 생성될 SQL을 반드시 검토해야 합니다
  • 데이터 손실 가능성이 있는 변경(컬럼 삭제 등)은 자동 생성된 SQL을 신중히 확인해야 합니다

위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.

프로젝트별 활용 방식

위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.

  1. 01백엔드
    2026년 7월

    KYB 기업심사 REST API

    Go + Echo 기반 멀티테넌트 KYB(Know Your Business) 심사 플랫폼. 기업 등록부터 3단계 심사, WLF 스크리닝, 재제출 워크플로까지 지원.

    이 프로젝트에서의 Atlas 활용

    스키마 마이그레이션 관리 (HCL 기반)

함께 사용한 기술

위 프로젝트들에서 같이 쓰인 다른 기술입니다.