GitLab Flow와 GitLab Duo를 함께 활용해 DevSecOps 전 과정에서 생산성과 배포 빈도, 코드 품질, 보안, 안정성을 높이는 방법을 소개합니다.
DevSecOps를 시작하려면 잘 설계된 워크플로우가 필요하지만, 이는 종종 막막한 도전처럼 느껴질 수 있습니다. 다행히 이를 도와줄 두 가지가 있습니다. 바로 GitLab Flow와 GitLab Duo입니다. GitLab Flow는 조직이 DevSecOps 프로세스를 성공적으로 적용하도록 돕는 규범화된 접근 방식입니다. GitLab Duo는 GitLab DevSecOps 플랫폼 내에 포함된 강력한 AI 기반 기능 세트로, 조직이 코드를 개발하고 운영을 개선하며 소프트웨어를 더 효율적으로 보호하도록 지원합니다. GitLab Flow와 GitLab Duo를 결합하면, 조직은 엔드투엔드 워크플로우 효율성을 크게 개선할 수 있고, 이를 통해 생산성과 배포 빈도, 코드 품질 및 전반적인 보안, 그리고 프로덕션의 복원력과 가용성을 더욱 높은 수준으로 끌어올릴 수 있습니다. 이 글에서는 GitLab Flow와 GitLab Duo를 함께 활용해 조직이 DevSecOps에서 성공을 거둘 수 있는 방법을 살펴봅니다.
GitLab 17 가상 출시 이벤트를 통해 AI 기반 소프트웨어 개발의 미래를 확인해 보십시오. 지금 시청하기
GitLab Flow는 GitLab을 사용할 때 애플리케이션 개발 생애주기 전반을 대상으로 하는 규범적(opinionated) 엔드투엔드 워크플로우입니다. GitLab은 단일 사용자 인터페이스와 단일 데이터 모델을 갖춘 AI 기반 DevSecOps 플랫폼입니다. GitLab Flow는 모범 사례, 고객 피드백, 그리고 GitLab 자체의 도그푸딩(dogfooding)을 통해 얻은 교훈을 바탕으로 합니다. 또한 GitLab Flow는 DevSecOps 라이프사이클의 여러 단계를 가로지르며, 특정 변경 사항을 검토하기 위한 내부 피드백 루프와 애플리케이션 전체 및 그 개발 생명주기를 개선하기 위한 외부 피드백 루프로 구성된 효율적인 워크플로우를 형성합니다.

GitLab Flow의 내부 및 외부 루프 GitLab Flow에 많은 단계가 있다는 점에서 알 수 있듯이, 소프트웨어 개발은 단순히 코드를 작성하는 것 이상을 의미합니다. 아래에서는 GitLab Flow의 각 단계를 살펴보고, 여기에 GitLab Duo가 어떻게 도움을 줄 수 있는지 알아보겠습니다.
GitLab Flow의 첫 번째 부분은 계획(Planning)으로, GitLab Flow의 외부 피드백 루프에 해당합니다. 여기에는 이슈, 머지 리퀘스트, 에픽, 마일스톤, 이터레이션, 릴리스, 릴리스 증적(evidence) 등이 포함됩니다. 이 구성 요소들이 GitLab Flow에서 어떤 역할을 하는지, 그리고 GitLab Duo가 어떻게 도울 수 있는지 살펴보겠습니다.

계획 - GitLab Flow의 첫 번째 부분
이슈는 제품 문제나 새로운 기능을 정의하고 팀 구성원이 협업하는 공간입니다. 이슈를 생성할 때 제목을 입력한 뒤, GitLab Duo의 이슈 설명 자동 생성(Issue description generation) 기능을 활용해 설명 필드를 풍부하게 채울 수 있어 시간과 노력을 절약할 수 있습니다. 여러 이해관계자가 이슈의 댓글 스레드에 참여할 수 있으므로, GitLab Duo의 Discussion summary(토론 요약) 기능은 이슈에 달린 수백 개의 댓글을 간결한 단락으로 요약하여, 이해관계자가 대화 내용을 빠르게 파악하고 토론에 참여해 즉시 생산적으로 활동할 수 있도록 돕습니다.
이슈는 이슈 보드에 정리하고 시각화할 수 있으며, 이는 칸반 또는 스크럼 보드로 사용할 수 있는 소프트웨어 프로젝트 관리 도구입니다. 이 보드를 통해 팀은 기능이나 제품 릴리스를 위한 워크플로우를 계획, 조직, 시각화할 수 있습니다. 다양한 카테고리의 보드를 만들 수 있고, 이슈를 드래그 앤 드롭으로 한 보드에서 다른 보드로 손쉽게 옮길 수 있습니다.
머지 리퀘스트는 솔루션이 개발되는 장소입니다. 릴리스 구성 요소로서 이슈와 머지 리퀘스트는 DevOps 및 플랫폼 엔지니어, 시스템 및 데이터베이스 관리자, 보안 엔지니어, 개발자 등 이해관계자가 수행한 애플리케이션 변경 사항을 추적하고 감사할 수 있게 해줍니다. 또한 이슈와 머지 리퀘스트는 릴리스 계획 프로세스의 핵심 입력 값입니다.
머지 리퀘스트는 개별적으로 생성할 수도 있고, 이슈에서 생성할 수도 있습니다. 이슈에서 머지 리퀘스트를 생성하면 해당 이슈와 자동으로 연관되며, 머지 리퀘스트가 병합되면 연결된 이슈는 자동으로 종료됩니다. 머지 리퀘스트를 이슈에 수동으로 연결할 수도 있습니다.

병합된 머지 리퀘스트는 이슈를 자동으로 종료함 이슈와 마찬가지로, 머지 리퀘스트에는 여러 이해관계자가 기능 브랜치에 적용한 긴 변경 내역 목록이 포함될 수 있습니다. 머지 리퀘스트에 포함된 모든 변경 사항을 숙지하거나 이해해야 하는 협업자는 GitLab Duo의 Merge request summary(머지 리퀘스트 요약) 기능을 활용해 변경 사항을 빠르게 파악할 수 있습니다. 또한 협업자는 GitLab Duo의 Code Merge request template population(코드 머지 리퀘스트 템플릿 자동 채우기) 기능을 호출해, 미리 생성된 머지 리퀘스트 템플릿을 기반으로 템플릿 내 섹션 내용을 자동으로 채울 수 있습니다. 설명 템플릿은 개발 라이프사이클 전반에 걸쳐 협업과 커뮤니케이션을 표준화하고 최적화하는 방법을 제공하며, GitLab Duo는 이 과정을 한층 더 가속합니다.
동일한 주제를 가진 이슈들은 에픽(epic)으로 묶어 작업을 조직할 수 있습니다. 에픽에는 자식 이슈와 서브 에픽이 포함될 수 있으며, 조직 전체의 다른 에픽과 연결될 수도 있습니다. 이터레이션(iteration)은 작업 스프린트를 추적하는 데 사용할 수 있고, 수동으로 일정을 잡거나 GitLab 이터레이션 캐던스를 사용해 자동으로 스케줄링하여 계획 워크플로우를 간소화할 수 있습니다. 또한 이터레이션에는 번다운(burndown) 및 번업(burnup) 차트가 포함됩니다. 번다운 차트는 프로젝트 전체 범위에 대한 진행 상황을, 번업 차트는 특정 타임박스 내에 추가되거나 완료된 이슈의 일일 총 개수와 가중치를 추적합니다.
팀은 마일스톤을 사용해 이슈와 머지 리퀘스트를 선택적인 시작일과 마감일을 가진 하나의 일관된 그룹으로 구성할 수 있습니다. 마일스톤은 일반적으로 릴리스를 추적하는 데 사용되며, 프로젝트 수준 또는 그룹 수준에서 이슈와 머지 리퀘스트를 추적할 수 있습니다. 이터레이션과 마찬가지로 마일스톤 역시 번다운 및 번업 차트를 제공하여 진행 상황을 보여줍니다.
마일스톤은 릴리스와 연결할 수 있으며, 릴리스가 자동으로 생성될 때 릴리스 증적(evidence)을 포함한 다양한 아티팩트가 함께 생성됩니다. 릴리스 증적은 릴리스와 관련된 데이터를 자동으로 수집한 스냅샷입니다. 테스트 아티팩트와 연결된 마일스톤 외에도, 잡(job) 아티팩트를 선택적으로 릴리스 증적에 포함할 수 있어 외부 감사와 같은 내부 프로세스를 용이하게 할 수 있습니다.
에픽, 마일스톤, 이터레이션은 로드맵(Roadmaps) 페이지에서 시각화할 수 있으며, 이를 통해 릴리스 진행 상황을 추적하고 릴리스 프로세스를 간소화할 수 있습니다.
계획이 완료되면, 문제 해결 또는 새로운 기능 구현을 위한 실제 작업이 시작됩니다. 이 작업은 머지 리퀘스트 안에서 이루어지며, GitLab Flow에서 이 과정이 어떻게 진행되는지 좀 더 깊이 살펴보겠습니다.

머지 리퀘스트와 코드 푸시 - GitLab Flow의 두 번째 부분 GitLab Flow의 두 번째 부분은 머지 리퀘스트와 코드 푸시에 관련됩니다. 앞서 언급했듯이 머지 리퀘스트는 조직 전반에 걸친 이해관계자들이 협업을 통해 솔루션을 개발하는 공간입니다. 이 협업은 분산된 방식으로, 비동기적으로 이뤄질 수 있습니다. 참가자는 태깅, 인라인 제안, 인라인 코멘트, 머지 리퀘스트 코멘트, 리뷰 스레드, 리뷰 요청과 같은 협업 기능을 활용해 코드 품질, 가용성, 신뢰성, 성능을 향상할 수 있습니다. 머지 리퀘스트가 생성된 직후, GitLab Flow의 내부 피드백 루프가 시작되며, 이곳에서 코드 및 수정 사항 푸시, 테스트 및 스캔 실행, 협업 및 변경 검토가 이뤄집니다.
머지 리퀘스트를 통해 기능 브랜치에 업데이트가 적용되면, 정의된 경우 파이프라인이 자동으로 실행됩니다. 파이프라인은 여러 스테이지와 잡을 가질 수 있으며, 애플리케이션 또는 마이크로서비스를 빌드하고 테스트한 뒤 리뷰 환경(review environment)에 배포합니다. 이 리뷰 환경에서 변경 사항은 메인 브랜치에 병합되기 전에 동적으로 검증될 수 있습니다. 이러한 자동화는 애플리케이션 업데이트 및 검토 프로세스를 간소화하는 데 도움이 됩니다.
또한 DevSecOps 팀이 머지 리퀘스트를 통해 애플리케이션을 업데이트할 때, 다양한 AI 기반 기능을 활용할 수 있습니다. 코드 작성 또는 수정 시 GitLab Duo의 Code Suggestions(코드 제안) 기능은 다음에 올 코드 조각을 추천하고, 개발자는 제안을 수락하거나 무시할 수 있습니다. Code Suggestions는 프롬프트 기반 코드 생성뿐 아니라, 입력하면서 자동 완성 기능도 지원합니다. Code Suggestions는 오류를 줄이고 개발자가 더 빠르게 코드를 작성하도록 도와 프로덕션 코드 품질 향상에 기여합니다. 또한 개발자 생산성을 높이고 더 빠른 반복과 배포를 가능하게 합니다.
조직 내 여러 이해관계자가 애플리케이션 개발 또는 검토에 참여하는 과정에서, 문서화가 잘 되어 있지 않거나 복잡해서 이해하기 어려운 코드, 또는 익숙하지 않은 프로그래밍 언어로 작성된 코드를 마주칠 수 있습니다. GitLab Duo의 Code explanation(코드 설명) 기능은 코드를 자연어로 설명하여 누구나 코드를 이해하고 빠르게 적응할 수 있도록 돕습니다.
게다가, 기능 브랜치에 커밋이 이루어지면 GitLab Duo의 Suggested reviewers(추천 리뷰어) 기능은 머지 리퀘스트의 변경 내용과 프로젝트 기여 그래프를 활용해, 머지 리퀘스트 사이드바의 리뷰어 드롭다운에 적절한 리뷰어를 추천합니다. 이 목록에는 애플리케이션의 특정 영역에 대해 잘 알고 있는 사용자가 포함되어, 변경 사항을 검토하기에 가장 적합한 후보를 제시합니다. 개발자는 적절한 리뷰어를 찾고 식별하는 데 시간을 들이지 않아도 되어, 리뷰 프로세스를 간소화하고 지연이나 저품질 리뷰를 방지할 수 있습니다.
개발자가 코드를 변경할 때, 머지 리퀘스트에 어떤 구체적인 변경을 했는지에 대한 코멘트를 남기지 않는 경우가 종종 있습니다. GitLab Duo의 Merge request summary(머지 리퀘스트 요약) 기능을 사용하면 머지 리퀘스트 작성자가 AI를 통해 코드 변경 사항을 자연어 코멘트로 요약하게 할 수 있습니다. 리뷰어는 이를 통해 변경 내용을 더 잘 이해할 수 있고, 전체 리뷰 프로세스를 간소화할 수 있습니다.
리뷰어가 머지 리퀘스트 내 코드 변경 사항을 검토하면서, 여러 소스 파일에 걸쳐 많은 코멘트로 구성된 리뷰 블록을 만들 수 있습니다. 이때 GitLab Duo의 Code review summary(코드 리뷰 요약) 기능은 리뷰어가 남긴 피드백을 자연어로 요약해, 변경 사항의 원 작성자가 긴 리뷰 블록에 담긴 피드백을 더 잘 이해하도록 돕습니다. 이는 작성자와 리뷰어 사이의 인수인계를 원활하게 해 리뷰 프로세스를 효율화합니다.
더 나아가, 개발자가 머지 리퀘스트를 통해 새로운 코드를 추가할 때 GitLab Duo의 Test generation(테스트 생성) 기능을 활용해 새 코드에 대한 단위 테스트를 AI로 자동 생성할 수 있습니다. 이를 통해 개발자 생산성 향상, 테스트 커버리지 증가, 개발 생명주기 초기 단계에서 버그를 조기에 발견하는 데 도움이 됩니다. 개발자는 항상 사용할 수 있는 GitLab Duo Chat 기능을 통해 코드를 리팩터링하고, 예를 들어 docstring과 같은 인라인 문서를 생성할 수도 있습니다.
브랜치 업데이트 시 파이프라인이 실행되면서, 자동화된 테스트와 스캔을 포함할 수 있습니다. 이는 보안을 왼쪽으로 시프트(shift left)하는 데 기여합니다.

보안을 왼쪽으로 시프트하기 - GitLab Flow의 세 번째 부분 GitLab Flow의 세 번째 부분은 보안을 왼쪽으로 시프트하는 것이며, 이는 역시 GitLab Flow 내부 피드백 루프의 일부입니다.
DevOps 및 플랫폼 엔지니어, 시스템 및 데이터베이스 관리자, 개발자뿐 아니라, 머지 리퀘스트에 협업하는 이해관계자 중에는 보안과 컴플라이언스를 중시하는 이들도 있습니다. 이때 자동화된 테스트와 보안 스캔이 중요한 역할을 합니다. 스캔은 손쉽게 사용 가능한 템플릿을 통해 파이프라인에 포함시키거나, 머지 리퀘스트 파이프라인 안에서 자동 실행되도록 설정할 수 있습니다. GitLab은 GitLab Flow에서 활용 가능한 광범위한 내장 보안 스캐너와 분석기를 제공하며, 또한 서드파티 및 커스텀 스캐너도 수용할 수 있는 DevSecOps 플랫폼을 제공합니다.
GitLab Flow는 파이프라인에서 보안을 왼쪽으로 시프트하여, 소프트웨어 개발 프로세스의 가능한 한 이른 시점에 결함을 탐지하고 해결합니다. 애플리케이션이 프로덕션에 배포된 이후, 예기치 않은 장애가 사용자와 매출에 영향을 주는 시점에서 취약점을 수정하는 것보다, 개발 초기 단계에서 수정하는 것이 훨씬 더 쉽고 비용 효율적입니다.
GitLab이 제공하는 내장 보안 스캐너와 분석기에는 단위 테스트, 인프라스트럭처 코드(IaC) 스캐닝, 정적 애플리케이션 보안 테스트(SAST) 스캐너, 의존성 스캐닝, 시크릿 탐지, 컨테이너 스캐닝, API 보안, 웹 API 퍼즈 테스트, 커버리지 기반 퍼즈 테스트 등이 포함됩니다. 또한 GitLab은 Dependencies 리스트, Security 대시보드, Vulnerability Report, 개별 취약점 페이지와 같은 다양한 보안 대시보드 및 리포트를 통해 취약점을 관리하고 시각화할 수 있도록 지원합니다.
개발자와 보안 엔지니어가 취약점을 더 잘 이해하고 더 효율적으로 해결할 수 있도록, GitLab Duo의 Vulnerability explanation(취약점 설명) 기능은 특정 취약점, 해당 취약점이 어떻게 악용될 수 있는지, 그리고 무엇보다 그 취약점을 어떻게 수정할 수 있는지에 대한 권장 사항을 제공합니다. 개발자는 GitLab Duo의 Vulnerability resolution(취약점 해결) 기능도 활용할 수 있는데, 이는 취약점을 수정하는 코드 변경을 담은 머지 리퀘스트를 자동으로 생성합니다. 이러한 AI 기반 기능은 애플리케이션을 보안 강화하고 하드닝하는 프로세스를 간소화 및 최적화하여, 프로덕션에서 사이버 공격으로 악용될 수 있는 취약점을 사전에 방지하는 데 도움을 줍니다.
SAST 스캐너 외에도, GitLab은 동적 애플리케이션 보안 테스트(DAST) 스캐너를 제공하며, 이는 실행 중인 애플리케이션을 필요로 합니다. 이러한 스캐너를 사용할 때, GitLab은 DAST 스캔을 위한 DAST 환경을 자동으로 프로비저닝하고, DAST 테스트 종료 후 모든 리소스를 완전히 정리할 수 있습니다. 또한 실행 중인 컨테이너에 대해 GitLab은 운영 컨테이너 스캐닝(operational container scanning)을 제공하여, 클러스터 내 컨테이너 이미지를 보안 취약점에 대해 스캔합니다.
위에서 언급한 스캔들은 머지 리퀘스트 파이프라인 내에서 자동으로 실행될 수 있으며, 경우에 따라 스캔 실행 및 머지 리퀘스트 승인 정책을 통해 스케줄링할 수도 있습니다. 이러한 정책은 GitLab UI나 YAML 파일로 정의할 수 있으며, 별도 프로젝트에 구성되어 재사용성과 유지보수, 관리의 분리를 가능하게 합니다. 스캔 실행 정책은 보안 스캔이 특정 스케줄 또는 프로젝트 파이프라인과 함께 실행되도록 요구하며, 머지 리퀘스트 승인 정책은 스캔 결과를 기반으로 조치를 취합니다. 보안 엔지니어나 보안 팀은 이러한 정책을 정의하여 조직 전반에 걸쳐 보안 프로세스를 강제할 수 있으며, GitLab Flow는 단계별로 진행되면서 이러한 정책에 직면하거나 이를 활용할 수 있습니다.
조직 내 프로젝트 전반에 걸쳐 보안과 컴플라이언스를 강제하기 위해, 컴플라이언스 레이블과 파이프라인을 사용할 수 있습니다. 컴플라이언스 레이블과 파이프라인은 각 프로젝트의 자체 파이프라인 전에 반드시 실행되도록 의무화할 수 있습니다. 이 접근 방식을 사용하면, 조직 내 모든 팀이 보안 및 컴플라이언스 표준을 준수하도록 보장할 수 있습니다. 또한 애플리케이션을 사이버 공격으로부터 보호하고, 정부 규제 준수 기준을 충족하며, 언제든지 감사에 대비할 수 있습니다.
이러한 GitLab Flow 보안 권장 사항의 핵심 목표는, 애플리케이션이 프로덕션에 배포된 이후가 아니라 개발 사이클 초기 단계에서 취약점을 해결하는 것입니다. 프로덕션 단계에서 취약점을 수정하는 것은 평판과 매출 측면에서 매우 큰 비용을 초래할 수 있습니다.
GitLab Flow 내부 피드백 루프에서 취약점이 완화되고, 기능 브랜치에 애플리케이션 업데이트가 더 많이 적용될수록, 이해관계자는 이러한 변경이 실제로 반영되었는지, 그리고 새로운 회귀(regression)가 무심코 도입되지 않았는지 다시 검토해야 합니다.

리뷰 - GitLab Flow의 네 번째 부분 GitLab Flow의 다음 부분은 기능 리뷰로, 애플리케이션의 지속적인 리뷰를 권장합니다. 기능 리뷰에는 기능 브랜치 상태의 중간 애플리케이션을 배포할 수 있는 리뷰 환경을 준비하고, 이해관계자가 이를 실시간으로 검토하고 피드백을 제공할 수 있게 하는 과정이 포함됩니다. 중간 애플리케이션은 메인 브랜치에 병합할 준비가 될 때까지 지속적으로 조정될 수 있습니다. GitLab Flow는 또한 머지 리퀘스트가 메인 브랜치에 병합되는 시점에, 프로비저닝된 모든 리뷰 환경 리소스를 정리(cleanup)할 것을 권장합니다.
이와 같은 반복적인 자동 리뷰 프로세스는 GitLab Flow의 내부 피드백 루프의 일부입니다. 앞서 언급했듯이, 내부 피드백 루프 내에서 GitLab Duo의 Code explanation, Code Suggestions, Suggested reviewers, Merge request summary, Merge request template population, Code review summary, Vulnerability explanation, Vulnerability resolution, Root cause analysis와 같은 기능은 작성자와 리뷰어 간 인수인계를 원활하게 하고 전체 리뷰 프로세스를 간소화하도록 GitLab Flow에서 권장됩니다.
GitLab Flow 내부 피드백 루프는 모든 리뷰 항목이 해결되고, 머지 리퀘스트가 승인되어 메인 브랜치에 병합되는 시점에 종료됩니다. 이 병합은 애플리케이션을 프로덕션에 배포하는 트리거가 됩니다.

배포 - GitLab Flow의 다섯 번째 부분 조직의 필요에 따라, GitLab Flow는 지속적 딜리버리(continuous delivery) 또는 지속적 배포(continuous deployment) 중 하나를 권장합니다. 지속적 딜리버리는 (예: 프로덕션에) 배포를 사람이 수동으로 트리거하며 자주 코드를 릴리스하는 방식이고, 지속적 배포는 (예: 프로덕션으로) 사람 개입 없이 자동으로 코드를 릴리스하는 방식입니다. 먼저 지속적 딜리버리를 살펴보겠습니다.
지속적 딜리버리를 사용해 소프트웨어를 릴리스할 때는 몇 가지 배포 옵션을 사용할 수 있습니다. 프리즈 윈도우(freeze window)를 설정한 뒤, 카나리(canary), 블루/그린(blue/green), 시간 기반(timed), 점진적(incremental) 롤아웃과 같은 고급 배포 기법을 사용해 배포할 수 있습니다. 점진적 롤아웃은 프로덕션 장애 위험을 줄여 더 나은 사용자 경험과 고객 만족도를 제공합니다. 고급 배포 기법은 또한 개발 및 딜리버리 효율성을 높이고 릴리스 프로세스를 간소화할 수 있습니다.
지속적 배포를 사용해 소프트웨어를 릴리스할 때는, 모든 변경 및 업데이트가 곧바로 프로덕션으로 이동합니다. 특정 기능의 전달과 실제 런칭을 분리할 수 있게 해 주는 기능 플래그(feature flags)와 같은 점진적 딜리버리 접근 방식은 위험을 줄이고, 프로덕션 사용자에게 제공할 기능을 관리하는 좋은 방법입니다. 기능 플래그는 여러 프로그래밍 언어를 지원하며, 개발자의 실험과 통제된 테스트를 가능하게 합니다. 또한 특정 사용자에게만 기능을 롤아웃하는 데도 사용할 수 있습니다.
GitLab은 이러한 모든 배포 방식을 지원하지만, GitLab Flow는 조직 또는 특정 프로젝트의 요구 사항에 가장 적합한 방식을 채택할 수 있도록 허용합니다.
애플리케이션이 프로덕션에 배포되면, 안정성, 성능, 가용성을 보장하기 위해 지속적으로 모니터링해야 합니다. 또한 DevSecOps 프로세스가 실행될 때 그 성과가 측정되어, 성능과 효율성을 개선할 기회를 제공합니다. 이러한 모니터링 기능은 GitLab이 제공하며, 따라서 GitLab Flow에서 활용할 수 있습니다.
실행 중인 컨테이너에 대해, GitLab은 운영 컨테이너 스캐닝(OCS: Operational Container Scanning)을 제공하여 클러스터 내 컨테이너 이미지를 보안 취약점에 대해 스캔합니다. 이러한 스캔은 실행 시점을 스케줄링해 자동화할 수 있으며, 발견된 취약점은 자동으로 보안 대시보드에 표시됩니다. OCS는 클러스터 애플리케이션을 안전하게 유지하고, 민감 데이터 유출이나 예기치 않은 장애로 이어질 수 있는 사이버 공격을 사전에 방지하는 데 도움을 줍니다.
에러 트래킹(Error tracking)을 통해 개발자는 애플리케이션이 생성한 에러를 발견하고 확인할 수 있습니다. 애플리케이션이 생성한 모든 에러는 GitLab의 Error Tracking 리스트에 표시됩니다. 에러 트래킹은 예기치 않은 애플리케이션 상태를 빠르게 탐지 및 해결함으로써, 애플리케이션의 가용성과 성능을 향상시킬 수 있습니다.
GitLab은 Prometheus를 포함한 어떤 모니터링 소스에서든 웹훅 리시버를 통해 알림(alert)을 수신할 수 있습니다. 알림이 들어오면 GitLab Alerts 리스트에 표시되며, 여기에서 수동으로 관리할 수 있습니다. 또한 알림은 자동으로 인시던트 생성, ChatOps, 관련 개인 또는 그룹으로의 이메일 발송을 트리거할 수 있습니다. 이러한 기능은 알림 처리와 관리 프로세스를 간소화합니다.
프로덕션 문제로 인해 인시던트가 생성되면, GitLab 인시던트 리스트에서 인시던트 관리가 이루어집니다. 여러 인시던트를 관리하고, 정렬, 검색, 할당, 상태 설정, 서비스 수준 협약(SLA) 사전 설정 카운트다운 타이머 확인 등을 수행할 수 있습니다. 또한 온콜(on-call) 스케줄과 로테이션, 에스컬레이션 정책을 만들고, 인시던트 대응을 위한 페이징 및 알림을 설정할 수 있습니다. 인시던트를 알림과 연결해, 인시던트가 종료되면 연관된 알림도 자동으로 해결되도록 할 수 있습니다. 인시던트 타임라인은 경영진이나 외부 관찰자가 인시던트 동안 어떤 일이 있었고, 어떤 조치가 취해졌는지를 확인할 수 있게 해주는 또 다른 기능입니다. 이러한 모든 기능은 인시던트 관리 프로세스를 간소화하여, 가능한 한 신속히 문제를 해결할 수 있도록 돕습니다.
감사 이벤트(Audit events)는 GitLab에서 누가, 언제, 어떤 중요한 이벤트를 수행했는지 추적합니다. 이러한 이벤트는 GitLab Audit Events 리스트에 표시되며, 대상 객체에서 어떤 액션이 수행되었는지, 누가 수행했는지, 언제 발생했는지 등의 정보를 제공합니다.
위에서 언급한 모든 리스트와 대시보드는 규정 위반 상황을 사전에 방지해 벌금을 피할 수 있도록 돕고, 감사 프로세스를 간소화합니다. 실행 중인 애플리케이션에 대해서는, 이들이 생성하는 데이터와 메트릭이 GitLab Flow 외부 피드백 루프에서 활용되어 애플리케이션을 개선 및 최적화하고, 예기치 않은 프로덕션 장애의 위험을 줄이는 데 쓰일 수 있습니다.
GitLab Flow를 적용할 때, GitLab이 제공하는 엔드투엔드 프로세스 메트릭 대시보드를 활용해, 애플리케이션뿐 아니라 소프트웨어 딜리버리 성능까지 지속적으로 개선할 기회를 얻을 수 있습니다. 이 대시보드와 메트릭은 GitLab에서 자동으로 생성되며 항상 이용 가능합니다.
Value Stream Analytics 대시보드를 통해 애플리케이션 개발 라이프사이클을 추적 및 모니터링할 수 있으며, 시간 경과에 따라 프로젝트 또는 그룹 통계를 확인할 수 있습니다. 이 대시보드는 사용자 정의가 가능하지만, GitLab에서 제공하는 기본 템플릿을 사용해 빠르게 value stream을 생성하며 시작할 수 있습니다. 기본 대시보드는 Value Stream Analytics의 사전 정의된 각 단계(이슈(Issue), 계획(Plan), 코드(Code), 테스트(Test), 리뷰(Review), 스테이징(Staging))에 대한 메트릭과, 각 단계의 평균 완료 시간을 보여주는 그래프를 표시합니다. 또한 리드 타임(lead time), 사이클 타임(cycle time), 신규 이슈 수, 커밋 수, 배포 수 등 Value Stream Analytics의 핵심 메트릭도 보여줍니다. 이러한 메트릭을 활용해 value stream 각 단계에서의 개선 가능 영역을 찾을 수 있습니다.
조직의 개발 및 딜리버리 관행의 효율성을 측정하는 성과 메트릭을 확인하기 위해, GitLab은 DORA (DevOps Research and Assessment) 메트릭 대시보드를 제공합니다. 이 대시보드는 네 가지 핵심 메트릭을 표시합니다: 배포 빈도(Deployment Frequency), 변경 리드 타임(Lead Time for Changes), 서비스 복구 시간(Time to Restore Service), 변경 실패율(Change Failure Rate)입니다. 배포 빈도는 조직이 프로덕션으로 코드를 배포하거나 최종 사용자에게 릴리스하는 빈도를 측정합니다. 변경 리드 타임은 커밋된 코드가 프로덕션에서 성공적으로 실행되기까지 걸리는 시간을 측정합니다. 서비스 복구 시간은 인시던트 발생 시 서비스가 이전 수준으로 복구되는 데 필요한 시간을 측정합니다. 마지막으로 변경 실패율은 프로덕션에 배포되거나 사용자에게 릴리스된 변경 중, 서비스 저하(예: 서비스 장애나 중단)를 유발해, 핫픽스, 롤백, 패치 등 추가 조치를 필요로 했던 변경의 비율입니다. 이 네 가지 핵심 메트릭은 현재 프로세스의 결과물을 나타내며, 이를 통해 메트릭을 좌우하는 요인과 역량을 개선할 기회를 제공합니다.
또 다른 대시보드로 Value Streams Dashboard가 있으며, 이는 의사 결정자가 소프트웨어 개발 개선을 위한 추세, 패턴, 기회를 식별할 수 있게 해주는 사용자 정의 가능한 대시보드입니다. 이 대시보드에는 DORA 메트릭, Value Stream Analytics 플로우 메트릭, 그리고 월 기준(이번 달, 지난 두 달, 지난 6개월) 치명적(critical) 및 높은(high) 심각도 취약점 개수가 표시됩니다.
GitLab Duo는 지속적인 개선 노력에도 도움을 줄 수 있습니다. 예를 들어, Value stream forecasting(밸류 스트림 예측) 기능은 과거 데이터를 활용해 개발 생애주기 전반의 데이터 트렌드를 분석하고, 향후 Value stream 메트릭의 행동을 예측합니다. 이러한 예측 분석은 최적화 이니셔티브에 활용할 수 있습니다.
이 모든 대시보드와 그들이 보고하는 메트릭은 GitLab Flow 외부 피드백 루프의 일부로, 예기치 않은 프로덕션 장애의 위험을 낮추고 애플리케이션과 DevSecOps 워크플로우를 개선 및 최적화하는 데 기여합니다.
GitLab Duo(또는 AI)의 사용이 전체 개발 생애주기에 미치는 영향을 더 잘 이해하기 위해, AI Impact analytics를 확인할 수 있습니다. 여기에서는 GitLab Duo Code Suggestions 도입이 다른 성능, 품질, 보안 메트릭에 어떤 영향을 미치는지 확인할 수 있습니다. 지난 6개월 동안의 AI 도입 추이와, 사이클 타임, 리드 타임, 배포 빈도, 변경 실패율, 시간 경과에 따른 치명적 취약점 수 등의 메트릭에 미친 영향을 시각화할 수 있습니다.
AI Impact Analytics는 AI가 팀과 조직에 가져오는 도입 수준, 효과, 이점뿐 아니라, 개선이 필요한 영역을 측정하는 데 도움을 줍니다.
GitLab Flow는 전 세계 고객과 사용자들이 실천 중인 규범화된 접근 방식으로, 다음과 같은 이점을 제공합니다.
GitLab Flow를 어떻게 시작할 수 있을까요? GitLab Auto DevOps 또는 그 일부를 활용하는 것이 애플리케이션 개발 라이프사이클에 GitLab Flow 원칙을 적용하는 좋은 출발점입니다.

Auto DevOps - GitLab Flow의 한 구현 예 Auto DevOps는 모든 단계와 잡 전반에 걸쳐 GitLab Flow를 적용합니다. GitLab Flow 구현의 좋은 예로 생각할 수 있습니다.
Auto DevOps는 사전 정의된, 즉시 사용 가능한 CI/CD 템플릿 모음으로, 보유한 소스 코드를 자동으로 탐지합니다. 모범 사례를 기반으로 이 템플릿은 애플리케이션을 자동으로 감지, 빌드, 테스트, 배포, 모니터링합니다.
Auto DevOps 파이프라인은 소프트웨어 딜리버리 프로세스에서 가능한 한 빨리 결함을 발견하고 방지하기 위해 작업을 왼쪽으로 시프트합니다. 그런 다음 파이프라인은 애플리케이션을 검증을 위해 스테이징 환경에 배포하고, 이후 프로덕션에 점진적/시간 기반 방식으로 배포합니다.
Auto DevOps는 빠르게 시작할 수 있게 해 개발자 생산성을 높여주며, 필요에 맞게 손쉽게 커스터마이징할 수 있고, 가장 일반적인 프로그래밍 프레임워크와 언어를 지원합니다. Auto DevOps는 모듈형이고, 사용자 정의 가능하며, 확장 가능하므로, 파이프라인 내에서 일부만 활용할 수도 있고, 애플리케이션 전체에 적용할 수도 있습니다.
오늘 바로 GitLab Flow와 GitLab Duo를 결합해 엔드투엔드 워크플로우 효율성을 크게 개선해 보십시오. 이를 통해 생산성, 배포 빈도, 코드 품질과 전반적인 보안, 그리고 프로덕션 복원력과 가용성을 더 높은 수준으로 끌어올릴 수 있습니다.
GitLab Flow와 GitLab Duo를 결합한 워크플로우가 실제로 어떻게 동작하는지, 그리고 어떤 이점을 줄 수 있는지 보고 싶다면, 다음 영상을 시청해 보십시오.