앱 자체를 만들고 최적화 시키는 것에만 관심을 가지고 있었습니다.
그런데 제가 서버를 멘토링을 하고 있는 멘티가 CI/CD와 젠킨스에 대해 관심을 갖더라구요.
저는 아는 바가 없어서 해줄 얘기를 찾기 위해 구글링을 하다보니 젠킨스를 사용해보고 싶다는 생각이 격렬히 들었습니다.
그동안 로컬에서 API를 빌드하고 테스트하고 테스트가 완료된 API를 서버에 올려주는 과정이 매우 귀찮다고는 생각하고 있었는데 역시 이런 귀찮음은 역사가 오래된 귀찮음이었나 봅니다.
사설은 줄이고 CI/CD와 젠킨스에 대해 알아봅시다!
CI/CD
- CI(Continuous Integration) : 여러 개발자들의 코드를 계속해서 통합하는 것.
- CD(Coutinuous Delivery) : 개발자들이 코드를 계속 작성하면, 사용자 및 내부 사용자들(즉, QA 등등)이 계속 쓸 수 있게 만드는 것
지속적으로 배포가능한 상태를 유지하는 것
Jenkins (젠킨스)
서버에 기능을 추가 하려면 개발자가 개발자 노트북에서 개발을 하고 테스트까지 한 다음에 이상이 없으면 사용자가 사용할 수 있게 수정된 내용을 서버에 반영해야 한다.
빌드는 서버에 올릴 수 있는 상태로 만드는 것을 빌드(Build)라고 한다.
서버에 올려서 사용자가 사용 할 수 있게 하는 것은 배포(Deploy)라고 한다.
Build를 자동화 해야하는 이유
빌드는 하루에 한번을 할 수도 있고 안할수도 있지만 1주일, 1달로 따지면 꽤 많이 한다. 그리고 이게 1년이면 꽤 많은 시간이라고 할 수 있다.
예를들면 옛날에는 자바를 빌드 할 때 javac라는 커맨드를 직접 사용 했지만 지금은 IDEA를 쓰면 main()메소드를 실행하면 javac를 하고 java가 실행이 된다.
이렇게 반복되는 과정은 버튼 하나 또는 단축키로 자동화 시킬 필요가 있다.
왜냐하면 이 작업을 하는데도 집중력, 긴장감 등이 소모 되기 때문이다. 그리고 빌드는 시간이 꽤 걸리는 작업인데(30초 이상 걸림) 빌드를 실행 시키고 나서 빌드가 될 때까지 기다리는 시간도 모아보면 엄청 길 것이다.
개발자의 시간은 소중하기 때문에 최대한 반복작업은 자동화 할 필요가 있다.
암튼 나도 손꾸락으로 빌드를 5개월쯤 하니 자동화를 안시킬 수가 없었다. 수정하고 빌드하고 dev에 올리고 하는데 너무 시간을 많이 잡아먹기 때문이다.
Jenkins란?
위에서 이야기한 빌드를 자동화 해주는 툴이다.
Jenkins는 빌드를 자동화 시키기 위해 사용한다.
젠킨스 단점
- 규모가 작은 프로젝트의 경우, 설정하는데 리소스 낭비가 발생할 수 있다.
- 호스팅을 직접해야하기 때문에 서버 운영 및 관리 비용이 발생한다.
Reference
https://sungks.tistory.com/169
'STUDY > 서버' 카테고리의 다른 글
[JAVA] JVM 구조 총정리 (0) | 2022.09.04 |
---|---|
[TI/SPRING] IOC, DI 정의/ 장점 (0) | 2022.02.18 |
[TI/Spring] 스프링이란? EJB와 비교 (0) | 2022.02.17 |
백엔드 개발자 기술면접 질문 정리 (0) | 2022.01.27 |
[SERVER][SPRING] 검색하기 API (0) | 2022.01.21 |