2025. 3. 12. 15:44ㆍ개발/개발 방법론
1. 개발 환경 구축
소프트웨어 개발에서 개발 환경 구축은 원활한 개발 및 협업을 위해 필수적인 과정입니다.
이 단계에서는 버전 관리 시스템(Git) 사용법, CI/CD 개념 및 도구(Jenkins, GitHub Actions) 등을 정리하고,
효율적인 개발 프로세스를 구축하는 방법을 설명하겠습니다.
1️⃣ 개발 환경 구축 개요
📌 개발 환경 구축이 중요한 이유
✅ 코드의 일관성 유지 – 팀원 간 코드 공유 및 협업 가능
✅ 자동화된 빌드 및 배포 환경 설정 – CI/CD를 활용하여 코드 변경을 신속하게 적용
✅ 프로젝트 안정성 확보 – 코드 관리, 테스트, 배포를 체계적으로 수행
📌 개발 환경 구축 시 주요 요소
요소 | 설명 |
버전 관리 시스템(Git) | 소스 코드 변경 사항을 추적하고 관리 |
CI/CD (Continuous Integration/Continuous Deployment) | 코드 변경 시 자동 빌드, 테스트, 배포 |
코드 리뷰 프로세스 | PR(Pull Request) 기반 협업 |
테스트 환경 | 단위 테스트, 통합 테스트 수행 |
배포 환경 | 프로덕션(Production) 및 스테이징(Staging) 환경 분리 |
2️⃣ 버전 관리 시스템(Git) 사용법
🔹 Git 개요 및 중요성
📌 Git이란?
Git은 분산 버전 관리 시스템(Distributed Version Control System, DVCS)으로,
개발자가 코드 변경 사항을 기록하고, 협업을 원활하게 진행할 수 있도록 지원하는 도구입니다.
📌 Git의 주요 기능
✅ 버전 관리 – 코드 변경 사항 추적 가능
✅ 브랜치 기능 – 독립적인 작업 공간을 생성하여 개발 가능
✅ 협업 지원 – 여러 개발자가 동시에 작업 가능
📌 Git 기본 명령어
명령어 | 설명 |
git init | Git 저장소 초기화 |
git clone <repo_url> | 원격 저장소 복제 |
git status | 현재 작업 상태 확인 |
git add <파일명> | 변경된 파일을 스테이징(Staging) 영역으로 이동 |
git commit -m "메시지" | 변경 사항을 커밋 |
git push origin <브랜치명> | 원격 저장소에 변경 사항 업로드 |
git pull origin <브랜치명> | 최신 코드 가져오기 |
git branch | 브랜치 목록 확인 |
git checkout -b <브랜치명> | 새로운 브랜치 생성 및 이동 |
git merge <브랜치명> | 특정 브랜치를 현재 브랜치에 병합 |
📌 Git 브랜치 전략
✅ main 브랜치 – 안정적인 배포용 브랜치
✅ develop 브랜치 – 개발 진행 브랜치
✅ feature 브랜치 – 기능 개발을 위한 개별 브랜치
✅ hotfix 브랜치 – 긴급 수정이 필요한 경우
📌 예제: Git을 활용한 협업 프로세스
1. `git clone <repo_url>` → 원격 저장소 복제
2. `git checkout -b feature/new-feature` → 새 기능 개발 브랜치 생성
3. `git add . && git commit -m "기능 추가"` → 코드 변경 사항 커밋
4. `git push origin feature/new-feature` → 원격 저장소로 푸시
5. GitHub에서 Pull Request(PR) 생성 후 코드 리뷰 요청
6. `git merge feature/new-feature` → 코드 검토 후 main 브랜치에 병합
✅ Git을 사용하면 여러 개발자가 동시에 작업하면서 코드 충돌을 최소화할 수 있음
3️⃣ CI/CD 개념 및 도구
🔹 CI/CD 개요
📌 CI/CD란?
CI/CD(Continuous Integration & Continuous Deployment)는 코드 변경 사항을 자동으로 빌드, 테스트, 배포하는 소프트웨어 개발 방법론입니다.
📌 CI(Continuous Integration, 지속적 통합)
✅ 코드가 변경될 때마다 자동으로 빌드 및 테스트 수행
✅ 코드 품질 유지 및 버그 조기 발견 가능
📌 CD(Continuous Deployment, 지속적 배포)
✅ 코드 변경 사항이 자동으로 프로덕션 환경에 배포
✅ 안정적인 소프트웨어 배포를 보장
📌 CI/CD 프로세스 1️⃣ 개발자가 코드를 Git에 푸시(Push)
2️⃣ CI 시스템이 자동으로 빌드 및 테스트 수행
3️⃣ 테스트 성공 시 CD 시스템이 자동 배포 수행
4️⃣ 프로덕션(Production) 환경에 변경 사항 반영
✅ CI/CD를 활용하면 배포 프로세스가 자동화되어 효율성이 향상됨
🔹 CI/CD 도구 (Jenkins, GitHub Actions)
📌 Jenkins 개요 ✅ Jenkins는 가장 널리 사용되는 오픈 소스 CI/CD 도구
✅ 플러그인을 통해 다양한 빌드 도구(Docker, Kubernetes 등)와 연동 가능
✅ 스케줄링을 설정하여 자동화된 배포 가능
📌 Jenkins 기본 설정 예제
pipeline {
agent any
stages {
stage('Build') {
steps {
echo '빌드 수행'
sh 'npm install'
}
}
stage('Test') {
steps {
echo '테스트 수행'
sh 'npm test'
}
}
stage('Deploy') {
steps {
echo '배포 수행'
sh 'docker-compose up -d'
}
}
}
}
✅ Jenkins를 사용하면 코드 변경이 발생할 때마다 자동으로 테스트 및 배포 가능
📌 GitHub Actions 개요 ✅ GitHub Actions는 GitHub에서 제공하는 CI/CD 자동화 도구
✅ GitHub 저장소에서 직접 빌드, 테스트, 배포 파이프라인을 실행 가능
✅ .github/workflows 디렉토리에 YAML 파일을 작성하여 자동화
📌 GitHub Actions CI/CD 예제
name: CI/CD Pipeline
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: 저장소 체크아웃
uses: actions/checkout@v2
- name: Node.js 환경 설정
uses: actions/setup-node@v2
with:
node-version: '16'
- name: 의존성 설치
run: npm install
- name: 테스트 실행
run: npm test
- name: 배포
run: echo "배포 수행"
✅ GitHub Actions를 사용하면 GitHub 내에서 손쉽게 CI/CD 자동화를 설정 가능
📌 결론
📌 Git을 활용하여 코드 버전 관리 및 협업을 원활하게 진행
📌 CI/CD를 도입하여 코드 변경 시 자동 빌드, 테스트, 배포가 가능하도록 설정
📌 Jenkins, GitHub Actions 같은 CI/CD 도구를 활용하면 배포 프로세스를 자동화하여 운영 효율성을 높일 수 있음 🚀