광고 자리 모집 중 · 제휴 문의

소프트웨어 엔지니어링 팀이 Mintlify와 GitHub를 사용하여 API 문서를 구축하고 자동화하는 방법

365Finds Editorial
Wiki 문서 11,430편 수록

내 AI에서 365 Wiki 사용하기

아래 프롬프트를 복사해 평소 사용하는 AI에 붙여넣고 바로 질문하세요.

전체 Skill 다운로드

먼저 프롬프트로 체험해 보세요. 365 Wiki를 자주 쓴다면 전체 365Wiki Skill을 설치해 매번 붙여넣는 수고를 줄일 수 있습니다. 평소 쓰는 AI가 없다면 Gemini나 Microsoft Copilot 웹 버전도 사용할 수 있습니다.

소프트웨어 엔지니어링 팀은 빠르게 변화하는 코드베이스와 API 문서의 동기화를 유지하는 데 자주 어려움을 겪으며, 이는 엔드포인트 단절, 매개변수 누락, 개발자 경험 저하로 이어집니다. Mintlify와 GitHub를 결합하여 코드형 문서(docs-as-code) 방법론을 도입하면 팀은 애플리케이션 코드와 동일한 엔지니어링 엄격성으로 문서를 관리할 수 있습니다. Git 리포지토리에 문서 파일을 직접 호스팅하고, Mintlify GitHub App을 통해 자동 배포를 구성하며, 지속적 통합(CI) 파이프라인에 OpenAPI 명세를 통합함으로써 엔지니어링 조직은 반응형 대화형 개발자 포털을 자동으로 생성할 수 있습니다. 이러한 구성은 수동 문서 업데이트를 없애고, API 참조가 배포된 코드와 일치하도록 보장하며, Pull Request 미리보기를 통해 원활한 검토 워크플로를 구축합니다.

Mintlify와 GitHub의 Docs-as-Code 아키텍처 이해

Mintlify는 문서 소스 파일이 프로덕션 코드와 함께 또는 인접하여 GitHub 리포지토리 내에 상주하는 docs-as-code 원칙을 기반으로 작동합니다. 정적 콘텐츠 관리 시스템(CMS)이나 독립된 위키 소프트웨어에 의존하는 대신 Markdown, MDX 컴포넌트, 구조화된 구성 파일을 사용하여 문서를 정의합니다.

이 아키텍처는 네 가지 핵심 구성 요소로 이루어집니다.

+-----------------------------------------------------------------------+
|                           GitHub Repository                           |
|                                                                       |
|  +----------------+  +--------------------+  +---------------------+  |
|  |   mint.json    |  |  docs/**/*.mdx     |  |    openapi.json     |  |
|  | (Site Config)  |  | (Guides & Pages)   |  | (API Specification) |  |
|  +----------------+  +--------------------+  +---------------------+  |
+-----------------------------------------------------------------------+
            |                                         ^
            | (Push to main / Open PR)                | (CI Auto-Sync)
            v                                         |
+-----------------------+                 +-----------------------+
|  Mintlify GitHub App  |                 |  GitHub Actions CI/CD |
|  - Validates syntax   |                 |  - Extract spec from  |
|  - Builds static docs |                 |    backend code       |
|  - Posts PR preview   |                 |  - Commit / Trigger   |
+-----------------------+                 +-----------------------+
            |
            v
+-----------------------------------------------------------------------+
|                      Production Documentation Site                    |
|         (Interactive Developer Portal & Live API Playground)          |
+-----------------------------------------------------------------------+

문서 리포지토리 구성하기

엔지니어링 팀은 전용 문서 리포지토리 또는 기존 애플리케이션 모노레포 내에서 Mintlify를 구현할 수 있습니다. 명확한 디렉터리 레이아웃으로 시작하면 직관적인 탐색과 깔끔한 CI/CD 경계가 보장됩니다.

1. 리포지토리 구조

표준 Mintlify 문서 워크스페이스는 다음과 같은 파일 레이아웃을 따릅니다.

my-docs-repo/
├── .github/
│   └── workflows/
│       └── sync-api-spec.yml
├── docs/
│   ├── api-reference/
│   │   ├── authentication.mdx
│   │   └── errors.mdx
│   ├── guides/
│   │   ├── quickstart.mdx
│   │   └── rate-limits.mdx
│   └── openapi.json
└── mint.json

2. mint.json 설정

mint.json 파일은 시각적 테마, 최상위 내비게이션 및 API 참조 수집을 제어합니다. 팀은 navigation 배열을 구성하여 개념 가이드를 체계화하고 OpenAPI 명세에 정의된 API 엔드포인트를 자동으로 연결합니다.

{
  "$schema": "https://mintlify.com/schema.json",
  "name": "Acme Developer Platform",
  "logo": {
    "dark": "/logo/dark.svg",
    "light": "/logo/light.svg"
  },
  "favicon": "/favicon.svg",
  "colors": {
    "primary": "#0F52BA",
    "light": "#4B9CD3",
    "dark": "#002D62"
  },
  "navigation": [
    {
      "group": "Getting Started",
      "pages": [
        "docs/guides/quickstart",
        "docs/guides/rate-limits"
      ]
    },
    {
      "group": "API Reference",
      "pages": [
        "docs/api-reference/authentication",
        "docs/api-reference/errors"
      ],
      "openapi": "docs/openapi.json"
    }
  ],
  "api": {
    "baseUrl": "https://api.acme.com/v1"
  }
}

3. Mintlify CLI를 활용한 로컬 개발

엔지니어는 GitHub에 푸시하기 전에 로컬에서 문서 변경 사항을 확인해야 합니다. Mintlify CLI는 핫 리로드를 지원하는 로컬 개발 서버를 제공합니다.

  1. CLI를 전역으로 설치하거나 npx를 사용하여 실행합니다.
    npm install -g mint
    
  2. mint.json이 포함된 디렉터리로 이동하여 개발 서버를 시작합니다.
    mint dev
    
  3. 브라우저에서 http://localhost:3000을 엽니다. .mdx 파일, mint.json 또는 OpenAPI 스키마에 대한 모든 수정 사항이 즉시 다시 로드됩니다.

Mintlify GitHub App을 통한 배포 자동화

GitHub와 Mintlify를 연결하는 핵심 자동화 메커니즘은 Mintlify GitHub App입니다. 설치가 완료되면 수동 빌드 및 배포 스크립트를 대체합니다.

설치 및 브랜치 구성

  1. Mintlify 대시보드에 로그인한 후 Settings > Git Settings로 이동합니다.
  2. Install GitHub App을 클릭하고 조직 및 대상 리포지토리를 선택합니다.
  3. 배포 브랜치(Deployment Branch, 일반적으로 main)를 구성합니다. 커밋이 이 브랜치로 푸시되거나 병합될 때마다 Mintlify가 프로덕션 빌드를 트리거합니다.
  4. 문서가 모노레포의 하위 폴더(/docs 등) 내에 있는 경우 하위 디렉터리 토글을 활성화하고 경로를 지정합니다. 이렇게 하면 빌드가 제한되어 문서 폴더 내의 파일이 변경될 때만 Mintlify가 트리거됩니다.

Pull Request 미리보기 및 리뷰 게이트

엔지니어가 문서 파일을 수정하는 Pull Request를 열면 GitHub App이 자동으로 빌드 확인을 실행하고 고유한 미리보기 URL을 PR에 댓글로 남깁니다.

GitHub Actions를 통한 OpenAPI 명세 업데이트 자동화

개념 가이드는 MDX로 직접 작성되지만, API 참조 문서는 항상 소스 코드에서 직접 파생되어야 합니다. 백엔드 엔지니어가 엔드포인트 라우트, 요청 페이로드 또는 응답 스키마를 변경할 때 자동화된 파이프라인이 문서 디렉터리의 OpenAPI 명세 파일을 업데이트해야 합니다.

모노레포 환경에서의 명세 동기화

API 서비스 코드(예: FastAPI, Express, NestJS 또는 Go)가 문서와 함께 상주하는 모노레포에서는 GitHub Actions가 커밋 시 최신 명세를 생성하고 문서 폴더를 최신 상태로 유지할 수 있습니다.

다음 GitHub Actions 워크플로는 백엔드 서비스에서 OpenAPI 스키마를 추출하고 Mintlify 배포를 트리거하는 방법을 보여줍니다.

name: Sync OpenAPI Spec and Deploy Docs

on:
  push:
    branches:
      - main
    paths:
      - 'services/api/**'
      - 'docs/**'

jobs:
  sync-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4

      - name: Set up Python Environment
        uses: actions/setup-python@v5
        with:
          python-version: '3.11'

      - name: Install Dependencies
        run: |
          pip install -r services/api/requirements.txt

      - name: Generate OpenAPI Specification
        run: |
          python -c "import json; from services.api.main import app; print(json.dumps(app.openapi()))" > docs/openapi.json

      - name: Check for Spec Changes
        id: git-diff
        run: |
          git diff --quiet docs/openapi.json || echo "changed=true" >> $GITHUB_OUTPUT

      - name: Commit and Push Updated Spec
        if: steps.git-diff.outputs.changed == 'true'
        run: |
          git config user.name "github-actions[bot]"
          git config user.email "github-actions[bot]@users.noreply.github.com"
          git add docs/openapi.json
          git commit -m "chore(docs): auto-update openapi.json from backend"
          git push origin main

      - name: Trigger Mintlify Deployment
        run: |
          curl -X POST https://api.mintlify.com/api/deploy \
            -H "Authorization: Bearer ${{ secrets.MINTLIFY_API_TOKEN }}"

멀티 리포지토리 동기화 아키텍처

백엔드 서비스가 중앙 집중식 문서 포털과 별도의 리포지토리에 존재하는 마이크로서비스 아키텍처에서는 저장소 디스패치(repository dispatch) 이벤트나 직접 API 호출을 사용합니다.

  1. 서비스 CI: 백엔드 서비스가 자체 리포지토리에서 빌드될 때 CI가 openapi.json을 생성합니다.
  2. 디스패치 또는 PR: 워크플로가 GitHub 개인 액세스 토큰을 사용하여 문서 리포지토리로 웹후크 이벤트를 발송하고, 업데이트된 명세가 포함된 자동화된 Pull Request를 생성합니다.
  3. 검증 및 병합: 문서 리포지토리는 스키마 린트를 실행하고, Mintlify 미리보기를 생성하며, 승인 시 업데이트를 병합합니다.

API 문서 자동화를 위한 모범 사례

성장하는 엔지니어링 팀 전반에서 높은 문서 품질을 유지하려면 다음 운영 표준을 구현하십시오.

모범 사례구현 메커니즘기대 효과
스키마 검증병합 전 CI에서 mint validate 또는 spectral 린터를 실행합니다.손상된 OpenAPI 스키마나 유효하지 않은 매개변수 타입이 프로덕션에 도달하는 것을 방지합니다.
원자적 코드 및 문서 PRAPI 코드 변경과 해당 문서 업데이트를 동일한 PR에 포함하도록 요구합니다.기능 배포와 문서 발행 사이의 시차를 제거합니다.
환경 변수 보안API 키나 프로덕션 기밀을 OpenAPI 서버 블록에 절대 커밋하지 마십시오.사용자가 대화형 플레이그라운드에서 테스트 키를 입력할 수 있도록 허용하면서 인프라를 보호합니다.
엔드포인트 태깅코드 주석에서 일관된 tags를 사용하여 OpenAPI 경로를 정리합니다.Mintlify가 태그를 기반으로 엔드포인트를 구조화된 내비게이션 섹션으로 자동 그룹화합니다.
변경 로그 자동화GitHub Releases 또는 Git 태그를 사용하여 docs/changelog.mdx에 릴리스 노트를 생성합니다.지원 중단 예정 항목, 요청 제한 조정, 새로운 기능에 대해 사용자에게 지속적으로 정보를 제공합니다.

API 문서를 코드처럼 취급하고, 소스 파일을 GitHub에 호스팅하며, 배포 및 명세 파이프라인을 자동화함으로써 소프트웨어 엔지니어링 팀은 문서 드리프트를 근절하고, 개발자 온보딩을 가속화하며, 모든 릴리스마다 정확성을 유지하는 대화형 API 포털을 제공할 수 있습니다.