인프런 커뮤니티 질문&답변

Sanha Kang님의 프로필 이미지

작성한 질문수

실전! GitHub Actions으로 CI/CD 시작하기

시나리오4 워크플로우 구성하기 1

도커 볼륨 vs RDS, 롤백

24.07.31 12:13 작성

·

78

0

안녕하세요 강의 잘 봤습니다.

몇 가지 의문점이 생겨 질문을 드립니다.

  1. 개발 서버, QA, 스테이징 서버, 운영서버의 DB CI/CD는 현업에서 어떤 식으로 하나요?

찾아본 결과 두 가지 방식이 있었습니다.

  1. Docker volume

  2. Flyway 등 마이그레이션 라이브러리 사용

만약 EC2 RDS를 사용하면 다른 서버에서도 그냥 DB를 사용해야 하는 게 아닌가 하는 생각이 듭니다. 개발서버는 Docker를 사용하고 운영서버에서는 RDS를 사용하는 식으로 하지는 않을 것 같은데 관련 내용이 궁금합니다.

Docker volume을 사용하여 대량의 데이터를 관리하는 경우가 현업에서 있는지 궁금합니다.


  1. QA브랜치에서 테스트를 통과하지 못하면 수정 브랜치를 만들어 개발서버에 다시 머지하고 테스트하나요? QA브랜치 뿐만 아니라 다른 브랜치에 오류가 생기면 바로 머지 할 지(hotfix처럼), 개발 브랜치에 머지 해 테스트를 다시 할 지 선택하는 건지 궁금합니다.


  1. 풀 리퀘스트가 거절되면 통합된 코드들은 어떻게 되는 지 궁금합니다. 항상 롤백이 되는 거라고 이해하면 될까요?.

제가 잘 이해를 못한 부분이 있는 것 같아 확실히 하기 위해 질문을 남깁니다. 감사합니다~

답변 1

0

이상원님의 프로필 이미지
이상원
지식공유자

2024. 08. 02. 01:31

안녕하세요 ~

강의 커리큘럼을 넘어가는 부분도 있어서, 질문 주신 내용에 대한 답변이 정확하지 않을 수 있다는 점과

텍스트로 설명드리기 때문에 쉽게 이해가 되도록 전달하기가 조금 어렵다는 점을
미리 말씀드리고, 답변 드리겠습니다.

 

Q1.
개발 서버, QA, 스테이징 서버, 운영서버의 DB CI/CD는 현업에서 어떤 식으로 하나요?

A1.
제가 알기로 DB 관리에 CI/CD를 붙이는 케이스가 흔한 일은 아닙니다.
보통 DB는 따로 관리하는 경우가 많은데 CI/CD 와 통합해서 관리하는 케이스는 제 경험상 아직 본 적
없습니다.

요즘에는 data on EKS 라고해서 쿠버네티스 같은 컨테이너 오케스트레이션 환경에서 db를 운영하는
케이스도 있지만, 그 부분은 제가 잘 아는 부분이 아니라서 답변드리긴 어려울 것 같습니다.

Q2.

Docker volume을 사용하여 대량의 데이터를 관리하는 경우가 있는 지

A2.

도커로 데이터베이스 컨테이너를 운영하는 지 여부에 대한 질문으로
이해했는데, 이런 케이스는 본 적 없습니다.

 

Q3.

QA브랜치에서 테스트를 통과하지 못하면 수정 브랜치를 만들어 개발서버에
다시 머지하고 테스트하나요?

QA브랜치 뿐만 아니라 다른 브랜치에 오류가 생기면 바로 머지 할 지(hotfix처럼), 개발 브랜치에 머지 해 테스트를 다시 할 지 선택하는 건지 궁금합니다

 

A3.

이 부분은 질문주신 내용에 대해 잘 이해를 못해서, 제가 이해한 부분까지만 답변드리겠습니다.

 

말씀주신 내용은 상황마다 그리고 어떻게 파이프라인을 구성했는지에 따라 조금 다를 것 같습니다.

강의에서는 QA 브랜치는 따로 사용하지 않고, 개발 환경 배포에 성공하면 바로 태깅을 해서

QA 환경으로 배포를 진행하는 방법으로 시나리오를 구성했습니다.

 

다른 브랜치에 오류가 생기면 이라는 의미를 그 환경에 문제가 생기면으로 이해하고 답변드립니다.

문제가 생길 때 빠르게 조치하기 위한 작업을 진행할 때 hotfix 작업을 진행하게 되는데요.

hotfix 작업을 어떻게 진행하는지는 케이스마다 다를 것 같아서, 아래는 참고용으로 봐주시면 될 것 같습니다.

운영 환경 브랜치로 master branch를 사용하고 있다면 master branch 기반으로
새로 hotfix 브랜치를 만들고, hotfix 브랜치로 변경사항에 대한 커밋을 추가합니다.

이 때 추가되는 커밋마다 테스트를 실행하고, 테스트도 통과되고 hotfix에 필요한 코드 수정이 완료되면

hotfix 브랜치에서 master branch로의 PR을 머지해서 빠르게 운영 환경에 hotfix 코드를 반영합니다.

이렇게 되면, 개발 환경에서는 hotfix 관련 코드가 없으니 운영 환경에서 개발 환경으로 다시 PR을 생성해서 머지하는 과정을 진행합니다.

 

Q4.

풀 리퀘스트가 거절되면 통합된 코드들은 어떻게 되는 지 궁금합니다. 항상 롤백이 되는 거라고 이해하면 될까요?

 

A4.

어떤 의미의 롤백을 말씀하시는지 제가 잘 이해를 못했습니다.

PR이 머지되지 않고, closed된다면(거절) 해당 브랜치에 코드는 남아있게 되고

배포는 진행하지 않게 됩니다.

예를 들어, feature/123 에서 dev branch로 PR을 생성했는데 이 PR 이 closed된다면
feature/123에는 커밋이 있지만 dev branch로 반영되지 않았으니 배포는 없고,
feature/123 브랜치만 남아있게됩니다.

 

질문주신 내용들에 대해 최대한 답변드리려고 했습니다만, 답변하기 모호한 것들이 있어서

명확하게 이해하시기에 어려움이 있을수도 있다라는 생각이 듭니다.

 

몇 가지 추가적인 정보나 구체적인 예시를 제공해 주시면 더욱 정확하고 도움이 되는
답변을 드릴 수 있을 것 같습니다.
필요한 부분에 대해 더 자세히 설명해주시면, 그에 맞춰 도움을 드리겠습니다.
감사합니다.