github actions 기본 - 1

BackEnd_Ash.log·2024년 12월 6일
0

데브옵스

목록 보기
1/4

github actions 기본

CI/CD는 테스트(Test), 통합(Merge), 배포(Deploy)의 과정을 자동화해준다.
많은 툴들이 존재하지만 우리는 그중에서 github actions 를 사용할 것이다.

github actions 는 따로 빌드 서버가 필요없다.
빌드용 서버가 따로 필요없는 Github Actions를 활용해서 CI/CD를 구축할 것이다.

Jenkins의 단점으로는 별도의 서버에 구축을 해야 한다는 단점이 있다. 이 때문에 서버를 빌리는 비용이 발생하게 된다. 하지만 Github Actions는 별도의 서버 구축 없이 Github에 내장되어 있는 Github Actions 기능을 사용할 수 있다. 비용적인 측면도 유리하고 셋팅하는 데 시간을 쓸 필요도 없다.

하지만 그럼에도 불구하고 Jenkins 는 회사에서 많이 사용한다.

Jenkins가 회사에서 많이 사용되는 이유는 GitHub Actions와 비교했을 때 다음과 같은 강점과 특성을 가지고 있기 때문이다.


1. 오픈소스 및 커스터마이징

  • 완전한 오픈소스: Jenkins는 오픈소스로 제공되며, 기업에서 필요에 따라 소스 코드 수정 및 커스터마이징이 가능합니다.
  • 플러그인 생태계: Jenkins는 약 1800개 이상의 플러그인을 제공하며, 특정한 CI/CD 요구 사항에 맞게 확장할 수 있습니다.
    • 예: Jenkins Pipeline, Blue Ocean 등.
  • 특정한 CI/CD 프로세스가 복잡한 경우, Jenkins를 사용하여 세부적으로 설계하고 조정할 수 있습니다.

2. 독립성 및 보안

  • 자체 서버 운영: Jenkins는 별도의 서버에서 작동하기 때문에 기업이 완전히 독립적으로 관리할 수 있습니다.
  • 보안 제어: GitHub Actions는 클라우드 기반으로 GitHub 환경에 의존하지만, Jenkins는 내부 네트워크에 구축할 수 있어 민감한 데이터나 코드가 외부로 노출될 가능성을 줄입니다.
  • 사내 규제 준수: 금융, 의료, 정부 기관 등 강력한 규제가 필요한 산업에서는 외부 클라우드 사용이 제한되므로 Jenkins가 더 적합합니다.

3. 유연한 환경 지원

  • 다양한 CI/CD 환경: Jenkins는 모든 형태의 소프트웨어 개발 환경(로컬 서버, 프라이빗 클라우드, 온프레미스 서버 등)에서 사용할 수 있습니다.
  • GitHub Actions는 GitHub 리포지토리에 종속적이지만, Jenkins는 GitHub뿐만 아니라 Bitbucket, GitLab 등 다양한 소스 코드 관리(SCM) 도구와 연동 가능합니다.

4. 대규모 프로젝트에 적합

  • 확장성: Jenkins는 수십 개에서 수백 개의 파이프라인을 동시에 실행하도록 설계할 수 있어 대규모 팀과 프로젝트에 적합합니다.
  • GitHub Actions는 워크플로우가 제한적일 수 있으며, 병렬 실행 제한은 무료 플랜이나 팀 플랜에서 추가 비용을 유발할 수 있습니다.

5. 오랜 커뮤니티와 안정성

  • Jenkins는 CI/CD 도구 중 가장 오래된 도구 중 하나로, 대규모 커뮤니티와 안정성을 보장합니다.
  • 많은 기업이 이미 Jenkins를 기반으로 한 CI/CD 파이프라인을 구축했기 때문에 새로운 도구로 전환하는 데 시간과 비용이 많이 들 수 있습니다.

6. 비용 측면

  • GitHub Actions는 퍼블릭 리포지토리에서는 무료로 제공되지만, 프라이빗 리포지토리에서 대규모로 사용하거나 고성능 런너를 요구하는 경우 비용이 발생할 수 있습니다.
  • Jenkins는 초기 구축 및 유지 비용은 있지만, 장기적으로 많은 워크로드를 처리하는 데 유리할 수 있습니다.

7. 특화된 CI/CD 요구 사항

  • 복잡한 워크플로우: 대규모 배포 프로세스(예: Blue-Green Deployment, Canary Deployment)나 다단계 빌드 프로세스는 Jenkins가 더 유리할 수 있습니다.
  • 하이브리드 클라우드: 온프레미스와 클라우드를 혼합한 하이브리드 환경에서 Jenkins가 더 잘 작동합니다.

Jenkins는 초기 설정과 관리의 복잡성이라는 단점이 있지만, 확장성, 보안성, 유연성이 중요한 대규모 조직에서는 여전히 선호됩니다. 특히 복잡한 요구 사항, 내부 데이터 보안, 대규모 파이프라인 관리가 필요한 경우 Jenkins는 GitHub Actions보다 더 강력한 선택이 될 수 있습니다.

즉, Jenkins는 "관리의 복잡성"이라는 단점을 감수할 만큼 기업의 다양한 CI/CD 요구 사항을 충족시키는 도구입니다.

Jenkins 는 충분한 강점을 가지고 있지만 우리는 우선 Github Actions 를 사용해서 학습하도록 한다.

profile
꾸준함이란 ... ?

0개의 댓글