99클럽 36일차 TIL: jenkins

2024. 5. 9. 12:54개발 공부

728x90
반응형

#1. 오늘의 학습 키워드

jenkins에 대해

  • 저번 포스트 때 DevOps 와 CI, CD 등에 대한 개념에 대해 알아보았다.
    • https://second-brain.tistory.com/53
    • CI
      • 여러 개발자들의 코드들의 지속적인 통합.
    • CD
      • 코드를 항상 배포 가능한 상태로 유지하고, 이를 자동화한다.
    • CI/CD 는 개발자들의 새로 구현한 코드들이 사용자가 사용 가능한 서비스까지 전달하는 과정을 지속 가능한 상태와 자동화 된 과정으로 유지시키는 것이다.
  • 그럼 이번엔 파이프라인을 구축하여 배포, 롤백 등을 자연스럽게 해주는 것에 대해 알아보자
    • jenkins

#2. 공부한 내용

1. Jenkins

- 배포, 테스트, 도커 빌드 등 CI/CD 환경을 구축하기 위한 간단한 방법을 제공한다.
  • 자바 Runtime에서 동작한다.
  • 빌드, 배포, 테스트, 도커 빌드, 암호화, 파이프라인 등 원래 각자 수행해야 돼서 복잡했던 작업들을 하나의 플러그인으로 모듈화 시켜서 Jenkins 하나로 CI / CD 환경을 구축하고, 자동화 시킬 수 있게 도와준다.
  • 젠킨스를 오픈소스 자동화 서버로 볼 수 있다.
    • 1400 가지 정도의 플러그인을 가지고 있고 이 플러그인을 아래와 같이 5가지 영역으로 나눌 수 있다.
      • 플랫폼
      • UI
      • 관리
      • 소스코드 관리
      • 빌드 관리
    • 따라서 Jenkins 에서 CI / CD 측면은 Jenkins 가 제공할 수 있는 자동화 프로세스 중 한 가지일 뿐이다.

1) Jenkins 파이프라인

  • 파이프라인
    • CI/ CD 파이프라인을 Jenkins 에 구현하기 위한 일련의 플러스인들의 집합 및 구성
    • 파이프라인은 선언적 또는 스크립트 일 수 있다.
      • Pipeline Syntax
      • 선언적이 더 쉽다.
    • Pipeline DSL ( Domain Specific Language ) 로 작성된다.
  • 파이프라인 Section 구성
    • Agent Section
      • Jenkins는 많은 일을 해야하기 때문에, 여러 slave node를 생성하여 일을 할당 시킬 수 있다.
      • node를 생성하는 것과 일을 할당하는 작업을 담당
    • Post Section
      • 후속 조치에 대한 작업을 결정하는 섹션
      • Stage Section 에서의 작업이 끝난 후의 결과에 따라서 Post Section에 작업이 실행됨
    • Stage Section
      • 어떤 일을 처리할 지 정의하는 섹션
      • 일련의 Stage를 정의하는 것
    • Steps Section
      • 한 Stage 내의 단계로 일련의 스탭을 보여준다.
      • 사용할 수 있는 스탭은 플러그인이 제공.
      • 스탭에 해당하는 작업은 플러그인의 메서드를 활용하여 일을 처리하는 등의 작업이다.
  • Pipeline → Agent → Stages → steps 순으로 작업 세분화가 이뤄진다.


#3. 오늘의 회고

  • 정리:
    • Jenkins 는 CI, CD를 지원하는 자동화 도구로 널리 사용된다.
    • 장점:
      • 유연성
        • 다양한 플러그인 제공 → 다양한 개발환경, 툴 지원
      • 확장성
        • 클러스터링이나 스케일링이 가능하다. 동시에 여러 작업 지원도 가능
      • 개방성
        • 오픈소스.
        • API 통신 가능하여, 다른 도구 및 시스템과 통합 용이.
      • 넓은 풀
        • 널리 사용되며, 다양한 커뮤니티와 생태계가 형성 되어있어서,
        • Jenkins에 대한 지식은 널리 퍼져있다.
    • 단점:
      • 복잡성
        • 많은 플러그인이 지원되는 만큼 초기 설정 및 관리가 다소 복잡하다.
        • Pipeline 구성을 위한 별도의 언어를 알아야한다.
      • 자원소모
        • Jenkins 는 서버 리소스를 많이 요구할 수 있다.
      • 보안
        • 특정 플러그인의 취약성 등에 의한 보안 취약점 발생 가능
728x90
반응형