왜 CI 가 필요 할까 ?
대부분 깃허브(통합 저장소)를 사용해서 다른 브랜치를 통해 서로가 만든 코드를 dev(개발 단계), main(실제 서비스 단계) 브랜치로 관리하고 조금
더 세분화 시키면 내가 짠코드는 yohan이라는 브랜치에 코드를 저장한다.
이때 서로 다른 브랜치 병합(merge) 하는 과정에서 문제가 많이들 발생한다. 이것을 방지 하고자 CI 파이프라인이 사용된다.
그리고 또한 모든 커밋 과정에서 테스트 실행으로 코드 품질에 유리하다.
이렇게 테스트 실행시 실패하면 빠르게 오류를 수정 할 수 있고 동기화된 코드를 공유 하는것이 장점이다.
위에 CI가 코드 품질을 보장하는 단계라면, 이제 남은 건 이 코드를 실제 서버에 올리는 일이다.
사실 예전에는 우리가 scp 명령어나 직접 ssh 접속해서 build 하고 배포해야 했다. 이 과정은 시간도 오래 걸리고 실수 위험도 크다.
이 문제를 해결하기 위해 CD 파이프라인을 사용한다.
CD를 통해 테스트까지 끝난 코드를 자동으로 서버에 배포할 수 있다. 사람이 일일이 서버에 들어가지 않아도, 코드가 검증되는 순간 바로 서비스에 반영되는 것이다.
AWS, Jenkins, gitAction 3가지 개발 환경에 따라 자기에 맞는 도구를 선택하시면 될거 같습니다! 저는 aws를 사용하지 않고 리눅스로 서버 구축및 포트포워딩도 해놓은 상태라서 gitAction 을 사용해서 CICD 구축을 진행하겠습니다!
솔직히 예전 프로젝트 때는 CI/CD를 구축하지 않고 진행했다.
그래서 새벽 2시 30분부터 4시 반까지 서버에 코드를 직접 올리고, 항상 쓰던 scp 명령어와 tomcat의 bin 폴더에서 ./start.sh를 실행해야 했다.
이 과정을 반복하다 보니, “아… 이게 바로 자동화가 필요한 이유구나” 하고 뼈저리게 느꼈다.
뭐! 이전 프로젝트때 노가다 했으니까 CICD 구축할때도 도움도 되겠죠?
이후 글에는 git Action 을 통해 CI/CD 구축 해보겠습니다!
긴 글 읽어 주셔서 감사합니다! :)