프로그래머스 데브코스 웹 풀사이클 18주차 - 1

Jenkins

- 자바로 작성된 오픈소스 자동화 서버
- 지속적 인도 프로세스를 구척 하는데 널리 사용됨 (장점 : 유연성과 확장성)
CI 단계
- 일반적으로 개발자가 소스 코드를 커밋,푸시하는 것으로 시작
- 응용 소프트웨어를 자동으로 빌드, 통합
- 테스트를 통하여 배포할 수 있는 상태임을 확인
CD 단계
- CI단계에서 소프트웨어가 배포 가능한 상태임을 확임하는 것으로 시작
- 응용 소프트웨어를 컨테이너 이미지로 만들어 냄
- 포드, 디플로이먼트, 서비스 등 다양한 오브젝트 조건에 맞춰 배포
젠킨스의 특징
다양한 프로그래밍 언어 지원
플러그인을 통한 확장
- 사용자가 직접 플러그인을 작성해 젠킨스의 기능을 확장하는 것도 가능
이식성
- 여러 종류의 컴퓨터에서 뿐만 아니라 컨테이너 및 클러스터 환경에도 부드럽게 적용
대부분의 소스 관리 시스템 지원
분산 처리 지원
- 마스터/슬레이브 구조를 채택하여 여러 노드에서 작업 수행
마스터 슬레이브 구조
- 슬레이브는 에이전트라 부르기도 함
- 마스터는 빌드 시작 및 트리거를 포착하고 알린 후 클라이언트와 통신하여 HTTP 요청을 처리
- 에어전트에서 실행중인 작업의 우선순위 조정 등 빌드 환경을 관리
- 에이전트는 마스터에 의한 개시 후 모든 작업 처리
코드를 파이프라인 구성
수평적 확장
조직이 늘어날 때 마다 마스터 인스턴스 수를 늘려가는 방식
- 비교 : 수직적 확장 - 마스터에 대한 부하가 증가함에 따라 마스터 시스템에 자원을 추가하는 방식
통합 자동화가 복잡해진다는 단점이 있으나, 다음과 같은 중요한 이점이있음
- 마스터 역할을 하는 컴퓨터의 하드웨어 사양에 대한 부담 감소
- 팀마다 다른 설정 가능
- 팀 전용 마스터 인스턴스가 있으므로 팀워크, 업무 효율 증가
- 마스터 인스터스 하나에 문제가 생겨도 다른 팀에 영향 최소화
테스트 인스턴스 vs 프로덕션 인스턴스
젠킨스 인스턴스는 항상 테스트, 프로덕션 용으로 분리 운용해야 함
- 개발팀보단 운영팀에서 주의를 기울여야 하는 부분
다음과 같은 시스템 설정 변경이 일어날 경우 프로덕션에 적용하기 이전 철저한 검증이 필요
- 젠킨스 소프트웨어 업데이트
- 신규 플러그인 적용
- CI/CD 파이프라인의 변경 및 유지보수
Helm

- 대표적인 쿠버네티스용 패키지 매니저
- 오브젝트 배포에 필요한 사양이 이미 정의된 차트를 이용해 패키지 검색 후 설치
- 공개되어있는 소프트웨어 패키지를 쿠버네티스에 배포하는 것 외에도 배포 효율화를 위해 많이 이용
- RedHat 계열의 npm, yum나 Debian계열의 apt와 비슷한 방식으로 동작