새 프로젝트를 준비하며 빌드/배포 자동화 구성을 직접 처리해보기 위해 학습하며 얻은 정보를 저장해두려고 한다.
: Java의 경우 Gradle, Node.JS는 npm 등 각 언어별로 프로젝트를 다양한 빌드 툴로 패키징하고 해당 패키지를 실행시켜 서비스를 운영하게된다.
나는 Java Spring Boot로 개발을 진행하며 Gradle로 빌드하여 Jar 파일을 만들고 해당 파일을 서버 내에서 실행시켜 서비스를 진행했는데, Intelij를 통해 개발할 때는 단순히 실행버튼을 눌러 실행시켜 로컬에서 서비스하며 테스트를 했다. 그러다 막상 별도의 서버에서 운영을 할때는 어떻게 해야하는 가에 대한 의문이 들었다.
프로그램의 서비스 단계를 개발 -> 빌드 -> 배포 -> 실행의 4단계로 나눈다면 나는 개발 말고는 잘 모르던 것이다.
또한 근래의 서비스는 기획부터 제품을 고객에게 전달하는 과정을 한번만 하는 폭포수형 개발 방식과는 달리 지속적으로 요구사항을 수집하고 단위별로 지속적인 수정사항을 업데이트 하는 방식을 추구하기 때문에 개발 소스의 지속적인 통합(Continuous Integration)과 지속적인 배포(Continuous Deployment)의 개념이 떠오른 것이다.
: 정말 다양한 툴들이 시중에 많이 있지만 나는 그 중 이용자가 많고 눈여겨 보던 Jenkins와 Github Actions 중에 하나를 선택하기로 했다.
: 위와 같은 차이점을 확인해봤을때 나는 Github를 사용하여 협업을 진행하고 있고, 구성을 쉽고 빠르게 할 수 있다는 장점을 가진 Github Actions를 사용하기로 했다.
프로젝트에서 사용할 CI/CD 툴은 선택을 했고 다음에는 Github Actions를 통한 CI/CD 구축에 대한 학습을 하고 내용을 정리하자.