[TIL]20230714 - CI/CD
지금까지 개발한 스프링부트 프로젝트를 배포할때는 아래와 같은 과정을 거쳐 배포하였다.
- 로컬에서 개발 완료 후 빌드하여 jar파일 생성
- 생성된 jar파일을 ec2로 복사하여 업로드
- ec2로 이동하여 java -jar를 통해 실행시키기
하지만 위의 경우 코드의 수정이 있을 때 마다 위와 같은 과정을 반복해야한다. 이는 개발과정에서 매우 번거로운 일이다.
그리고 앞으로는 협업하는 과정이 주를 이루기 때문에 혹시라도 배포한 코드에 버그등 오류가 없어야 한다.
CI/CD 자동화를 통해 코드가 수정될때마다 매번 빌드 - 배포할 필요 없이 자동적으로 테스트를 통해 버그를 찾고 검증된 코드를 현재 실행중인 jar파일의 중단 없이 배포할 수 있다.
CI
CI는 Continous intergration 즉, 지속적인 통합이라는 의미이다.
지속적인 통합이란 어플리케이션의 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트 되어 공유 레포지토리에 통합되는 것을 의미한다.
다수의 개발자가 한개의 프로젝트를 공유하여 개발하는 환경에서 기능을 추가하거나 오류를 고칠때 마다 커밋을 통해 깃허브 원격 리포지토리에 버전 업데이트를 하는데 이때 수많은 커밋들이 쌓이게 된다.
그럴 때마다 빌드 및 테스트를 자동화하여 버그를 사전에 알아차릴 수 있고 병합까지 수행할 수 있다.
이러한 CI의 핵심 목표는 버그를 신속하게 찾아 해결하고, 소프트웨어의 품질을 개선하고, 새로운 업데이트의 검증 및 릴리즈의 시간을 단축시키는 것에 있다.
CD (Continuous Delivery & Continuous Deployment)
CD는 Continuous Delivery 혹은 Continuous Depolyment 두 용어 모두의 축약어 입니다.
해석하면 지속적인 서비스 제공 혹은 지속적인 배포 라는 의미이다.
Continuous Delivery는 공유 레포지토리로 자동으로 Release 하는 것,
Continuous Deployment는 Production 레벨까지 자동으로 deploy 하는 것을 의미한다.
정리하자면, CI가 새로운 소스코드의 빌드, 테스트, 병합까지를 의미하였는데,
CD는 개발자의 변경 사항이 레포지토리를 넘어, 고객의 프로덕션(Production) 환경까지 릴리즈 되는 것을 의미한다.
이러한 CI/CD를 자동화 단계까지 끌어올히면 개발자들은 오직 개발에만 몰두할 수 있는 환경이 됩니다. 또한 고객들에게도 안정감 있는 서비스를 빠르게 배포하여 운영할수 있다.
https://tjsdn9803.tistory.com/67
[TIL]20230715 - Github Actions로 CI/CD 구축하기
-- 게시글 환경 설정 -- Spring Boot : 3.1.1 Java : 17 Gradle : 8.1.1 -- 사용한 의존성 -- CI/CD 연습을 위해 최소한의 의존성을 추가하여 프로젝트를 생성하였습니다. dependencies { //implementation 'org.springframework.b
tjsdn9803.tistory.com