안녕하세요. 카페인 팀의 제이입니다.
오늘은 저희가 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 서버 한 개가 infra 서버와 연결되어 있었는데, 두 갈래로 나뉜 것을 확인하실 수 있습니다.
먼저 배포는 다음과 같이 진행됩니다.
release branch
에 push가 일어나면 dev서버에 배포 작업
이 이뤄집니다.
prod branch
에 push가 일어나면 prod서버에 배포 작업
이 이뤄집니다.
또한 기존 dev 서버에서 4개의 포트포워딩 또한 굳이 그럴 필요가 없어졌습니다.
새로운 서버가 추가됨에 따라 dev, prod 서버 각각 Nginx에서 포트포워딩을 동일하게 FE:3000, BE:8080
으로 변경하였습니다.
이렇게 카페인 팀에서는 dev, prod 환경을 분리했습니다.
감사합니다!