티스토리 뷰

목차



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

     

    • DevOps 많이 들어보셨죠? CI/CD는 DevOps의 핵심 요소 중 하나입니다.
    • 지속적 통합(CI, Continuous Integration) 및 지속적 배포(CD, Continuous Delivery)는 소프트웨어 팀이 소프트웨어를 1) 빌드, 2) 테스트 및 3) 배포하는 프로세스를 자동화하여 더 빠르고 효율적으로 소프트웨어를 개발할 수 있도록 도와주는 방법론입니다.
    • CI/CD를 구현하려면 우선 1) 버전 제어 시스템을 설정하고, 2) 지속적 통합(CI)을 구현하며, 3) 지속적 배포(CD)를 구현하고, 4) CI/CD 파이프라인을 모니터링하고 개선해야 합니다.
    • CI/CD를 구현하려면 프로세스를 최적화/개선하기 위한 지속적인 노력이 필요하며, 프로젝트의 성공을 위해서는 작은 것부터 시작하여 모든 것을 자동화하고 측정함과 동시에 팀과 협업하는 것이 매우 중요합니다!

     

     


     

    요즘처럼 빠르게 변화하는 소프트웨어 개발 환경에서는 고품질 소프트웨어를 빠르고 효율적으로 개발/제공하는 것이 그 어느 때보다 중요해졌죠!

    CI/CD 루프
    출처: https://velog.io/@cham/CICD-CICD%EB%9E%80

     

    지속적 통합(CI, Continuous Integration)지속적 배포(CD, Continuous Delivery)는 개발팀이 소프트웨어를 빌드, 테스트 및 배포하는 프로세스를 자동화하는 데 큰 도움이 되기에 주목 받고 있습니다. CI/CD를 사용하면 소프트웨어 팀은 고품질 소프트웨어를 더 빠르고 자신 있게 Release할 수 있습니다. 이번 포스팅에서는 소프트웨어 개발 프로세스에서 CI/CD를 구현하기 위한 단계별 가이드를 제공하고자 합니다.

     

     

     

     

    Step 1: Version 제어 시스템 설정

    버전 제어 시스템을 설정하는 것은 CI/CD 프로세스에서 필수적인 단계입니다. 버전 제어 시스템(VCS, Version Control System)은 개발 팀이 타임라인에 따른 코드 변경 사항을 추적하고, 코드 변경 건에 대한 공동 작업하는 데 도움이 됩니다.

    Git은 오늘날 가장 널리 사용되는 버전 관리 시스템으로, GitHub, Microsoft, Netflix와 같은 글로벌 선도 기업에서도 사용하고 있죠! VCS를 설정하는 단계는 다음과 같습니다:

    1. Git 또는 SVN 등 팀의 필요에 맞는 VCS를 선택하기
    2. 코드를 저장할 리포지토리를 설정하기
    3. 코드 변경을 위한 브랜치(Branch) 만들기
    4. 브랜치에 변경 사항 커밋
    5. 코드 변경 사항이 준비되면 메인 브랜치에 변경 사항 병합하기

     

     

     

    Step 2: 지속적 통합(CI) 구현하기

    지속적 통합(CI)은 코드 변경 사항을 자동으로 1) 빌드, 2) 테스트 및 3) 공유 리포지토리(저장소)에 병합하는 프로세스입니다. CI는 소프트웨어 팀이 문제를 조기에 발견하고 코드 변경 사항이 기존 코드베이스와 호환되는지 확인하는 데 도움이 됩니다. Facebook, Google, Amazon과 같은 유명 기업에서는 코드의 품질을 보장하기 위해 CI를 사용합니다. CI를 구현하는 단계는 다음과 같습니다:

    1. 코드 변경 사항을 자동으로 빌드하도록 빌드 서버 설정하기
    2. 코드 변경 사항을 자동으로 테스트하는 빌드 파이프라인 만들기
    3. 코드가 올바르게 작동하는지 확인하기 위해 단위 및 통합 테스트 정의하기
    4. SonarQube와 같은 코드 분석 도구를 사용하여 코드 이슈 감지하기

     

     

     

    Step 3: 지속적 배포(CD) 구현하기

    지속적 배포(CD)는 코드 변경 사항을 프로덕션 환경에 자동으로 배포하는 프로세스입니다. CD는 배포를 위해 코드 변경 사항을 준비하는 프로세스이죠. CD는 소프트웨어 팀이 더 빠르고 자신 있게 코드를 릴리스할 수 있도록 도와줍니다. Netflix, Airbnb, Uber와 같은 유명 기업에서는 CD를 사용하여 코드 변경 사항을 빠르고 효율적으로 릴리스합니다. CD를 구현하는 단계는 다음과 같습니다:

      1. Jenkins 또는 Kubernetes와 같은 도구를 사용하여 배포 프로세스 자동화하기
      2. 배포를 위해 코드 변경 사항을 준비하는 릴리스 파이프라인 만들기
      3. 카나리아 릴리스 프로세스를 사용하여 코드 변경 사항을 프로덕션에 점진적으로 배포하기
        * 카나리아 릴리스 프로세스는 프로덕션 환경에 새로운 변경 사항이나 업데이트를 도입할 위험을 최소화하고자 개발/배포에 사용되는 기법임. 이 프로세스에서는 전체 트래픽의 일부가 새로운 릴리스로 전달되므로 새 소프트웨어 버전이 전체 사용자층에 공개되기 전에 통제된 테스트를 수행할 수 있음
      4. A/B 테스트를 사용하여 코드 변경 사항이 예상대로 수행되는지 확인하기

     

     

    Step 4: CI/CD 파이프라인 모니터링 및 개선

    CI/CD 파이프라인을 모니터링하고 개선하는 것은 소프트웨어 개발 프로세스에서 필수적인 단계입니다. 모니터링은 소프트웨어 팀이 문제를 조기에 식별하고 CI/CD 파이프라인의 효율성을 개선하는 데 도움이 됩니다. Google 및 Amazon과 같은 유명 기업에서는 소프트웨어가 원활하게 실행되도록 하기 위해 철저한 모니터링을 수행하죠. 다음은 CI/CD 파이프라인을 모니터링하고 개선하는 단계입니다:

    1. 대시보드를 사용하여 CI/CD 파이프라인의 상태 모니터링하기
    2. 팀원에게 파이프라인의 문제나 실패를 알리는 알림을 설정하세요.
    3. 정기적인 코드 검토를 수행하여 코드 변경의 품질이 높은지 확인하세요.
    4. 팀원들의 피드백을 지속적으로 통합하여 CI/CD 프로세스 개선

    소프트개발에 매진하고 있는 개발자
    개발의 효율을 제고하지 않으면, 개발자는 집에 갈 수 없습니다 ㅠㅠ

     

     

     

    정리하며…

    개발 프로세스에 CI/CD를 구현하면 고품질 소프트웨어를 더 빠르고 자신 있게 릴리스할 수 있습니다! 1) 버전 관리 시스템을 설정하고, 2) 지속적 통합을 구현하며, 3) 지속적 배포/제공을 구현하고, 4) CI/CD 파이프라인을 모니터링 및 개선함으로써 개발의 효율성을 제고해 보시죠. 올바른 도구와 기술을 사용하면 소프트웨어 개발 프로세스를 간소화하고 고객에게 보다 효율적으로 가치를 제공할 수 있습니다.

     

     

    그러나 CI/CD를 구현하는 것은 일회성 작업이 아니며 프로세스를 최적화하고 개선하기 위한 지속적인 노력이 필요합니다. 그래서 몇 가지 추가 Tip을 알려드리며 마치고자 합니다^^

    • 작게 시작해서 빠르게 성취하기:
      처음부터 전체 코드 베이스에 대해 CI/CD를 구현하는 것은 부담스러울 수 있죠. 작은 프로젝트나 특정 기능부터 시작하여 프로세스에 대한 감을 익히세요.
    • 모든 것을 자동화하세요:
      자동화는 CI/CD 구현의 핵심입니다. 빌드/테스트/배포 프로세스를 최대한 자동화하여 개발 프로세스를 간소화하세요.
    • 모든 것을 측정하세요:
      CI/CD 파이프라인에서 메트릭(Metric)을 수집하여 개선이 필요한 영역을 파악하세요.Prometheus 및 Grafana와 같은 도구를 사용하여 메트릭을 시각화하고 개발 프로세스에 대한 인사이트를 얻는 것도 좋은 방법입니다.
    • 핵심은 협업이야!
      CI/CD에는 팀원 간의 적극적 커뮤니케이션이 필요합니다. 팀원 모두가 개발 프로세스를 인지하고 동일한 도구와 프로세스를 사용하며 협업하는 것이 필수적이에요!

     

    개발 프로세스에서 CI/CD를 구현하는 것은 간단한 작업이 아니지만, 분명 효과적인 툴이니 여러분이 속한 조직 혹은 기업 내에서 어서 도입을 검토해 보는 것을 추천 드립니다! 오늘도 테크씬이었습니다 ^^

     


     

    [관련 포스팅]

    2023.02.04 - [AI] - ML Ops 궁극 가이드: MLOps 및 DevOps의 개념과 차이점 이해

     

    ML Ops 궁극 가이드: MLOps 및 DevOps의 개념과 차이점 이해

    5줄 요약! • MLOps는 기존 DevOps의 모범적인 사례와 ML 혹은 인공지능의 고유한 특성을 결합한 ML 모델 관리에 대한 새로운 접근 방식임 • MLOps는 ML 모델의 배포/관리에 중점을 두고 데이터 및 모델

    techscene.tistory.com

    2023.02.10 - [프로젝트] - Agile 방법론: 신속하고 유연한 프로젝트의 미래

     

    Agile 방법론: 신속하고 유연한 프로젝트의 미래

    "테크씬 - 핵심 요약 후 시작합니다." 애자일 방법론(Agile Methodology)은 유연성, 협업 및 고객 Needs 충족을 강조하는 프로젝트 관리 기법임 애자일 프로젝트는 변화하는 요구사항과 Task의 우선순위

    techscene.tistory.com

     

    반응형