[전통적인 방법론] 폭포수(Waterfall) 모델 - 4. 3단계 – 개발 (Implementation) (1. 개발 환경 구축)

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 도구를 활용하면 배포 프로세스를 자동화하여 운영 효율성을 높일 수 있음 🚀