현재 상황
- ec2에 배포서버 1개, 배포db 1개, redis 1개, jenkins 1개 + etc = 총 6개 정도의 컨테이너가 동작중
- ci/cd 과정
- local에서 개발 진행
- 개발 사항을 PR, 이후 develop으로 merge
- develop이 업데이트되면 jenkins에서 webhook을 통해 업데이트 감지
- jenkins에서 깃허브의 develop으로 ec2 도커에 image build & deploy
- 문제점
- local에서 테스트를 통과하여도 ec2 환경에서는 장애가 발생할 수 있음
- 장애가 발생하면 배포 서버가 죽기 때문에, 유저의 원활한 서비스 이용이 불가능함
- develop을 수정할 때마다 배포가 되기 때문에 release를 따로 운용하지를 못함
해결 방안
- Develop서버와 Release서버를 분리하자
- 장점
- jenkins를 ec2에서는 사용하지 않기 때문에 메모리 부하가 굉장히 줄어듦
- 배포 환경에서 미리 테스트를 해볼 수 있기에, 배포시 장애가 생길 위험성이 줄어듦
- 어려운점
- 예산 문제로 ec2서버를 t3.medium으로 사용하기 위해서 develop서버는 local에서 돌리는 방법을 찾아야 함
- 도커 허브를 사용하는 스크립트를 공부해봐야함