티스토리 뷰

목차



    "테크씬 - 핵심 요약 후 시작합니다."

     

    • Jenkins는 오픈 소스 CI/CD 도구로 소프트웨어 개발 프로젝트의 자동 빌드, 테스트 및 배포를 지원하며, API 서버와 협력하여 개발 프로세스를 자동화하고 지속적인 개선과 배포를 가능하게 함
    • Jenkins 대체안으로는 Travis CI, GitLab CI/CD, CircleCI, Bamboo, TeamCity 등이 있으며, 각 도구들은 특정한 사용 사례나 기능에 초점을 맞추고 있어 프로젝트의 요구 사항과 선호도에 따라 선택할 수 있음
    • GitLab과 Jenkins는 서로 협력하여 개발 프로세스를 향상시키며, GitLab에서 소스 코드를 관리하고, Jenkins는 GitLab과 통합하여 소스 코드 변경사항을 감지하고 자동 빌드 및 테스트를 수행한 후 문제가 없다면 배포를 진행

     


     

    안녕하세요, 테크씬입니다. DX 담당자로서 회사에서 업무를 보던 중, Jenkins와 GitLab을 활용하여 API 서버를 구축할 필요가 있었습니다. 데이터 분석 Background를 중심으로 하기에 이에 대해 깊은 이해가 없었기에 스스로 한번 정리해 볼 필요를 느꼈죠 :) 오늘은 Jenkins, GitLab, 그리고 API 서버와의 관계를 설명해 보겠습니다. 또한, 관련한 여러 서비스를 소개시켜 드릴게요!

     

    Jenkins는 무엇이고, API 서버와의 관계는?

    CI/CD 다이어그램
    출처: https://disbug.io/

    Jenkins는 오픈 소스의 CI/CD(지속적인 통합 및 지속적인 배포) 도구로서, 소프트웨어 개발 프로젝트에서 자동 빌드, 테스트 및 배포를 지원합니다. 이를 통해 개발자들은 프로젝트의 품질을 높이고 배포 시간을 줄일 수 있습니다. Jenkins는 다양한 플러그인을 통해 확장 가능하며, 여러 언어와 환경을 지원합니다.


    Jenkins와 API 서버와의 관계는 다음과 같이 설명할 수 있습니다. API 서버는 일반적으로 애플리케이션의 백엔드와 프론트엔드 사이에서 데이터를 주고받는 역할을 하는 중앙 서버잖아요. Jenkins는 API 서버의 소스 코드 변경사항을 감지하고, 자동으로 빌드 및 테스트를 수행한 후, 문제가 없다면 API 서버를 실제 운영 환경에 배포하는 역할을 합니다.


    이를 통해 API 서버의 개발 및 유지보수가 더욱 용이하게 되며, 개발자들은 코드의 품질과 안정성을 높이는데 집중할 수 있습니다. 이에 따라 많은 개발자들이 Jenkins와 API 서버는 협력하여 개발 프로세스를 자동화하고, 지속적인 개선과 배포를 가능하게 합니다.




      


    Jenkins를 대체할 수 있는 소프트웨어들

    CI/CD 사진
    출처: https://blog.kakaocdn.net/

    Jenkins의 대체안으로는 여러 지속적인 통합 및 지속적인 배포(CI/CD) 도구들이 있습니다. 대표적인 도구들은 다음과 같습니다:

    1. Travis CI:
      Travis CI는 오픈 소스 프로젝트를 위한 CI/CD 서비스로, GitHub와의 통합이 잘 되어 있습니다. Travis CI는 간단한 설정과 높은 수준의 사용자 친화성으로 인기가 있습니다.
    2. GitLab CI/CD:
      GitLab은 소스 코드 관리와 CI/CD 기능을 통합한 솔루션입니다. GitLab CI/CD는 GitLab과 함께 사용하기 때문에 설정 및 관리가 간편하며, 강력한 자동화 기능을 제공합니다.
    3. CircleCI:
      CircleCI는 클라우드 기반의 CI/CD 서비스로, GitHub과 Bitbucket과의 통합이 가능합니다. CircleCI는 빠른 빌드 속도와 유연한 구성을 제공하며, 다양한 프로그래밍 언어와 프레임워크를 지원합니다.
    4. Bamboo:
      Atlassian에서 개발한 Bamboo는 Jira와 Bitbucket과 같은 다른 Atlassian 제품과의 통합이 잘 되어 있습니다. Bamboo는 온프레미스 및 클라우드 버전을 모두 제공하며, 기능이 풍부하고 확장 가능한 CI/CD 도구입니다.
    5. TeamCity:
      JetBrains에서 개발한 TeamCity는 온프레미스 CI/CD 서버로, 다양한 프로그래밍 언어와 프레임워크를 지원합니다. TeamCity는 확장 가능한 아키텍처와 강력한 기능들을 제공합니다.
      이 외에도 여러 CI/CD 도구들이 있으며, 각 도구들은 특정한 사용 사례나 기능에 초점을 맞추고 있습니다. 프로젝트의 요구 사항과 선호도에 따라 적절한 도구를 선택하면 됩니다.

     

     


    GitLab과 Jenkins 간의 관계

    GitLab과 Jenkins는 서로 다른 소프트웨어 도구이지만, 함께 사용되어 개발 프로세스를 향상시키는데 도움이 됩니다. 각 도구는 다음과 같은 역할을 합니다.

    • GitLab:
      GitLab은 소스 코드 저장소 및 버전 관리 시스템을 제공하는 도구로, 프로젝트와 코드를 조직하고 관리하는데 사용됩니다. 또한, GitLab은 자체 CI/CD 기능을 제공하여 지속적인 통합 및 배포를 지원합니다. 그러나 일부 사용자들은 Jenkins와 같은 외부 CI/CD 도구를 선호하기도 합니다.
    • Jenkins:
      Jenkins는 지속적인 통합 및 지속적인 배포를 위한 도구로, 소프트웨어 개발 프로젝트에서 자동 빌드, 테스트 및 배포를 지원합니다. 다양한 플러그인을 통해 확장 가능하며 여러 언어와 환경을 지원합니다.
    • GitLab과 Jenkins 간의 관계는 주로 협력적입니다. GitLab에서 소스 코드를 관리하고, Jenkins는 GitLab과 통합하여 소스 코드 변경사항을 감지하고 자동 빌드/테스트를 수행합니다. 이후 문제가 없다면 Jenkins는 배포를 진행합니다.
    • 두 도구를 연결하기 위해 GitLab에서는 webhook을 사용하여 Jenkins에 알림을 보내고, Jenkins는 GitLab 플러그인을 사용하여 GitLab과 통신하죠. 이를 통해 두 도구가 원활하게 협력하며 개발 프로세스를 자동화하고 지속적인 개선과 배포를 가능하게 합니다.




    GitLab과 이름도 비슷한 GitHub는 뭐지?

    GitLab과 GitHub은 모두 웹 기반의 Git 저장소 호스팅 서비스로, 소스 코드의 버전 관리 및 협업을 돕습니다. 두 서비스 모두 널리 사용되고 있으며, 일부 공통 기능을 제공합니다. 하지만 두 서비스는 몇 가지 주요한 차이점도 가지고 있죠!

    공통점:

    1. 버전 관리: 두 서비스 모두 Git을 기반으로 한 소스 코드 버전 관리 기능을 제공합니다.
    2. 협업 도구: 이슈 트래커, 코드 리뷰, 병합 리퀘스트(Merge Requests)와 같은 협업 도구를 제공합니다.
    3. 통합: 두 서비스 모두 다양한 외부 서비스와 통합이 가능하며, 지속적인 통합/배포(CI/CD) 툴과 연결할 수 있죠.

    차이점:

    1. 솔루션 범위:
      GitHub는 주로 소스 코드 관리에 초점을 맞추고 있습니다. 반면, GitLab은 소스 코드 관리뿐만 아니라 자체 CI/CD 기능, 프로젝트 관리 도구 등을 포함한 종합적인 솔루션을 제공합니다.
    2. 자체 호스팅 옵션:
      GitHub은 무료 및 상용 클라우드 서비스를 제공합니다. GitLab은 클라우드 서비스뿐만 아니라 온프레미스(자체 서버)에 설치하여 사용할 수 있는 오픈 소스 커뮤니티 버전과 상용 버전을 제공합니다. 이로 인해 GitLab은 보안 및 규정 준수가 중요한 기업에게 더 맞는 선택이 될 수 있습니다.
    3. UI/UX (사용자 인터페이스 및 경험):
      GitHub의 사용자 인터페이스(UI)는 간결하고 직관적이며, 사용자들 사이에서 널리 인기를 얻었습니다. GitLab의 사용자 인터페이스는 더 많은 기능을 제공하며, 복잡해 보일 수 있지만, 최근에 UI 개선을 위한 노력을 기울이고 있습니다.
    4. 오픈 소스 기조:
      GitLab은 오픈 소스 프로젝트로 시작되었으며, 현재도 오픈 소스 커뮤니티 에디션을 제공하고 있습니다. 이에 반해, GitHub는 원래 상용 소프트웨어였지만, Microsoft에 인수된 후에 오픈 소스 프로젝트를 지원하기 시작했습니다.
    5. 비용과 요금제:
      두 서비스 모두 무료 요금제를 제공합니다. 그러나 GitLab은 무료 요금제에서도 CI/CD 기능을 포함하고 있습니다. 반면에, GitHub는 무료 요금제에서는 제한적인 CI/CD 기능을 제공하며, 더 많은 기능을 활용하려면 유료 요금제로 업그레이드해야 합니다.
    6. 커뮤니티 및 인기도: GitHub는 널리 인기를 끌고 있는 서비스로, 오픈 소스 프로젝트와 개인 프로젝트를 포함한 대규모 개발자 커뮤니티를 가지고 있습니다. GitLab은 GitHub에 비해 상대적으로 작은 커뮤니티를 가지고 있지만, 전체 솔루션과 오픈 소스 정신 덕분에 계속 성장하고 있습니다.

    결론적으로, GitLab과 GitHub은 각각의 장단점이 있으며, 프로젝트의 요구 사항과 개인 또는 기업의 선호에 따라 선택할 수 있습니다. 


    [관련 포스팅]

    2023.04.05 - [데이터] - 에어플로우의 놀라운 기능: Apache Airflow로 데이터 파이프라인 강화

     

    에어플로우의 놀라운 기능: Apache Airflow로 데이터 파이프라인 강화

    "테크씬 - 핵심 요약 후 시작합니다." Apache Airflow는 데이터 파이프라인을 관리하고 오케스트레이션 하기 위한 강력한 오픈 소스 플랫폼으로, 동적 파이프라인 생성, 작업 재시도 및 모니터링과

    techscene.tistory.com

    2023.02.06 - [개발] - 데이터 직군 안내서: DA, TA, DE, DS, ML엔지니어, BI 분석가

     

    데이터 직군 안내서: DA, TA, DE, DS, ML엔지니어, BI 분석가

    "테크씬의 5줄 요약" • 데이터 분야의 주요 역할에는 DA, TA, DE, ML엔지니어, BI분석가, DS가 포함됨 • 각 역할에는 고유한 책임, 기술 및 자격이 존재함 • 데이터 분석/시각화, 머신러닝 알고리즘

    techscene.tistory.com

     

     

    반응형