본문으로 건너뛰기

· 약 3분
제이

안녕하세요. 카페인 팀의 제이입니다.

오늘은 저희가 EC2 인스턴스를 받으면서, 어떻게 dev, prod 배포 환경을 분리했는지 적어보려고 합니다. 기존 카페인 팀의 EC2 구조는 여기서 보실 수 있습니다.


기존 상황과 문제점

카페인 팀에서는 기존에 3대의 EC2 인스턴스가 있었습니다. 각각 infra, dev, db 역할을 하는 인스턴스로 존재하고 있었습니다.

저희는 release 브랜치를 통해 dev서버에 배포를 한 후 검증이 된다면, 실제 사용자들이 사용하는 prod 서버에 배포하고 있습니다.

문제는 기존의 3대의 인스턴스 중에서 dev 서버에 있었습니다. 기존 dev 서버는 총 4개의 서버를 배포하고 있었고 배포하는 서버는 다음과 같습니다. prod-BE, prod-FE, dev-BE, dev-FE

그리고, 기존 dev 서버에서는 환경을 분리해주기 위해서 Nginx를 통해서 포트 포워딩은 다음과 같이 해주었습니다.

  • prod-BE = 8080
  • prod-FE = 3031
  • dev-BE = 8081
  • dev-FE = 3031

카페인 팀에서는 dev, prod 환경이 분리되지 않아서 인스턴스의 사용량이 높았고, 이에 따라 추가적인 EC2 인스턴스가 필요했습니다.


문제 해결

다행히도 카페인 팀에서 추가적인 EC2 인스턴스를 받았고, 저희는 배포 환경을 분리할 수 있었습니다.

dev-prod-server

이와 같이 기존 dev 서버 한 개가 infra 서버와 연결되어 있었는데, 두 갈래로 나뉜 것을 확인하실 수 있습니다.

먼저 배포는 다음과 같이 진행됩니다.

release branch에 push가 일어나면 dev서버에 배포 작업이 이뤄집니다. prod branch에 push가 일어나면 prod서버에 배포 작업이 이뤄집니다.

또한 기존 dev 서버에서 4개의 포트포워딩 또한 굳이 그럴 필요가 없어졌습니다. 새로운 서버가 추가됨에 따라 dev, prod 서버 각각 Nginx에서 포트포워딩을 동일하게 FE:3000, BE:8080 으로 변경하였습니다.

이렇게 카페인 팀에서는 dev, prod 환경을 분리했습니다.

감사합니다!