초기에 CICD를 적용하지 않아 백엔드 서버를 업데이트 하려면 서버를 내려야 하는 문제점이 발생했다.
발생한 문제를 정리하니 다음과 같다.
일를 해결하기위해서 CICD의 필요성을 느꼈으며, 종류와 구현방법을 고민했다.
이와같은 두가지 방법정도를 고려했으며 선택은 CodeDeploy를 선택.
다음과 같은 아키텍쳐 구조를 가지며 1-5번과 같은 플로우를 따른다.
적용과정은 아래 블로그를 참조해서 가능했다.
참조 :
처음 CodeDeploy를 적용하고 이미지를 게시판에 업로드할 때 에러가 발생.
→ IOException : permission denied 권한문제 발생
→ 리눅스와 권한문제 를 참조.
ReadMe를 수정해도 재배포가 이루어지는 현상.
Main 브랜치에서 ReadMe를 수정 → Main 브랜치에 코드가 통합(변경)되었다고 판단해서 서버에 재배포를 반복하는 문제가 발생했다.
ReadMe의 경우 다른 브랜치나 IDE내부에서 수정을 완료한 다음 업로드 하도록 변경.
CICD는 편리함과 동시에 정확성을 요구한다.
업데이트를 정해진 단위(기능의 완성 또는 버전변경)에 따라 하지 않는다면 오히려 서버를 계속해서 재배포하는 낭비가 될 수 있단는점을 알았다.
또한 다양한 방법이 있으며 완전한 무중단이 아니기 때문에 실제로는 서버를 1개가 아닌 2개 이상의 서버를 동시에 제어할 필요성을 알게되었다.
다만 코드를 누구나 수정하고 업데이트할 수 있는점은 분명한 강점이며 프론트 개발자분들에게 더이상 서버를 잠시 내려도 되는지 물어보지 않아도 되는점이 최고의 장점이라고 느꼈다..