πŸ› οΈ ν˜‘μ—…μ—μ„œ λ§ˆμ£Όν•œ 문제 & ν•΄κ²° κ³Όμ •

ZEDYΒ·2025λ…„ 1μ›” 30일
0

🐳 1. Docker μ»¨ν…Œμ΄λ„ˆν™”λ₯Ό λ„μž…ν•œ 이유 & μ΅œμ ν™” κ³Όμ •


πŸ›‘ 문제 상황

1️⃣ νŒ€μ› κ°„ 개발 ν™˜κ²½μ΄ μΌκ΄€λ˜μ§€ μ•ŠμŒ

  • λ‚˜λŠ” MacOS, λ‹€λ₯Έ νŒ€μ›λ“€μ€ Windows ν™˜κ²½μ—μ„œ 개발.
  • Python 버전 차이, νŒ¨ν‚€μ§€ μ„€μΉ˜ 문제, OS ν™˜κ²½ 차이둜 인해 μ½”λ“œ μ‹€ν–‰ 였λ₯˜ λ°œμƒ.

2️⃣ λ‘œμ»¬μ—μ„œ 잘 되던 μ½”λ“œκ°€ λ‹€λ₯Έ ν™˜κ²½μ—μ„œλŠ” μ‹€ν–‰λ˜μ§€ μ•ŠμŒ

  • λ‚΄ ν™˜κ²½μ—μ„œλŠ” μ •μƒμ μœΌλ‘œ μ‹€ν–‰λ˜μ§€λ§Œ, λ‹€λ₯Έ νŒ€μ›μ΄ μ‹€ν–‰ν•  λ•Œ ν™˜κ²½ 차이둜 μΈν•œ 였λ₯˜ λ°œμƒ.
  • pip install ν•  λ•Œ νŒ¨ν‚€μ§€ 좩돌 문제 λ°œμƒ.

3️⃣ 배포 μ‹œ μ‹€ν–‰ ν™˜κ²½μ„ λ§žμΆ”λŠ” 과정이 λ²ˆκ±°λ‘œμ›€

  • μ„œλ²„ ν™˜κ²½κ³Ό 둜컬 개발 ν™˜κ²½μ΄ λ‹€λ₯΄λ‹€ λ³΄λ‹ˆ, 배포 ν›„ μ‹€ν–‰ 였λ₯˜κ°€ μ’…μ’… λ°œμƒ.
  • ν™˜κ²½ λ³€μˆ˜λ₯Ό λ‹€λ£¨λŠ” 방식도 OSλ§ˆλ‹€ 차이가 μžˆμ–΄μ„œ 관리가 어렀움.

βœ… ν•΄κ²° 방법 - Docker μ»¨ν…Œμ΄λ„ˆν™” λ„μž…

1) Dockerλ₯Ό μ‚¬μš©ν•΄ λͺ¨λ“  νŒ€μ›μ΄ λ™μΌν•œ ν™˜κ²½μ—μ„œ 개발 κ°€λŠ₯ν•˜λ„λ‘ μ„€μ •

  • Dockerfile을 λ§Œλ“€μ–΄μ„œ, μ–΄λ–€ ν™˜κ²½μ—μ„œλ„ λ™μΌν•˜κ²Œ μ‹€ν–‰λ˜λ„λ‘ μ„€μ •.
  • Python, FAISS, PostgreSQL λ“± ν•„μš”ν•œ 라이브러리λ₯Ό Docker ν™˜κ²½μ— ν†΅ν•©ν•˜μ—¬ μ‹€ν–‰ ν™˜κ²½ 톡일.
# 1. Python ν™˜κ²½μ„ 기반으둜 이미지 생성
FROM python:3.9

# 2. μž‘μ—… 디렉토리 μ„€μ •
WORKDIR /app

# 3. ν•„μš”ν•œ νŒ¨ν‚€μ§€ μ„€μΉ˜
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

# 4. μ½”λ“œ 볡사 ν›„ μ‹€ν–‰
COPY . .
CMD ["python", "app.py"]

πŸ“Œ κ²°κ³Ό
βœ… μ–΄λ–€ ν™˜κ²½μ—μ„œλ„ λ™μΌν•œ 개발 ν™˜κ²½μ„ μœ μ§€ν•  수 있음.
βœ… 둜컬과 μ„œλ²„μ˜ μ‹€ν–‰ ν™˜κ²½μ΄ μΌμΉ˜ν•˜λ―€λ‘œ 배포 였λ₯˜ κ°μ†Œ.

2) Docker Compose둜 전체 μ„œλΉ„μŠ€ ꡬ성 μžλ™ν™”

  • PostgreSQL, FAISS, Flask λ°±μ—”λ“œ 등을 ν•¨κ»˜ μ‹€ν–‰ν•  수 μžˆλ„λ‘ docker-compose.yml μž‘μ„±.
  • ν•œ 쀄 λͺ…λ Ήμ–΄λ‘œ λͺ¨λ“  μ„œλΉ„μŠ€ μ‹€ν–‰ κ°€λŠ₯! (docker-compose up -d)
version: '3.8'
services:
  db:
    image: postgres
    restart: always
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: inflow_chat
    ports:
      - "5432:5432"

  backend:
    build: .
    depends_on:
      - db
    environment:
      DATABASE_URL: postgresql://admin:secret@db:5432/inflow_chat
    ports:
      - "8000:8000"

πŸ“Œ κ²°κ³Ό
βœ… λ°μ΄ν„°λ² μ΄μŠ€ + λ°±μ—”λ“œλ₯Ό ν•œ λ²ˆμ— μ‹€ν–‰ν•  수 있음.
βœ… 둜컬 ν™˜κ²½μ—μ„œλ„ 배포 ν™˜κ²½κ³Ό λ™μΌν•œ ν™˜κ²½μ—μ„œ μ‹€ν–‰ κ°€λŠ₯.


πŸ”₯ Docker λ„μž… ν›„ 얻은 이점 & 배운 점

βœ… 개발 ν™˜κ²½ 차이 ν•΄κ²° β†’ "λ‚΄ ν™˜κ²½μ—μ„œλŠ” 잘 λ˜λŠ”λ°?" 문제 ν•΄κ²°!
βœ… μ„œλ²„ 배포가 간단해짐 β†’ ν•œ μ€„λ‘œ μ‹€ν–‰ κ°€λŠ₯ (docker-compose up -d)
βœ… ν˜‘μ—…μ΄ μ‰¬μ›Œμ§ β†’ λͺ¨λ“  νŒ€μ›μ΄ λ™μΌν•œ ν™˜κ²½μ—μ„œ 개발 κ°€λŠ₯.
βœ… 배포 ν›„ 였λ₯˜ κ°μ†Œ β†’ 개발 ν™˜κ²½κ³Ό 배포 ν™˜κ²½μ΄ λ™μΌν•˜λ―€λ‘œ μ‹€ν–‰ 였λ₯˜ μ΅œμ†Œν™”.


πŸ“Œ μ΅œμ’… 정리 (TL;DR)

  • κΈ°μ‘΄μ—λŠ” νŒ€μ› κ°„ ν™˜κ²½ 차이, 배포 μ‹œ μ‹€ν–‰ 였λ₯˜, νŒ¨ν‚€μ§€ 좩돌 λ¬Έμ œκ°€ μžˆμ—ˆμŒ.
  • βœ… Docker μ»¨ν…Œμ΄λ„ˆν™”λ₯Ό 톡해 개발 & 배포 ν™˜κ²½μ„ 톡일.
  • βœ… Docker Composeλ₯Ό ν™œμš©ν•΄ λ°μ΄ν„°λ² μ΄μŠ€ & λ°±μ—”λ“œ μ‹€ν–‰ μžλ™ν™”.
  • βœ… 결과적으둜 개발 속도 & ν˜‘μ—… 효율이 ν–₯상됨!
  • πŸš€ 이제 "λ‚΄ ν™˜κ²½μ—μ„œλŠ” 잘 λ˜λŠ”λ°?" λ¬Έμ œλŠ” μ—†λ‹€!

πŸ“„ 2. API λ¬Έμ„œν™” - Swagger λ„μž… & 개발 κ²½ν—˜ κ°œμ„ 


πŸ›‘ 문제 상황

1️⃣ Postman을 μ‚¬μš©ν•˜μ—¬ API ν…ŒμŠ€νŠΈ μ§„ν–‰ν–ˆμœΌλ‚˜, ν˜‘μ—… μ‹œ λΆˆνŽΈν•¨ λ°œμƒ

  • ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžλ“€μ΄ API λͺ…μ„Έλ₯Ό 보렀면 Postman 곡유 링크λ₯Ό λ°›μ•„μ•Ό 함.
  • Postmanμ—μ„œ κ°œλ³„μ μœΌλ‘œ APIλ₯Ό μ‹€ν–‰ν•˜κ³  확인해야 ν•΄μ„œ ν•œλˆˆμ— API ꡬ쑰λ₯Ό 보기 어렀움.

2️⃣ API 개발 진행 상황을 μ§κ΄€μ μœΌλ‘œ λ³Ό 수 μžˆλŠ” 방법이 ν•„μš”ν•¨

  • Postman으둜 ν…ŒμŠ€νŠΈλŠ” κ°€λŠ₯ν•˜μ§€λ§Œ, APIκ°€ λŠ˜μ–΄λ‚ μˆ˜λ‘ 진행 상황을 ν•œλˆˆμ— 보기 μ–΄λ €μ› μŒ.
  • μžλ™ν™”λœ λ¬Έμ„œν™” 도ꡬ가 ν•„μš”ν•˜λ‹€κ³  νŒλ‹¨!

3️⃣ Flaskμ—μ„œ Swagger(FastAPI처럼 κΈ°λ³Έ 지원 X)λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ¦¬νŒ©ν† λ§ ν•„μš”

  • κΈ°μ‘΄ Flask ν”„λ‘œμ νŠΈμ—μ„œ Blueprint 기반 κ°œλ°œμ„ μ§„ν–‰ν•˜κ³  μžˆμ—ˆμŒ.
  • ν•˜μ§€λ§Œ Swaggerλ₯Ό μ μš©ν•˜λ €λ©΄ Flask-RESTX의 Namespace ꡬ쑰둜 λ³€κ²½ν•΄μ•Ό 함.

βœ… ν•΄κ²° 방법 - Swagger λ„μž… 및 API λ¦¬νŒ©ν† λ§

1) Swagger (Flask-RESTX) 적용

πŸ’‘ Swaggerλ₯Ό μ‚¬μš©ν•˜λ©΄ API λ¬Έμ„œκ°€ μžλ™μœΌλ‘œ μƒμ„±λ˜λ©°, κ°œλ°œμžλ“€μ΄ λ°”λ‘œ APIλ₯Ό μ‹€ν–‰ν•  수 있음!

  • Swaggerλ₯Ό 톡해 API λ¬Έμ„œν™” 진행 β†’ ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžλ“€κ³Όμ˜ ν˜‘μ—… νŽΈλ¦¬ν•΄μ§.
  • κΈ°μ‘΄ Postman 곡유 방식 λŒ€μ‹ , Swagger UIμ—μ„œ μ‹€μ‹œκ°„μœΌλ‘œ API 확인 κ°€λŠ₯.

πŸ“Œ κ²°κ³Ό:
βœ… API μ‹€ν–‰κ³Ό λ™μ‹œμ— Swagger UIμ—μ„œ μžλ™μœΌλ‘œ λ¬Έμ„œκ°€ 생성됨.
βœ… ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžκ°€ API ν…ŒμŠ€νŠΈλ₯Ό Swaggerμ—μ„œ 직접 μ‹€ν–‰ κ°€λŠ₯!

2) κΈ°μ‘΄ Blueprint 방식 β†’ Namespace λ°©μ‹μœΌλ‘œ λ¦¬νŒ©ν† λ§

πŸ’‘ κΈ°μ‘΄ Blueprint λ°©μ‹μ—μ„œλŠ” Swagger λ¬Έμ„œλ₯Ό μžλ™ μƒμ„±ν•˜κΈ° μ–΄λ €μ› μŒ.
πŸ“Œ κ·Έλž˜μ„œ APIλ₯Ό Flask-RESTX의 Namespace λ°©μ‹μœΌλ‘œ λ³€κ²½!

πŸ”„ λ¦¬νŒ©ν† λ§ κ³Όμ •μ—μ„œ 얻은 이점:

  • βœ… μ½”λ“œλ₯Ό 더 λͺ¨λ“ˆν™”ν•˜κ³  API별 역할을 λͺ…ν™•ν•˜κ²Œ 뢄리할 수 μžˆμ—ˆμŒ.
  • βœ… API λ¬Έμ„œκ°€ μžλ™ μƒμ„±λ˜λ©΄μ„œ "이 APIλŠ” 어디에 μ“°λŠ” 거지?"λΌλŠ” 질문이 사라짐.
  • βœ… μ½”λ“œλ₯Ό λ‹€μ‹œ ν•œλ²ˆ 점검할 κΈ°νšŒκ°€ λ˜μ–΄, λΆˆν•„μš”ν•œ μ—”λ“œν¬μΈνŠΈλ‚˜ 쀑볡 μ½”λ“œλ₯Ό 정리할 수 μžˆμ—ˆμŒ.

πŸ› οΈ Swagger λ„μž… ν›„ 얻은 이점

πŸ“Œ API ν˜‘μ—…μ΄ 훨씬 μ‰¬μ›Œμ§!

  • βœ… ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžλ“€μ΄ API λ¬Έμ„œλ₯Ό λ”°λ‘œ μš”μ²­ν•  ν•„μš” 없이 Swaggerμ—μ„œ λ°”λ‘œ 확인 κ°€λŠ₯.
  • βœ… API μš”μ²­μ„ 직접 ν…ŒμŠ€νŠΈν•  수 μžˆμ–΄ ν”„λ‘ νŠΈ-λ°±μ—”λ“œ κ°„μ˜ μ†Œν†΅μ΄ μ›ν™œν•΄μ§.

πŸ“Œ 개발 진행 상황을 ν•œλˆˆμ— λ³Ό 수 있음!

  • βœ… Postmanμ—μ„œλŠ” 각 APIλ₯Ό κ°œλ³„μ μœΌλ‘œ μ‹€ν–‰ν•΄μ•Ό ν•˜μ§€λ§Œ,
  • βœ… Swagger UIμ—μ„œλŠ” λͺ¨λ“  APIκ°€ μ •λ¦¬λ˜μ–΄ μžˆμ–΄ 개발 진행 상황을 ν•œλˆˆμ— νŒŒμ•… κ°€λŠ₯!

πŸ“Œ λ¦¬νŒ©ν† λ§μ„ ν†΅ν•œ μ½”λ“œ κ°œμ„  효과

  • βœ… κΈ°μ‘΄ Flask Blueprint λ°©μ‹μ—μ„œ Flask-RESTX Namespace λ°©μ‹μœΌλ‘œ λ³€κ²½ν•˜λ©° μ½”λ“œ ꡬ쑰가 더 λͺ…확해짐.
  • βœ… κΈ°μ‘΄ API 섀계 방식에 λŒ€ν•΄ ν•œ 번 더 κ³ λ―Όν•  κΈ°νšŒκ°€ λ˜μ—ˆμŒ.

πŸ”₯ Swagger λ„μž… ν›„ 배운 점 & λŠλ‚€ 점

βœ… SwaggerλŠ” API ν˜‘μ—…μ„ μœ„ν•œ ν•„μˆ˜ 도ꡬ!
βœ… Postman도 μœ μš©ν•˜μ§€λ§Œ, λ¬Έμ„œν™” & ν˜‘μ—…μ„ μœ„ν•΄μ„œλŠ” Swaggerκ°€ 더 κ°•λ ₯함.
βœ… Flask-RESTX둜 λ³€κ²½ν•˜λ©΄μ„œ μ½”λ“œ λͺ¨λ“ˆν™” 및 API λ¬Έμ„œ μžλ™ν™”λ₯Ό ν•¨κ»˜ 진행할 수 μžˆμ—ˆμŒ.
βœ… λ¦¬νŒ©ν† λ§ κ³Όμ •μ—μ„œ λΆˆν•„μš”ν•œ μ½”λ“œ 정리λ₯Ό ν•˜λ©΄μ„œ, API 섀계에 λŒ€ν•œ 고민을 더 깊이 ν•  수 μžˆμ—ˆμŒ.


πŸ“Œ μ΅œμ’… 정리 (TL;DR)

  • κΈ°μ‘΄ Postman 방식 β†’ Swagger(FastAPI μŠ€νƒ€μΌ) λ¬Έμ„œν™” λ„μž…!
  • βœ… API λ¬Έμ„œλ₯Ό μžλ™ 생성 & μ‹€μ‹œκ°„ ν…ŒμŠ€νŠΈ κ°€λŠ₯.
  • βœ… ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμžλ“€κ³Ό ν˜‘μ—…μ΄ 더 μ‰¬μ›Œμ§.
  • βœ… API 섀계λ₯Ό λ‹€μ‹œ μ κ²€ν•˜λ©΄μ„œ, μ½”λ“œ λ¦¬νŒ©ν† λ§λ„ 진행!
  • πŸš€ 결과적으둜 개발 효율 + ν˜‘μ—… νŽΈμ˜μ„±μ΄ λŒ€ν­ ν–₯상됨!

πŸš€ 3. Git 브랜치 μ „λž΅ λ„μž… - ν˜‘μ—… νš¨μœ¨μ„± κ°œμ„ 


πŸ›‘ 문제 상황

1️⃣ νŒ€μ› κ°„ Git 브랜치 μ „λž΅μ΄ μ—†μ–΄μ„œ μ½”λ“œ 좩돌 λ°œμƒ

  • λ‚˜λŠ” GitHub을 ν™œμš©ν•œ 브랜치 μ „λž΅ (Issue β†’ Feature Branch β†’ PR β†’ Review β†’ Merge)에 μ΅μˆ™ν–ˆμŒ.
  • ν•˜μ§€λ§Œ νŒ€μ›λ“€μ€ 개인 ν”„λ‘œμ νŠΈμ—μ„œλ§Œ κ°œλ°œν•΄μ™”κΈ° λ•Œλ¬Έμ—, ν˜‘μ—… μ‹œ Git κ·œμΉ™μ„ λ”°λ₯΄λŠ” 것이 μ΅μˆ™ν•˜μ§€ μ•ŠμŒ.

2️⃣ 브랜치 관리 λ―Έμˆ™μœΌλ‘œ 인해 κ°•μ œ Merge λ°œμƒ β†’ μ½”λ“œ 좩돌 & 버그 증가

  • 일뢀 κ°œλ°œμžκ°€ main λΈŒλžœμΉ˜μ—μ„œ 직접 개발 ν›„ κ°•μ œ Merge 진행 β†’ μ½”λ“œκ°€ 꼬이고 좩돌 λ°œμƒ.
  • μ½”λ“œ 리뷰 없이 Mergeν•˜λ©΄μ„œ λΆˆμ•ˆμ •ν•œ μ½”λ“œκ°€ main에 ν¬ν•¨λ˜λŠ” λ¬Έμ œκ°€ λ°œμƒ.

3️⃣ λΈŒλžœμΉ˜κ°€ κΌ¬μ—¬μ„œ μ΅œμ•…μ˜ 경우 레포λ₯Ό μƒˆλ‘œ 생성해야 ν–ˆλ˜ 상황

  • Git κ·œμΉ™μ„ λ”°λ₯΄μ§€ μ•ŠλŠ” κ°œλ°œμžκ°€ λ§Žμ•„μ§€λ©΄μ„œ λΈŒλžœμΉ˜κ°€ κ΄€λ¦¬λ˜μ§€ μ•ŠμŒ.
  • 브랜치 이λ ₯ λ³΅μž‘ν™” + 좩돌 ν•΄κ²° 어렀움 β†’ κ²°κ΅­ 레포λ₯Ό μ‚­μ œν•˜κ³  μƒˆλ‘œ 생성.

βœ… ν•΄κ²° 방법 - Git 브랜치 μ „λž΅ λ„μž… 및 κ·œμΉ™ μ„€μ •

πŸ’‘ 1) ν˜‘μ—…μ„ μœ„ν•œ Git 브랜치 μ „λž΅μ„ λ„μž… (Feature Branch Workflow 적용)

  • GitHub Issue 생성 β†’ Issue 번호λ₯Ό 기반으둜 Feature 브랜치 생성.
  • 개발 μ™„λ£Œ ν›„ PR을 μƒμ„±ν•˜μ—¬ μ½”λ“œ 리뷰 ν›„ Merge 진행.

πŸ“Œ Git 브랜치 μ „λž΅

- main (배포 브랜치)
- develop (개발 브랜치)
  β”œβ”€β”€ feature/{issue-number}-feature-name (κΈ°λŠ₯ 개발 브랜치)
  β”œβ”€β”€ bugfix/{issue-number}-bug-description (버그 μˆ˜μ • 브랜치)

πŸ“Œ 예제 브랜치 관리 방법

# 1. μƒˆλ‘œμš΄ κΈ°λŠ₯ 개발 μ‹œ
git checkout -b feature/12-add-auth-system

# 2. 개발 μ™„λ£Œ ν›„ 컀밋 & Push
git commit -m "Add authentication system (#12)"
git push origin feature/12-add-auth-system

# 3. PR 생성 ν›„ μ½”λ“œ 리뷰 μš”μ²­
# 4. 리뷰 μ™„λ£Œ ν›„ Merge & 브랜치 μ‚­μ œ

πŸ’‘ 2) κ°•μ œ Merge 방지λ₯Ό μœ„ν•΄ Git κ·œμΉ™ 수립
βœ… PR 없이 main에 직접 Push κΈˆμ§€ (Branch Protection μ„€μ •)
βœ… λͺ¨λ“  PR은 μ΅œμ†Œ 1λͺ… μ΄μƒμ˜ μ½”λ“œ 리뷰 ν›„ Merge
βœ… Merge 전에 λ°˜λ“œμ‹œ develop λΈŒλžœμΉ˜μ—μ„œ Pull ν›„ Conflict ν•΄κ²°

πŸ“Œ Branch Protection μ„€μ • μ˜ˆμ‹œ (GitHub μ„€μ •)

  • main λΈŒλžœμΉ˜μ— 직접 Push λΆˆκ°€λŠ₯ν•˜λ„λ‘ μ„€μ •.
  • PR을 ν†΅ν•΄μ„œλ§Œ Merge κ°€λŠ₯ν•˜λ„λ‘ μ œν•œ.
  • μ΅œμ†Œ 1λͺ… μ΄μƒμ˜ μ½”λ“œ 리뷰λ₯Ό ν•„μˆ˜λ‘œ μ„€μ •.

πŸ’‘ 3) Git 컀밋 λ©”μ‹œμ§€ 및 브랜치 넀이밍 κ·œμΉ™ 톡일
βœ… Issue 번호 기반 브랜치 넀이밍
βœ… 컀밋 λ©”μ‹œμ§€ κ·œμΉ™ μ„€μ • β†’ feat:, fix:, docs:, refactor: λ“±μ˜ Prefix μ‚¬μš©

πŸ“Œ 예제

feat: Add authentication system (#12)
fix: Resolve login bug (#23)
docs: Update API documentation (#30)

πŸ› οΈ 브랜치 μ „λž΅ λ„μž… ν›„ 얻은 이점

πŸ“Œ ν˜‘μ—…μ΄ 훨씬 μ‰¬μ›Œμ§!

  • βœ… 각 κΈ°λŠ₯별 λΈŒλžœμΉ˜κ°€ λͺ…ν™•ν•΄μ Έ μ½”λ“œ 관리가 체계화됨.
  • βœ… Git 브랜치 이λ ₯이 깨끗해지고, μ½”λ“œ 좩돌이 κ°μ†Œ.
  • βœ… 레포λ₯Ό λ‚ λ¦¬λŠ” μ΅œμ•…μ˜ 상황을 방지할 수 μžˆμ—ˆμŒ.

πŸ“Œ μ½”λ“œ ν’ˆμ§ˆ κ°œμ„ !

  • βœ… PR을 ν†΅ν•œ μ½”λ“œ 리뷰 과정이 ν•„μˆ˜ν™”λ¨ β†’ μ½”λ“œ ν’ˆμ§ˆ ν–₯상.
  • βœ… κ°•μ œ Merge 방지λ₯Ό 톡해 μ½”λ“œ μ•ˆμ •μ„± μœ μ§€.

πŸ“Œ νŒ€μ›λ“€μ˜ Git μ‚¬μš© λŠ₯λ ₯ ν–₯상

  • βœ… GitHub ν™œμš© λŠ₯λ ₯이 λΆ€μ‘±ν–ˆλ˜ κ°œλ°œμžλ“€λ„ Git 브랜치 μ „λž΅μ„ λ”°λ₯΄λ©΄μ„œ ν˜‘μ—… μ—­λŸ‰ μƒμŠΉ.
  • βœ… Git κ·œμΉ™μ„ 지킀지 μ•ŠμœΌλ©΄ ν˜‘μ—…μ΄ λΆˆκ°€λŠ₯ν•˜λ‹€λŠ” 점을 μΈμ‹ν•˜κ²Œ 됨.

πŸ”₯ Git μ „λž΅ λ„μž… ν›„ 배운 점 & λŠλ‚€ 점

βœ… Git 브랜치 μ „λž΅μ΄ μ—†μœΌλ©΄ ν˜‘μ—…μ΄ λΆˆκ°€λŠ₯ν•˜λ‹€!
βœ… 혼자 κ°œλ°œν•  λ•ŒλŠ” ν•„μš” μ—†μ§€λ§Œ, νŒ€ ν”„λ‘œμ νŠΈμ—μ„œλŠ” Git μ „λž΅μ΄ ν•„μˆ˜λ‹€.
βœ… PR을 ν†΅ν•œ μ½”λ“œ 리뷰 과정이 μ½”λ“œ ν’ˆμ§ˆμ„ 크게 ν–₯μƒμ‹œν‚¨λ‹€.
βœ… κ°•μ œ MergeλŠ” μ΅œμ•…μ˜ κ²°κ³Όλ₯Ό μ΄ˆλž˜ν•  수 μžˆλ‹€ β†’ λ°˜λ“œμ‹œ 브랜치 보호 섀정이 ν•„μš”ν•˜λ‹€.
βœ… 레포λ₯Ό μƒˆλ‘œ νŒŒλŠ” 일은 μ—†μ–΄μ•Ό ν•œλ‹€ β†’ Git 관리가 곧 ν˜‘μ—…μ˜ 기본이닀.


πŸ“Œ μ΅œμ’… 정리 (TL;DR)

  • κΈ°μ‘΄μ—λŠ” Git 브랜치 μ „λž΅μ΄ μ—†μ–΄μ„œ κ°•μ œ Merge, μ½”λ“œ 좩돌, ν˜‘μ—… 문제 λ°œμƒ.
  • βœ… Feature Branch Workflow λ„μž… β†’ 브랜치 ꡬ쑰 및 Merge ν”„λ‘œμ„ΈμŠ€ 정립.
  • βœ… PR을 ν†΅ν•œ μ½”λ“œ 리뷰 ν•„μˆ˜ν™” β†’ μ½”λ“œ ν’ˆμ§ˆ ν–₯상.
  • βœ… Branch Protection μ„€μ • β†’ κ°•μ œ Merge 방지.
  • πŸš€ 결과적으둜 ν˜‘μ—… 효율이 λŒ€ν­ ν–₯μƒλ˜μ—ˆκ³ , μ•ˆμ •μ μΈ Git 관리가 κ°€λŠ₯해짐!

profile
Spring Boot λ°±μ—”λ“œ μ£Όλ‹ˆμ–΄ 개발자

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보