Implementation vs Deployment
소프트웨어 개발 프로세스에서 implementation과 deployment는 명확하게 구분되는 두 단계다.
Implementation (구현)
설계 모델을 실제 코드로 변환하는 단계다. 클래스 다이어그램을 보고 .java나 .cpp 파일을 작성하고, 시퀀스 다이어그램의 메시지 흐름을 실제 메서드 호출로 구현한다. 개발자가 IDE 앞에서 코딩하는 바로 그 과정이다.
주요 산출물:
- 소스 코드 파일
- 라이브러리와 의존성
- 컴파일된 바이너리
핵심 질문: "어떻게 코드로 만들까?"
Deployment (배포)
구현된 시스템을 실제 실행 환경에 설치하고 배치하는 단계다. 웹 서버에 WAR 파일을 올리거나, 데이터베이스를 설정하거나, 클라이언트 PC에 설치 파일을 배포하는 것처럼, 물리적 노드에 소프트웨어 컴포넌트를 할당하는 과정이다.
주요 활동:
- 서버/클라이언트 환경 구성
- 네트워크 연결 설정
- 데이터베이스 마이그레이션
- 설치 및 운영 매뉴얼 작성
주요 산출물:
- Deployment diagram
- 환경 설정 파일
- 설치 스크립트
핵심 질문: "어디서 뭐가 돌아가게 할 건가?"
본질적 차이
Implementation은 "무엇을 만드느냐"에 집중하고, Deployment는 "어떻게 돌리느냐"에 집중한다. 코드를 작성하는 것과 그 코드를 서비스하는 것은 완전히 다른 관심사다.
Larman의 unified-process|Unified Process 맥락에서 보면:
- Implementation은 Construction 단계의 핵심 활동
- Deployment는 Transition 단계에서 집중적으로 다뤄짐
같은 코드라도 개발 환경, 테스트 환경, 운영 환경에서 다르게 배포될 수 있다. 이 차이를 명확히 이해하는 것이 시스템 전체의 품질과 안정성을 좌우한다.