This page contains information related to upcoming products, features, and functionality. It is important to note that the information presented is for informational purposes only. Please do not rely on this information for purchasing or planning purposes. The development, release, and timing of any products, features, or functionality may be subject to change or delay and remain at the sole discretion of GitLab Inc.
Status Authors Coach DRIs Owning Stage Created
proposed -

GitLab AutoFlow와 GitLab CI의 관계

GitLab CI와 GitLab AutoFlow는 서로 다른 문제 해결을 위한 도구입니다. 아래는 Temporal을 기반으로한 아이디어의 PoC / 데모 구현을 기반으로 한 차이점에 대한 설명입니다. 기술적 세부 사항과 사용할 기술에 대한 결정은 별도의 문서에 포함될 예정입니다. 그러나 GitLab CI와의 관련성 문제가 중복되서 발생하였기 때문에 사전에 해당 질문에 답변하기 위해 다음 내용이 여기에 문서화되어 있습니다.

개념적 차이

  • GitLab CI는 지속적 통합(Continuous Integration) 문제를 해결합니다. 소프트웨어를 빌드하고 테스트하는 데 사용합니다.
  • GitLab AutoFlow는 CI가 아닌 DevSecOps 도메인의 자동화 문제를 해결합니다. 비즈니스 프로세스를 자동화하는 데 사용됩니다.

작업 기반의 차이

GitLab CI를 사용하는 경우:

  • 프로그램/바이너리/도구 또는 (쉘) 스크립트를 실행해야 하는 경우.
  • 컨테이너를 실행해야 하는 경우.
  • 무거운 계산을 수행해야 하는 경우.
  • 작업을 수행하기 위해 많은 RAM이 필요한 경우.

GitLab AutoFlow를 사용하는 경우:

  • DevSecOps 도메인의 일환으로 복잡한, 프로젝트 간 CI 파이프라인을 조정하는 경우.
  • 이벤트가 발생했을 때 (또는 일정에 따라) DevOps 도메인 객체를 조작하는 경우.
  • 불특정한 시간(일수 또는 심지어 몇 주)동안 비동기 이벤트가 발생하기를 대기해야 하는 경우.

구현의 차이

Temporal 기반의 GitLab AutoFlow 구현:

  • 지속적 실행을 위해 설계되었습니다. 즉, 워크플로우 실행을 안전하게 실패한 지점에서 다시 시작할 수 있습니다.
  • 임의로 오랜 시간(실제로 몇 년)동안 실행될 수 있도록 설계되었습니다. 즉, 이벤트와/또는 타이머를 “깨우는” 워크플로우를 대기시킬 수 있으며, 상태 저장을 위해 DB의 디스크 공간만 차지합니다. 비실행 중인 워크플로우에 대해 CPU/RAM 자원은 예약되거나 사용되지 않습니다.
  • 무거운 실행 작업을 실행하는 데 설계되지 않았습니다. 이는 Temporal의 제약사항이 아니며(코드를 실행하지 않기 때문에), 사용자가 계산적으로 비용이 많이 드는 작업을 실행할 수 있는 방법을 이 PoC가 제공하지 않을 뿐입니다. Starlark에서 계산을 수행할 수는 있지만 외부 프로그램을 실행시키지는 못합니다.
  • 컨테이너를 실행하는 데 설계되지 않았습니다.
  • Activity(워크플로우의 실행 가능 단위)의 실행 오버헤드가 거의 없습니다. 이미 실행 중인 프로그램에서의 “함수 호출”을 생각하면 됩니다. 시작 비용은 전혀 없습니다. Activity는 kas 안의 kas가 호출할 때 실행되는 글자 그대로의 기능입니다.
  • 믿을 수 없는 코드를 실행하는 데 설계되지 않았습니다. 그러나 Starlark 인터프리터는 코드 생성을 수행하지 않으며 Go로 작성되었으므로 일반적인 “인터프리터 VM” 취약점 중 대부분은 사실상 불가능합니다. 이는 실제로 믿을 수 없는 Starlark 코드를 실행하는 것이 꽤 안전하다는 것을 의미합니다. 해당 코드는 스크립트에 명시적으로 삽입된 객체를 통해서만 호스트 프로그램/기계와 상호작용할 수 있으며, 그 외에는 아무것도 할 수 없습니다.

GitLab CI:

  • 지속적 실행을 위해 설계되지 않았습니다. 작업이 실패하면 매뉴얼으로 다시 시작될 수 있습니다. 특정 지점에서 재시작하지 않고 처음부터 실행됩니다. 실패한 작업을 다시 시작하는 것은 안전하지 않을 수도 있으며 사용자의 활동에 따라 다릅니다. CI 작업과 달리 Temporal Activity는반복 가능하기 때문에 자동으로 다시 시도해도 안전합니다.
  • 지속적 통합에 대한 완벽한 해결책으로 설계되었습니다.
  • 임의의 컨테이너 및 신뢰할 수 없는 코드를 실행하는 데 설계되었습니다.