Release Management

릴리스 관리 (Release Management) 는 소프트웨어 개발 프로세스에서 코드 변경사항을 개발 환경에서 프로덕션 환경으로 안전하고 체계적으로 배포하는 전체 과정을 관리하는 방법론이다. 이는 버전 관리 시스템과 긴밀하게 연계되어 코드 변경사항의 추적, 버전 관리, 배포 프로세스 자동화 등을 포함한다. 효과적인 릴리스 관리는 소프트웨어의 품질 보장, 배포 위험 최소화, 사용자 경험 향상, 개발 팀의 생산성 증대에 기여한다.
2025 년 현재 DevOps 및 CI/CD 도구와의 통합을 통해 지속적 배포 자동화가 강화되고 있으며, AI 기반 위험 관리 및 클라우드 네이티브 아키텍처 지원이 주목받고 있다.

핵심 개념

릴리스 관리 (Release Management) 는 소프트웨어 변경사항을 계획, 일정 수립, 테스트, 배포하는 전체 프로세스를 관리하는 체계적인 접근법이다. 버전 관리 시스템 내에서 릴리스 관리는 특정 코드 버전을 식별하고 추적하며, 이를 다양한 환경 (개발, 테스트, 프로덕션) 에 체계적으로 배포하는 과정을 포함한다.

목적

릴리스 관리의 주요 목적은 다음과 같다:

  1. 소프트웨어 품질 보장: 테스트와 검증을 통한 안정적인 릴리스
  2. 배포 위험 최소화: 체계적인 프로세스로 배포 실패 가능성 감소
  3. 버전 추적 및 관리: 모든 배포 버전의 명확한 식별과 관리
  4. 변경사항 커뮤니케이션: 이해관계자에게 변경 내용 투명하게 전달
  5. 롤백 메커니즘: 문제 발생 시 이전 상태로 빠르게 복구

필요성

릴리스 관리의 필요성은 다음과 같은 소프트웨어 개발 과정의 문제점을 해결한다:

  1. 복잡한 소프트웨어 시스템의 배포 위험 관리
  2. 빈번한 릴리스에 따른 버전 관리 복잡성 해소
  3. 여러 환경 (개발, 테스트, 프로덕션) 에 걸친 일관된 배포 보장
  4. 릴리스 이력과 변경사항의 명확한 추적 및 문서화
  5. 개발 팀과 운영 팀 간의 협업 효율화

주요 기능

릴리스 관리의 주요 기능은 다음과 같다:

  1. 버전 식별 및 태깅: 특정 코드 버전을 식별하고 태그 부여
  2. 릴리스 계획: 일정, 범위, 담당자 등의 계획 수립
  3. 배포 자동화: 일관되고 반복 가능한 배포 프로세스 자동화
  4. 환경 관리: 다양한 환경 간 배포 관리
  5. 변경 로그 관리: 각 릴리스의 변경사항 추적 및 문서화
  6. 롤백 메커니즘: 문제 발생 시 이전 상태로 복원
  7. 승인 워크플로우: 배포 전 필요한 승인 절차 관리

특징

릴리스 관리의 특징은 다음과 같다:

  1. 체계적인 프로세스: 계획부터 배포까지 체계화된 단계별 접근
  2. 버전 관리 통합: 버전 관리 시스템과의 긴밀한 연계
  3. 자동화 중심: 반복적인 배포 과정의 자동화 강조
  4. 추적 가능성: 변경사항의 투명한 추적 및 문서화
  5. 환경 독립성: 여러 환경에 일관된 배포 가능
  6. 품질 중심: 테스트와 검증을 통한 품질 보장
  7. 협업 지향: 개발, QA, 운영 팀 간의 원활한 협업 지원

핵심 원칙

릴리스 관리의 핵심 원칙은 다음과 같다:

  1. 반복성 (Repeatability): 동일한 프로세스로 일관된 결과 도출
  2. 자동화 (Automation): 수동 작업 최소화를 통한 오류 감소
  3. 투명성 (Transparency): 변경사항과 프로세스의 명확한 가시성
  4. 추적성 (Traceability): 모든 변경의 출처와 사유 추적
  5. 분리 (Separation of Concerns): 개발, 테스트, 배포 단계의 명확한 분리
  6. 점진적 개선 (Incremental Improvement): 작은 단위의 변경으로 위험 최소화
  7. 롤백 준비 (Rollback Readiness): 항상 이전 상태로 돌아갈 수 있는 메커니즘 유지

구성 요소 및 아키텍처

릴리스 관리 시스템의 주요 구성 요소의 기능과 역할은 다음과 같다:

  1. 버전 관리 시스템: 코드 변경사항을 추적하고 여러 개발자의 작업을 조율하며, 릴리스를 위한 코드 베이스의 특정 스냅샷을 제공한다.
  2. 릴리스 브랜치: 배포를 위한 안정적인 코드 기반을 제공하고, 현재 개발 중인 기능과 릴리스 준비 중인 기능을 분리한다.
  3. 태그: 특정 릴리스 버전을 명확하게 식별하고, 나중에 해당 버전으로 쉽게 접근할 수 있게 한다.
  4. CI/CD 파이프라인: 코드 변경부터 배포까지의 전체 과정을 자동화하여 일관성과 신뢰성을 제공한다.
  5. 아티팩트 저장소: 빌드된 소프트웨어 패키지를 저장하고 버전을 관리하며, 다양한 환경에 일관된 아티팩트 배포를 보장한다.
  6. 환경 구성: 개발, 테스트, 스테이징, 프로덕션 등 다양한 환경에 맞는 설정을 관리한다.
  7. 릴리스 노트: 사용자와 이해관계자에게 변경사항을 투명하게 커뮤니케이션하고, 기능과 버그 수정 내용을 문서화한다.
  8. 승인 워크플로우: 중요한 환경 (예: 프로덕션) 에 배포하기 전 필요한 검토와 승인을 관리한다.
  9. 모니터링 시스템: 배포 후 시스템 성능과 상태를 모니터링하여 문제를 조기에 감지한다.

릴리스 관리 아키텍처

주요 원리

릴리스 관리의 주요 원리는 " 지속적 통합과 배포 (CI/CD)" 모델에 기반한다.

이는 다음과 같은 단계로 구성된다:

  1. 계획 (Plan): 릴리스 범위와 일정 계획
  2. 개발 (Develop): 코드 변경 및 버전 관리
  3. 빌드 (Build): 코드 통합 및 빌드 자동화
  4. 테스트 (Test): 자동화된 테스트 및 품질 검증
  5. 릴리스 (Release): 버전 태깅 및 릴리스 노트 생성
  6. 배포 (Deploy): 다양한 환경에 배포
  7. 모니터링 (Monitor): 배포 후 모니터링 및 피드백 수집

워크플로우

  1. 개발자가 특정 기능이나 버그 수정을 완료하고 코드 저장소에 커밋
  2. CI/CD 파이프라인이 트리거되어 자동 빌드 및 테스트 실행
  3. 테스트 통과 시 특정 버전으로 태그 지정 (e.g., v1.2.3)
  4. 릴리스 브랜치 생성 또는 기존 릴리스 브랜치에 병합
  5. 릴리스 노트 및 변경 로그 생성
  6. 스테이징 환경에 배포하여 추가 테스트 진행
  7. 최종 승인 후 프로덕션 환경에 배포
  8. 배포 후 모니터링 및 피드백 수집
  9. 필요시 롤백 또는 핫픽스 배포

장점과 단점

구분항목설명
✅ 장점안정성 향상체계적인 테스트와 검증을 통한 소프트웨어 품질 보장
배포 위험 감소자동화된 프로세스와 롤백 메커니즘으로 배포 실패 위험 최소화
투명성 증대변경사항의 명확한 추적과 커뮤니케이션으로 모든 팀원의 이해도 향상
개발 속도 향상자동화된 릴리스 프로세스로 개발 팀의 효율성 증가
일관성 보장모든 환경에 동일한 프로세스로 배포하여 환경 간 불일치 감소
⚠ 단점초기 설정 복잡성효과적인 릴리스 파이프라인 구축을 위한 초기 투자와 학습 곡선
오버헤드 발생작은 팀이나 프로젝트에서는 과도한 프로세스로 인한 부담 가능성
도구 의존성자동화 도구에 대한 의존도가 높아 도구 장애 시 영향 심각
유연성 감소엄격한 프로세스로 인해 긴급 상황에서의 빠른 대응이 어려울 수 있음
문화적 저항기존 개발 문화에서 새로운 릴리스 방식으로의 전환에 대한 저항 가능성

실무 예시

산업/조직적용 사례주요 이점
웹 서비스GitHub Flow 기반 지속적 배포빠른 기능 출시 및 피드백 반영
엔터프라이즈 SWGitFlow 기반 계획된 분기별 릴리스안정성과 예측 가능성 향상
모바일 앱앱스토어 승인 프로세스와 통합된 릴리스 관리배포 지연 최소화 및 사용자 경험 향상
금융 서비스엄격한 규제 준수를 위한 다단계 승인 프로세스컴플라이언스 보장 및 위험 관리
E- 커머스피크 시즌을 고려한 릴리스 일정 관리비즈니스 중단 위험 최소화
게임 개발베타 테스트와 통합된 점진적 릴리스 전략사용자 피드백 기반 품질 개선
오픈소스 프로젝트커뮤니티 기반 릴리스 관리 및 버전 관리광범위한 기여자 참여와 투명성 확보
DevOps 조직완전 자동화된 CI/CD 파이프라인 기반 릴리스개발 - 운영 간 원활한 협업 및 빠른 배포

실무에서 효과적으로 적용하기 위한 고려사항 및 주의할 점

영역고려사항이유
브랜칭 전략프로젝트 특성에 맞는 브랜칭 모델 선택개발 흐름과 릴리스 주기에 적합한 전략 필요
버전 관리명확한 버전 번호 체계 도입 (Semantic Versioning)버전 의미 명확화 및 하위 호환성 관리
자동화 수준최대한 많은 단계를 자동화수동 작업 최소화로 오류 감소 및 일관성 확보
테스트 전략다양한 테스트 레벨 구현 (단위, 통합, E2E)릴리스 품질 보장을 위한 포괄적 검증
롤백 계획모든 배포에 롤백 메커니즘 준비문제 발생 시 신속한 복구 보장
문서화변경사항 및 릴리스 프로세스 문서화지식 공유 및 프로세스 일관성 유지
환경 구성프로덕션과 유사한 테스트 환경 구성환경 차이로 인한 문제 조기 발견
보안 검증릴리스 파이프라인에 보안 검사 통합취약점 조기 발견 및 대응
의사소통모든 이해관계자와의 명확한 커뮤니케이션릴리스 영향 및 일정에 대한 이해 공유
모니터링배포 전후 시스템 상태 모니터링문제 조기 감지 및 영향 평가

최적화하기 위한 고려사항 및 주의할 점

영역고려사항이유
파이프라인 속도빌드 및 테스트 최적화피드백 루프 단축 및 개발 효율성 향상
아티팩트 관리효율적인 아티팩트 저장 및 버전 관리배포 속도 향상 및 스토리지 최적화
병렬화독립적인 단계 병렬 실행전체 릴리스 파이프라인 시간 단축
캐싱 전략빌드 종속성 및 중간 결과물 캐싱반복적인 작업 최소화 및 속도 향상
테스트 범위변경 영향에 집중된 테스트 실행불필요한 테스트 감소로 검증 시간 단축
환경 프로비저닝필요 시 자동 환경 프로비저닝환경 준비 시간 단축 및 병목 현상 방지
피드백 최적화중요 이슈 우선 보고핵심 문제 조기 해결로 릴리스 지연 방지
배포 전략트래픽 패턴에 맞는 배포 전략 선택사용자 영향 최소화 및 시스템 부하 관리
리소스 할당릴리스 파이프라인에 적절한 리소스 할당병목 현상 방지 및 처리 속도 최적화
메트릭 추적주요 릴리스 메트릭 측정 및 최적화지속적인 프로세스 개선 및 성능 향상

Semantic Versioning 규칙

시맨틱 버저닝 (Semantic Versioning, SemVer) 은 소프트웨어 버전을 체계적으로 관리하는 방법론으로, 버전 번호에 특정 의미를 부여한다.

표준 형식은 MAJOR.MINOR.PATCH 로 구성된다:

  1. MAJOR: 하위 호환성을 깨는 변경사항
  2. MINOR: 하위 호환성을 유지하면서 기능 추가
  3. PATCH: 하위 호환성을 유지하는 버그 수정

추가적인 규칙:

  • 정식 배포 전 버전: 1.0.0-alpha, 1.0.0-beta, 1.0.0-rc
  • 빌드 메타데이터: 1.0.0+20130313144700, 1.0.0-beta+exp.shaf85

시맨틱 버저닝 적용의 이점:

  • 버전 번호만으로 변경 범위와 호환성 파악 가능
  • 의존성 관리 시스템의 효율적인 작동 지원
  • 사용자와 개발자 간 명확한 기대치 설정
  • 배포 자동화 시스템과의 원활한 통합

예시적인 버전 증가 결정:

  • API 변경으로 기존 코드가 작동하지 않음: MAJOR 증가
  • 새로운 기능 추가, 기존 기능 유지: MINOR 증가
  • 기존 기능의 버그 수정: PATCH 증가

실무에서는 package.json, pom.xml 등의 프로젝트 메타데이터 파일에 버전 정보를 관리하고, 자동화 도구로 버전 증가를 처리하는 경우가 많다.

What is Semantic Versioning? | Definition | Axway Blog

Release Note 자동 생성

릴리스 노트 자동 생성은 커밋 메시지, 이슈 트래커, PR 설명 등에서 정보를 추출하여 체계적인 릴리스 문서를 자동으로 생성하는 기술이다.

주요 자동화 도구 및 방법:

  1. conventional-changelog: 컨벤셔널 커밋 메시지 기반 릴리스 노트 생성
  2. GitHub/GitLab Release Notes 자동화: 태그 생성 시 자동으로 릴리스 노트 초안 생성
  3. semantic-release: 커밋 분석 기반 자동 버전 관리 및 릴리스 노트 생성
  4. Jira 통합 도구: Jira 이슈와 연계된 릴리스 노트 자동 생성
  5. Release Drafter: GitHub 액션 기반 릴리스 노트 자동화

효과적인 자동 릴리스 노트를 위한 요소:

  • 일관된 커밋 메시지 컨벤션: ‘feat:’, ‘fix:’, ‘docs:’ 등의 접두어 사용
  • 이슈 참조: 커밋 메시지에 이슈 번호 포함 (#123)
  • 라벨 시스템: PR 이나 이슈에 ’ 기능 ‘, ’ 버그수정 ‘, ’ 문서 ’ 등의 라벨 부여
  • 템플릿 커스터마이징: 조직 필요에 맞는 릴리스 노트 템플릿 구성
  • 카테고리화: 변경사항을 기능, 버그 수정, 성능 개선 등으로 분류

예시 자동화 설정 (semantic-release 사용):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "plugins": [
    "@semantic-release/commit-analyzer",
    "@semantic-release/release-notes-generator",
    "@semantic-release/github",
    "@semantic-release/changelog",
    "@semantic-release/npm",
    "@semantic-release/git"
  ]
}

자동 생성된 릴리스 노트는 일반적으로 최종 검토와 편집 과정을 거쳐 발행된다.

태그 기반 롤백 전략

태그 기반 롤백 전략은 문제가 발생했을 때 이전에 안정적인 버전으로 신속하게 되돌릴 수 있는 메커니즘을 제공한다.

주요 구성 요소:

  1. 버전 태그: 각 릴리스마다 고유한 Git 태그 부여 (v1.2.3)
  2. 불변 아티팩트: 각 태그에 해당하는 불변의 빌드 아티팩트 저장
  3. 롤백 자동화: 이전 태그로 롤백하는 자동화된 프로세스
  4. 환경 설정 관리: 각 버전에 맞는 환경 설정 관리

롤백 시나리오 유형:

  • 즉시 롤백: 배포 직후 문제 발견 시 바로 이전 버전으로 복귀
  • 선택적 롤백: 특정 안정 버전으로 선택적 복귀
  • 부분 롤백: 시스템 일부만 롤백하고 나머지는 유지
  • 데이터 마이그레이션 고려: 스키마 변경이 있는 경우 데이터 롤백 전략 포함

효과적인 태그 기반 롤백을 위한 고려사항:

  1. 신속한 감지: 배포 후 문제를 빠르게 감지하는 모니터링 시스템
  2. 단일 명령 롤백: 복잡한 단계 없이 단일 명령으로 롤백 가능
  3. 롤백 테스트: 정기적인 롤백 절차 테스트 및 검증
  4. 롤백 문서화: 각 버전마다 롤백 절차 문서화
  5. 의존성 관리: 외부 의존성 변경 시 롤백 전략 고려

롤백 자동화 예시 (Docker 기반 시스템):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# 롤백 스크립트 예시
#!/bin/bash
VERSION_TO_ROLLBACK=$1
echo "Rolling back to version $VERSION_TO_ROLLBACK"

# 태그에서 이미지 가져오기
docker pull company/app:$VERSION_TO_ROLLBACK

# 기존 컨테이너 중지 및 새(이전) 버전으로 교체
docker-compose down
export APP_VERSION=$VERSION_TO_ROLLBACK
docker-compose up -d

# 롤백 알림
./notify-team.sh "Rolled back to version $VERSION_TO_ROLLBACK"

태그 기반 롤백은 데이터베이스 스키마 변경이나 API 호환성 이슈가 있는 경우 추가적인 복잡성이 발생하므로, 이를 고려한 마이그레이션 및 롤백 전략이 필요하다.

최신 동향

주제항목설명
자동화완전 자동화된 릴리스 파이프라인코드 커밋부터 프로덕션 배포까지 인간 개입 없이 자동화된 릴리스 프로세스가 표준화되었습니다.
AI 통합AI 기반 릴리스 최적화머신러닝 모델이 배포 패턴과 시스템 영향을 분석하여 최적의 릴리스 타이밍과 전략을 제안합니다.
보안공급망 보안 통합소프트웨어 공급망 보안 (SBOM, 취약점 스캔) 이 릴리스 파이프라인에 필수적으로 통합되었습니다.
관측성실시간 배포 영향 분석배포 즉시 사용자 경험, 시스템 성능, 비즈니스 지표에 미치는 영향을 실시간으로 측정합니다.
협업크로스 펑셔널 릴리스 플랫폼개발, 운영, 보안, 비즈니스 팀이 하나의 통합 플랫폼에서 릴리스 과정을 관리합니다.
환경 관리환경 임시 제공 (Ephemeral Environments)각 피처나 PR 에 대해 자동으로 임시 환경을 생성하고 테스트 후 폐기하는 방식이 일반화되었습니다.
복원력자가 복구 배포문제 감지 시 자동으로 롤백하거나 복구 조치를 수행하는 지능형 배포 시스템이 도입되었습니다.
규정 준수규정 준수 자동화금융, 의료 등 규제 산업에서 컴플라이언스 검증이 릴리스 파이프라인에 자동으로 통합됩니다.

주목해야 할 기술

주제항목설명
GitOps선언적 릴리스 관리Git 저장소를 단일 진실 소스로 사용하여 인프라 및 애플리케이션 배포를 선언적으로 관리하는 방식
카오스 엔지니어링릴리스 복원력 테스트릴리스 과정에 의도적인 장애 주입으로 시스템 복원력을 테스트하고 강화하는 접근법
특성 플래그 (Feature Flags)런타임 기능 전환코드 배포와 기능 활성화를 분리하여 안전하게 새 기능을 점진적으로 출시하는 기술
서비스 메시마이크로서비스 릴리스 제어마이크로서비스 환경에서 트래픽 라우팅, 보안, 관측성을 제공하는 인프라 계층
FinOps릴리스 비용 최적화릴리스 과정의 클라우드 자원 사용을 최적화하여 비용 효율성을 높이는 방법론
AI 기반 테스팅지능형 테스트 자동화AI 가 코드 변경을 분석하여 필요한 테스트를 자동 생성하고 실행하는 시스템
시큐어 스코어카드릴리스 보안 평가각 릴리스의 보안 상태를 점수화하여 가시적으로 보여주는 평가 시스템
가치 스트림 관리릴리스 비즈니스 영향 추적아이디어부터 릴리스, 비즈니스 가치 실현까지 전체 흐름을 가시화하고 최적화하는 도구

앞으로의 전망

주제항목설명
자동화 확대릴리스 프로세스 자동화반복적인 작업을 자동화하여 개발 효율성을 높입니다.
표준화 강화커밋 메시지 및 버전 관리 표준화일관된 규칙을 통해 협업 효율성을 향상시킵니다.
도구 통합다양한 도구 간의 통합 강화CI/CD, 버전 관리, 릴리스 노트 생성 도구 간의 통합을 통해 전체 프로세스를 최적화합니다.
멀티 클라우드클라우드 독립적 릴리스여러 클라우드 제공업체에 일관되게 배포할 수 있는 클라우드 독립적 릴리스 도구가 발전할 것입니다.
규제 통합컴플라이언스 기본 내장규제 요구사항이 릴리스 파이프라인에 기본적으로 내장되어 자동 검증될 것입니다.

추가 학습할 내용

카테고리주제설명
브랜칭 전략GitFlow, GitHub Flow, Trunk-Based Development다양한 브랜칭 모델과 각 모델이 릴리스 관리에 미치는 영향
CI/CD 파이프라인Jenkins, GitHub Actions, GitLab CI/CD릴리스 자동화를 위한 CI/CD 도구 및 구성 방법
배포 전략블루 - 그린, 카나리, 롤링 배포다양한 배포 전략의 구현 방법과 적용 사례
릴리스 자동화semantic-release릴리스 프로세스를 자동화하여 효율성을 높입니다.
환경 관리환경 구성, 인프라 코드화 (IaC)다양한 릴리스 환경의 일관된 관리와 자동화 방법
관측성모니터링, 로깅, 추적릴리스 결과 모니터링 및 문제 감지 시스템 구축
컨테이너화Docker, Kubernetes컨테이너 기반 릴리스 관리 및 오케스트레이션
피처 플래그구현 및 관리 전략코드 배포와 기능 출시를 분리하는 피처 플래그 활용법
보안 통합DevSecOps 구현릴리스 파이프라인에 보안 검증 통합 방법

관련 분야 추가 학습 내용

카테고리주제설명
프로젝트 관리애자일, 스크럼, 칸반릴리스 관리와 애자일 개발 방법론의 통합
품질 보증테스트 자동화, 품질 게이트릴리스 품질 보장을 위한 테스트 전략 및 도구
커뮤니케이션릴리스 커뮤니케이션 전략이해관계자에게 릴리스 정보를 효과적으로 전달하는 방법
데이터 관리데이터베이스 마이그레이션스키마 변경이 포함된 릴리스의 데이터 마이그레이션 전략
클라우드 네이티브클라우드 네이티브 아키텍처클라우드 환경에 최적화된 릴리스 아키텍처 설계
조직 문화DevOps 문화 구축효과적인 릴리스 관리를 위한 조직 문화 변화
복원력 엔지니어링시스템 복원력 설계장애에 강한 시스템 설계 및 릴리스 전략
성능 엔지니어링성능 테스트, 최적화릴리스가 시스템 성능에 미치는 영향 분석 및 최적화

용어 정리

용어설명
Semantic Versioning버전 번호를 MAJOR.MINOR.PATCH 형식으로 관리하여 변경의 성격을 명확히 하는 버전 관리 방식입니다.
Git Tag특정 커밋에 버전 레이블을 부여하여 릴리스 시점을 명확히 하는 Git 기능입니다.
semantic-release커밋 메시지를 기반으로 버전 관리 및 릴리스 노트 생성을 자동화하는 도구입니다.
Conventional Commits일관된 커밋 메시지 형식을 통해 변경 사항을 명확히 하는 규칙입니다.
릴리스 브랜치 (Release Branch)릴리스를 위해 생성된 코드의 안정적인 분기
태그 (Tag)특정 버전을 식별하기 위해 커밋에 부여하는 표시
롤백 (Rollback)문제 발생 시 이전 버전으로 되돌리는 작업
아티팩트 (Artifact)빌드 과정에서 생성되는 실행 가능한 소프트웨어 패키지
피처 플래그 (Feature Flag)코드 배포와 기능 활성화를 분리하는 스위치 기능
블루 - 그린 배포 (Blue-Green Deployment)두 개의 동일한 환경을 번갈아 사용하는 배포 방식
카나리 배포 (Canary Deployment)일부 사용자에게만 새 버전을 배포하는 점진적 방식
CI/CD(Continuous Integration/Continuous Delivery)지속적 통합 및 지속적 배포 자동화 파이프라인
환경 (Environment)개발, 테스트, 스테이징, 프로덕션 등 코드가 실행되는 독립된 공간

참고 및 출처