[배포] 개발 환경

kante·2020년 12월 23일
0

2020 12 22

백엔드 서버 개발을 하면서 배포 환경에 대해서 그렇게 크게 신경 써본 적이 없다. 전에 인턴을 할 때, dev 환경에서 개발을 하고, dev 디비로 접근을 해서 개발을 한 경험은 있었다. 하지만 내가 혼자 서버 개발을 하고, 그럴 때는 이렇게 따로 나누어서 하지 않아도 되었다.

서버 개발을 한다고 했을 때, 개발 및 운영에 사용할 서버를 구성한다고 생각해보자.

서버 개발 환경은 Local, Dev, Integration, QA, Staging, Production 환경들로 나뉘어진다. 각자 개발 과정에 따라 어떤 것이 추가될 수도 있고 빠질 수도 있다.


그럼 각 환경에 대해 조금 더 알아보자

Local - 로컬

진짜 로컬 컴퓨터에서 개발을 하는 것이다. 각 개발자마다 컴퓨터가 다르고, 그 컴퓨터마다 개발 및 테스트 환경 및 서버를 셋업한 환경을 말한다. 로컬 서버는 보통 Dev 서버에서 코드를 받아와서 작업하는 형태로 진행한다. 그러므로 모든 개발자들이 같은 환경에서 작업하는 것이 가장 이상적이다. 그래서 요즘은 Docker같은 컨테이너 기술이 자주 사용되기도 한다.

Dev - 개발 환경

개발자들이 로컬 환경에서 작업한 것을 Merge or Rebase하여 테스트를 진행할 수 있는 환경이다. 개발자들이 소스코드를 SVN에 커밋하면, 개발자들 중 누군각가 이 코드를 Dev에 배포하게 된다. 이곳에서 단위 테스트나 여러 테스트를 할 수도 있다. 경우에 따라서 Database는 Production을 사용하는 경우도 있다.

Integration - 통합 개발 환경

여러 개의 컴포넌트, 모듈을 동시에 개발할 때, 이것들을 통합 및 테스트 하는 환경으로 사용한다. Dev 환경에 배포가 되면 주기적으로 Integration 환경에 배포를 한다.

QA - 테스팅 환경

QA 엔지니어들이 사용하는 환경이다. Production 환경과 매우 유사하게 사용을 하고, 기능, 비 기능 테스트 모두 수행된다.

Staging - 스테이징

Production 환경과 거의 동일하게 운영을 하며 여러가지 보안이나 성능 측면들을 검증할 때 활용한다.

Production - 운영

실제 서비스를 운영하는 환경이다.


React에서는 어떻게 활용될까

그렇다면 React에서 서버를 실행시킬 때 어떻게 해야하는지 알아보자.

...
“scripts”: {
 “start”: “cp ./.env.dev ./.env && react-scripts start”,
 “start:staging”: “cp ./.env.staging ./.env && react-scripts start”,
 “start:production”: “cp ./.env.prod ./.env && react-scripts start”,
}

이런식으로 package.json 파일을 구성하고, .env에 환경변수를 저장하면, 이런식으로 scripts를 짜면 해결된다.

.env 
REACT_ENV=$REACT_ENV

package.json
“scripts”: {
 “start”: “REACT_ENV=staging && react-scripts start”
}

.env 에 REACT_ENV 변수를 설정해두고, 환경변수를 전달 받는 방법도 있다.


참조

https://engineering.huiseoul.com/react-prod-staging-dev-%ED%99%98%EA%B2%BD-%EC%84%A4%EC%A0%95%ED%95%98%EA%B8%B0-8eb6bbccddfe

profile
경험많은 개발자가 되자

0개의 댓글