Skipalong's tistory
231220 TIL - CI/CD 본문
오늘은 스탠다드반 수업때 배운 CI/CD에 대한 내용을 정리해보겠다.
CI(Continuous Integration) - 지속적인 통합
CI는 버그수정이나 새로운 기능들을 Git과같은 Repository에 주기적으로 build, test, merge되는 것을 의미한다.
협업을 할 때 여러가지 문제가 생길 수 있다. 서로 올린 코드가 conflict날수도 있고 테스트코드를 없이 검증되지않은 코드를 배포하게 될 수 도 있다.
conflict가 나는 문제는 코드 변경사항을 주기적으로 빈번하게 병합을 하는 것이다.
또 테스트코드없이 검증되지않은 코드를 배포하게될 수 있는 문제점은 PR 단계에서 코드리뷰를 거쳐서 merge될 수 있게 하고, 코드리뷰를 통과하면 CI Script가 실행되게 하여 build, test를 성공하면 그 뒤에 merge되게 자동화를 하는 것이다.
이렇게 CI를 통해 주기적인 merge로 conflict를 피해 생산성을 높이고 test를 통과해야 merge를 할 수 있기 때문에 UnitTest가 세분화되고 안정성있는 퀄리티가 향상된 코드를 만들 수 있게 된다.
CD(Continuous Delivery or Deployment) - 지속적인 제공 or 배포
CD는 회사에 따라 CI를 통해 전달된 코드를 개발자 또는 검증팀이 수동으로 검증을 한 뒤 배포를 할 수도있고, 배포과정까지 자동화하여 Release 준비가 되자마자 배포될 수 있게 하는 작업이다.
이러한 개발부터 검증, 배포까지의 과정을 CI/CD 라고 하고
이를 사용하는 대표적인 툴들의 장단점을 정리해보겠다.
- Github Actions
- 장점
- Github와의 통합이 잘 되어있다.
- 무료플랜에서 사용할 수 있다.
- 비교적 최신기술이다.
- 단점
- 제한된 build time이 존재할 수 있다.
- 장점
- Jenkins
- 장점
- 유연하고 확장성이 뛰어나다.
- 다양한 플러그인이 지원된다.
- 사용자가 많아서 커뮤니티가 활발하다.
- 단점
- 다양한 플러그인이 지원되는 만큼 설정이 복잡하다.
- 장점
나는 아직 개발하고 github repository에 올리는 정도의 개발만 하고 있지만 최근에 aws특강도 들었고, aws에 관한 강의도 더 듣게되면 배포까지 하게 되는데 기초단계부터 CI/CD의 개념을 잘 활용해 문제를 최소화하고 퀄리티있는 코드를 짜고 배포과정까지 탄탄하게 익혀두고 싶다.
'TIL' 카테고리의 다른 글
231222 TIL - JPQL 과 QueryDSL (0) | 2023.12.23 |
---|---|
231221 TIL - @DynamicInsert, @DynamicUpdate (1) | 2023.12.21 |
231219 TIL - JpaRepository (1) | 2023.12.19 |
231218 TIL -Scheduler, Cron (0) | 2023.12.18 |
231215 TIL - Paging, Sorting (0) | 2023.12.16 |