SW 개발 환경 정리 | 개발, 테스트, 운영 환경 등

Sue·2025년 6월 18일
0

개발 환경(Development Environments) 개요

소프트웨어 개발 과정에서는 다양한 목적과 사용자를 위해 여러 개의 환경(Environment)을 분리해서 운영합니다. 각 환경은 개발, 테스트, 검증, 운영 등 각각의 목적에 맞게 구성되며, 이를 통해 코드 품질을 높이고, 안정적인 서비스 운영이 가능합니다.

1. Local (로컬 개발 환경)

  • 정의
    각 개발자의 PC에 구축된 개발 및 테스트 환경입니다.
  • 특징
    • 개발자가 직접 코드를 작성하고, 테스트하는 공간
    • MySQL, Tomcat, Eclipse, JDK 등 필요한 요소를 설치
    • 중요: 모든 개발자가 동일한 환경(버전, 설정 등)을 갖추는 것이 중요함 (환경 표준화)
  • 환경 표준화 방법
    • 개발 툴, 라이브러리, JDK 등을 zip 파일로 묶어 배포
    • Maven, Gradle 등 빌드 툴을 사용해 의존성 및 버전 통일

2. Dev (서버 개발 환경)

  • 정의
    여러 개발자가 작성한 코드를 통합하여 서버에서 테스트하는 환경
  • 특징
    • 소스코드를 형상관리 시스템(Git 등)에 커밋 → 자동 배포
    • 기능 개발 및 1차 통합 테스트 목적
    • 운영 환경보다 소규모 서버로 구성

3. Integration (통합 개발 환경)

  • 정의
    여러 컴포넌트(예: 서버, 클라이언트 등)를 통합하여 동작을 검증하는 환경
  • 특징
    • 컴포넌트 간 의존성, 연동 테스트
    • dev 환경과 유사하나, 통합 목적에 초점
    • 주기적으로 dev 환경에서 release된 코드를 deploy

4. QA (테스팅 환경)

  • 정의
    QA(품질보증) 엔지니어가 기능 및 비기능 테스트를 수행하는 환경
  • 특징
    • 개발 환경에서 QA 환경으로 코드 배포
    • 기능 테스트, 로드 테스트 등 수행
    • 비기능 테스트(성능, 보안 등) 시 운영 환경과 유사하게 구성

5. Staging (스테이징 환경)

  • 정의
    운영 환경과 거의 동일하게 구성된 최종 검증 환경
  • 특징
    • 운영 배포 전, 실제 서비스 환경에서 발생할 수 있는 이슈를 사전 검증
    • 보안, 성능, 장애 대응 등 비기능 요소 집중 점검

6. Production (운영 환경)

  • 정의
    실제 서비스가 제공되는 환경
  • 특징
    • 최종 사용자에게 서비스 제공
    • 안정성, 보안, 성능이 최우선

환경 분리의 장단점

  • 장점

    • 각 환경별로 목적에 맞는 테스트 및 검증 가능
    • 개발, 테스트, 운영 담당자(stakeholder)별로 역할 분리
    • 코드 품질 및 서비스 안정성 향상
  • 단점

    • 환경이 많아질수록 서버, 인력 등 운영 비용 증가
    • 환경 동기화 및 관리의 복잡성 증가
  • 최근 트렌드

    • 가상화 및 컨테이너(Docker 등) 활용
    • 필요할 때만 환경을 띄우고, 사용 후 이미지를 저장하는 방식

배포(Release, Deploy, Distribution) 용어 정리

  • Release
    새로운 제품이나 버전을 만드는 행위
    (예: v2.0 출시, 새로운 IP 부여 등)

  • Deploy
    프로그램이나 서비스를 서버 등 실제 환경에 설치/배포하는 행위
    (예: AWS Lambda에 코드 배포)

  • Distribution
    사용자에게 소프트웨어나 서비스를 제공하는 행위
    (예: 앱스토어에 앱 배포)


요약

환경주요 목적사용 주체서버 규모운영 유사도
Local개발, 단위 테스트개발자없음 (개인 PC)낮음
Dev통합 개발 테스트개발자소규모낮음
Integration시스템 간 연동 테스트개발자, QA중간중간
QA기능 및 성능 테스트QA 팀중간~높음중간
Staging운영 전 최종 검증QA, 운영자운영급높음
Production실제 서비스사용자최대 규모최고
  • Local → Dev → Integration → QA → Staging → Production 순으로 점차 실제 운영 환경에 가까워지며, 각 단계마다 목적과 사용자가 다름
  • 환경 분리를 통해 개발 효율과 품질, 운영 안정성을 모두 확보할 수 있음
  • 최근에는 가상화, 컨테이너 기술로 환경 구축/관리가 더욱 유연해지고 있음

profile
AI/ML Engineer

0개의 댓글