본문 바로가기
IT/CI&CD

배포(deployment)란 무엇일까?

by infotak2 2024. 2. 20.

배포(deployment)란 무엇일까?

 

배포(deployment)는 소프트웨어 개발 과정에서 개발된 애플리케이션을 사용자가 접근할 수 있는 환경으로 옮기는 과정을 의미합니다. 이 과정은 개발된 소프트웨어를 실제 운영 환경에 설치하고, 설정하여 사용할 준비를 마치는 일련의 작업을 포함합니다. 배포는 단순히 소프트웨어를 업로드하는 것 이상의 작업을 수반하는데, 이는 다음과 같은 단계를 포함할 수 있습니다:

 

  1. 프리프로덕션 준비: 이 단계에서는 배포 전 마지막 테스트를 수행하여 애플리케이션의 성능을 검증하고, 운영 환경에서 발생할 수 있는 문제를 사전에 해결합니다. 보통 크게 개발(DEV), 스테이징(Staging), 프로덕션(Production) 환경이 필요합니다. 각 환경은 각각 다른 목적을 가지며, 소프트웨어 개발부터 배포까지의 전 과정에서 중요한 역활을 합니다.
  2. 환경 설정: 운영 환경에 소프트웨어를 배포하기 전에 필요한 서버 설정, 데이터베이스 구성, 네트워크 설정 등의 인프라 작업을 수행합니다.
  3. 소프트웨어 배포: 개발된 소프트웨어를 운영 환경에 업로드하고, 필요한 라이브러리와 종속성을 설치합니다.
  4. 포스트 배포 검증: 배포가 완료된 후, 애플리케이션이 정상적으로 작동하는지 검증하는 과정입니다. 이는 사용자의 경험에 직접적인 영향을 미치므로 매우 중요합니다.
  5. 모니터링 및 유지보수: 배포 후 애플리케이션의 성능을 지속적으로 모니터링하고, 발생할 수 있는 문제를 해결하며, 필요에 따라 업데이트를 제공합니다.

배포는 개발 과정의 마지막 단계이지만, 소프트웨어의 생명주기에서 매우 중요한 부분입니다. 올바르게 배포된 소프트웨어는 사용자에게 안정적인 서비스를 제공하며, 시스템의 안정성과 보안을 보장합니다. 현대적인 소프트웨어 개발에서는 CI/CD(Continuous Integration/Continuous Delivery)와 같은 자동화된 배포 방식을 통해 더욱 빠르고 효율적인 배포 프로세스를 구현하고 있습니다.

 

프리프로덕션? (DEV, STG, PROD)

개발 환경 (DEV)

  • 목적: 개발자가 새로운 기능을 개발하고 초기 테스트를 수행하는 환경입니다.
  • 특징: 개발 환경은 실험적이고 변화가 빈번하며, 개발자들이 자유롭게 코드를 변경하고 새로운 아이디어를 시험할 수 있는 곳입니다.
  • 필요성: 코드가 안정적인 상태에 이르기 전에 초기 버그를 발견하고 수정할 수 있도록 합니다. 또한, 개발 팀 내에서의 협업과 코드 통합을 용이하게 합니다.

스테이징 환경 (STG)

  • 목적: 프로덕션 환경과 가능한 동일하게 구성된 테스트 환경에서 최종 테스트를 수행합니다.
  • 특징: 스테이징 환경은 프로덕션 환경을 모방하여 설정되며, 여기서의 테스트를 통해 실제 사용자 환경에서 발생할 수 있는 문제를 사전에 발견하고 해결할 수 있습니다.
  • 필요성: 프로덕션 환경으로의 배포 전 마지막 검증 과정을 제공함으로써, 실제 배포 과정에서 발생할 수 있는 위험을 최소화합니다. 이는 프로덕션 환경에서의 장애를 예방하고 사용자 경험에 미치는 부정적인 영향을 줄이는 데 도움이 됩니다.

프로덕션 환경 (PROD)

  • 목적: 실제 사용자가 서비스를 사용하는 환경입니다.
  • 특징: 최고 수준의 안정성, 성능, 보안이 요구되며, 모든 기능이 최종 사용자에게 제공됩니다.
  • 필요성: 사용자에게 안정적이고 안전한 서비스를 제공함으로써, 사용자 만족도를 높이고 비즈니스 목표를 달성합니다.

쉽게 설명드리면

* DEV 환경은 개발자가 개발한것을 아무때나 반영할 수 있는 환경입니다. 그래서 인프라 구축은 최소한으로 하게 됩니다.

* STG 환경은 운영 반영전 최종 테스트를 위한 환경입니다. 그래서 인프라 구축은 운영 과 가능한 동일하게 구성해야 운영에 반영 하였을때 발생하는 문제를 사전에 찾아서 조치 할 수 있습니다.

* PROD 환경은 실제 사용자가 서비스를 사용하는 환경입니다.

 

이러한 환경을 구분하여 사용하는 이유는, 개발 과정에서 발생할 수 있는 다양한 문제를 사전에 식별하고 해결함으로써, 최종 사용자에게 최상의 제품을 안정적으로 제공하기 위함입니다. 각 환경은 소프트웨어 개발의 다른 단계를 대표하며, 각기 다른 역할을 수행함으로써 전체 개발 프로세스의 효율성과 안정성을 보장합니다.

 

 

'IT > CI&CD' 카테고리의 다른 글

CI/CD(Continuous Integration/Continuous Deployment)란?  (0) 2024.02.20