데브옵스와 CI/CD의 목적은 소프트웨어 팀이 품질을 유지하면서도 사용자들에게 제품을 빠르게 배포할 수 있도록 돕는 것입니다.
CI/CD 도구는 파이프라인의 다양한 단계를 조율하고 자동화하는 데 있어서 커밋 이후 프로세스를 시작하거나, 빌드를 관리하거나, 자동화 테스트를 시작하거나, 아티팩트를 게시하고 피드백을 전달하는 등 중추적 CI 관리 역할을 합니다.
조직에 맞는 올바른 지속 통합 혹은 시족 개발/배포 도구를 선택하는 것은 CI/CD 파이프라인을 구현할 때 중요한 과정입니다. 이때 고려해야 하는 몇 가지 중요한 사항을 정리하였습니다.
CI/CD 도구의 목적은 버전 관리 시스템(예: Git, Mercurial 혹은 Perforce), 빌드 도구(예: Ant, Maven 혹은 Gradle), 자동화 테스팅 프레임워크(예: NUit 혹은 JUnit), 패키지 관리자(예: NuGet), 이슈 트래커(예: Jira, YouTrack 혹은 GitHub)과 컨테이너 플랫폼(예: Docker)를 포함한 다양한 시스템 간의 활동을 조율하는 것입니다.
CI/CD 파이프라인을 빌드할 때 모든 경우에 적용할 수 있는 방법은 없습니다. 그러므로 기본 제공 지원, 제3자 플러그인 혹은 API와 같이 필요에 따라 기능성을 확장할 수 있는 여러 도구와 통합할 수 있는 옵션이 있어야 합니다. 이렇듯 유연성이 있으면 미래에 조직 내에서 CI/CD 플랫폼을 쉽게 다른 팀까지 확장할 수 있습니다.
어떤 지속적 통합 솔루션을 선택하든 사용 중인 프로그래밍 언어, 플랫폼 및 프레임워크를 지원해야 하고 미래에 새로운 기능들을 추가할 여유가 있어야 합니다. 지금도 개발되고 지원되는 도구는 새로운 추세에 맞춰 업데이트될 확률이 높습니다.
CI/CD의 초기 사용자는 개발자일 확률이 높지만 DevOps 연습의 중요한 요소는 다른 기능 간의 벽을 허물고 팀간의 협업을 장려하는 것입니다.
DevOps 문화를 고려하여 설계된 지속적 통합 구현 도구는 이를 지원하기 위해 여러 인터페이스를 제공합니다. 명령줄 인터페이스와 API로 다른 시스템과 프로그래밍 방식으로 통합할 수 있습니다. 이와 동시에 잘 설계된 GUI는 제품 관리자나 지원팀을 포함한 누구든지 손쉽게 최신 빌드의 상태를 이해하고 파이프라인을 통해 제공되는 것들을 이해할 수 있습니다.
CI/CD 파이프라인에는 표준 디자인이 없다고 말씀 드렸습니다. 그리고 시간이 지나면서 복잡해지는 경우가 많습니다. 일부 단계는 이전 조건이 만족될 때만 추가되는 방식으로 파이프라인에 여러 경로를 두는 것이 일반적입니다.
브랜치 논리, 의존성 및 조건을 구성할 수 있는 시설이 있으면, 따로 관리해야 하는 별도의 파이프라인 인스턴스를 다수 생성하지 않고도 복잡한 워크플로를 구성할 수 있습니다.
빠른 피드백 루프는 CI 관리의 중심이며 결과는 파이프라인의 각 단계에서 반환됩니다. 지속적 통합 도구는 이 피드백을 활용하여 파이프라인 논리 내의 조건을 해결하고 주로 대시보드에서 사용자에게 해당 정보를 표시합니다.
이메일 알림, IDE와의 통합 혹은 Slack과 같은 소통 플랫폼을 지원하여 대시보드를 확인하지 않아도 현재 진행 중인 일을 놓치지 않고 파악할 수 있습니다. 너무 많은 경보를 받게 되면 배경소음처럼 치부될 위험이 있으므로 유연하게 경보 수신을 설정할 수 있는 것이 좋습니다.
일부 기업에서는 코드 베이스를 온프레미스로 하는 것이 타협할 수 없는 요구사항이기 때문에 파이프라인 전체를 자체 서버에 호스트하는 것이 필수적입니다. 다른 기업에서는 인프라 관리를 클라우드 제공자로 오프로드하는 것은 차별화되는 장점입니다.
AWS, Microsoft Azure 혹은 Google Cloud와 같은 공개 클라우드 제공자를 지원하는 지속적 통합 구현 도구를 사용하면 인하우스 인프라를 추가할 때 발생하는 프로비전 및 유지 관리 오버헤드 없이 필요에 따라 빌드를 확장하고 활동을 테스트할 수 있습니다.
CI/CD 파이프라인은 소스 코드 및 환경 매개 변수에 대한 액세스를 제공하며 잠재적으로 생산 환경에 대한 액세스도 제공합니다. 이런 액세스는 원치 않는 사람들의 손에 들어가게 되면 중대한 손상을 일으킬 수 있습니다.
따라서 악의적 행위자로부터 파이프라인을 지키는 것은 높은 우선순위가 되어야 합니다. 여기에는 비밀을 안전하게 관리하고, 인간 및 기계 사용자 모두에게 최소 권한의 원칙을 적용하고, 파이프라인 전체의 활동을 모니터링하는 게 포함됩니다. 일반적이지 않은 동작을 조사할 수 있도록 도구가 감사 추적을 지원해야 합니다.
자동화 CI/CD 파이프라인의 장점 중 하나는 제품을 홍보할 때 드는 시간을 단축하며, CI/CD 도구의 성능은 따라서 제한 요소입니다. 작업을 병렬화하고 클라우드에 호스트된 인프라의 탄력적 확장성을 활용할 수 있는 지속적 통합 솔루션은 파이프라인을 빠르게 유지하는 데 도움이 됩니다.
CI/CD 파이프라인은 사용하면 더 많은 작업을 획득하고 더 많은 프로젝트를 처리하도록 확장하면서 진화합니다. 테스트 커버리지 및 실패, 빌드 시간이나 대기열에서 보낸 시간 등과 같은 통계를 모니터링하면 파이프라인에서 프로세스의 속도를 늦추는 영역이나 개선할 수 있는 단계를 식별할 수 있습니다.
Tools that give you access to a range of metrics and the option to generate reports or export them to other tools for analysis will make it easier to keep improving your CI/CD practice.
소프트웨어 도구를 선택할 때는 문서의 품질과 더불어 질문하고 아이디어를 교환할 수 있는 활성화된 개발자 커뮤니티가 있는지 고려하는 것이 중요합니다.
많은 기업에서 이메일이나 온라인으로 필요할 때 지원을 제공하는 유료 지원 옵션은 시장을 공략할 때 중요한 제품이나 서비스에 대해서 필수적입니다.
CI/CD 테스트 도구는 지속적 통합 및 지속적 전달/배포(CI/CD) 방식을 지원하도록 특별히 설계된 소프트웨어 애플리케이션입니다. 이러한 도구는 테스트 및 배포 프로세스를 자동화하여 개발자가 코드 베이스 변경 사항이 예상대로 작동하는지 보다 쉽고 빠르게 확인할 수 있도록 해줍니다.
CI/CD 테스트 도구가 조직에서 사용 중인 테스트 프레임워크를 지원하는 것이 중요합니다.
CI/CD 플랫폼의 비용과 비교하면 라이선스 요금은 일부에 불과합니다. 사용 편의 및 이용할 수 있는 지원의 수준은 장기적으로 파이프라인을 설정하고 유지하는 데 사용하는 시간에 중대한 영향을 미칩니다. 미래해 확장할 수도 있는 경우에는 쉽게 클라우드 기반 인프라로 이전할 수 있는지도 고려해 볼 만합니다.
DevOps는 실제로 적용하려면 세 가지 요소가 필요하다고 자주 설명됩니다. 바로 문화, 절차, 그리고 도구입니다. 조직을 위해 적절한 빌드 및 배포 도구를 선택하면 CI/CD의 이점을 실현하고 소프트웨어 개발 프로세스와 CI 관리를 계속해서 진화하게 하고 개선할 수 있습니다.