큐에 대기 중인 애플리케이션 작업

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 7분
  • 요청된 작업을 수행하기 위해 업데이트 인스턴스 와이드 잠금/뮤텍스 를 가져와야 하는 CICD API는 업데이트 인스턴스 와이드 잠금/뮤텍 스가 다른 운영에 의해 점유되면 거부되는 대신 큐에 대기됩니다.

    부터 Tokyo요청된 작업을 수행하기 위해 업데이트 인스턴스 와이드 잠금/뮤텍스 를 확보해야 하는 CICD API는 업데이트 인스턴스 와이드 잠금/뮤텍 스가 다른 운영에 의해 점유되면 거부되지 않고 큐에 대기하게 됩니다. CICD 요청이 수신되면 해당 CICD 서비스는 애플리케이션 작업 NowMQ( Now Message Queue) 메시지를 구성하고 NowMQ API를 사용하여 메시지를 큐에 삽입합니다. 그런 다음 큐에 대기 중인 메시지는 예약된 작업에 의해 폴링되고 병렬 처리가 활성화되고 운영이 필요한 기준을 충족하는 경우 하나씩 또는 병렬로 처리됩니다.

    애플리케이션 운영 NowMQ 메시지

    애플리케이션 운영 NowMQ 메시지에는 "sys.applifecycle.operation"이라는 공통 제목이 있습니다. 애플리케이션 운영 NowMQ 메시지의 메시지 본문에는 실행 추적기의 sys_id(CICD API 응답에 반환된 진행률 ID라고도 함)과 app_install, plugin_activation, batch_install, 롤백, import_app 및 apply_changes 중 하나일 수 있는 운영 유형이 포함된 JSON 객체가 포함되어 있습니다. 또한 플러그인 활성화를 위한 플러그인 ID, 앱 ID 또는 애플리케이션 설치 범위와 같은 정보도 포함되어 있습니다.

    애플리케이션 운영용 실행 추적기

    애플리케이션 운영 NowMQ 메시지가 생성되고 삽입되면 해당 CICD 요청에 대한 실행 추적기 기록이 생성되고 해당 sys_id이 NowMQ 메시지의 본문에 추가됩니다. 실행 추적기가 처음에는 보류 중 상태입니다. 실행 추적기의 "상세 정보" 열에는 작업 유형에 대한 정보와 CICD 요청에 대한 중요한 입력 매개변수가 포함되어 있습니다. "메시지" 열에는 큐 위치에 대한 정보가 포함되어 있습니다. 큐가 일시 중지되면 메시지 앞에 "[앱 운영 큐가 일시 중지됨]"이라는 프리픽스가 붙습니다.

    큐가 실행 중일 때 샘플 애플리케이션 작업 실행 추적기입니다. 샘플 애플리케이션 운영 큐가 실행 중입니다.

    큐가 일시 중지된 경우 샘플 애플리케이션 작업 실행 추적기입니다.큐가 일시 중지된 경우 샘플 애플리케이션 작업 실행 추적기입니다.

    주:
    보류 중인 상태인 작업은 최근 이력에 표시되지 않습니다.
    샘플 애플리케이션 작업 실행 추적기 최근 이력. 최근 이력에는 지난 24시간 동안 큐에 대기하고 처리된 작업의 이력이 표시됩니다.

    최근 이력 추적기에 실행이 표시됩니다.

    애플리케이션 운영 큐 관리

    모든 애플리케이션에서 제품을 수동으로 설치하는 것은 큐에 대기하는 동안 모든 애플리케이션 또는 애플리케이션 관리자와 같은 UI에서 애플리케이션을 수동으로 설치하는 것은 큐에 대기하지 않습니다.

    경우에 따라 인스턴스가 많은 CICD 요청을 수신, 큐에 대기하고 처리하는 중일 수 있으며, 이로 인해 UI에서 수동 설치가 업데이트 인스턴스 와이드 잠금/뮤텍스에 부족해질 수 있습니다. 이 경우 관리자는 애플리케이션 운영 큐를 일시적으로 일시 중지할 수 있습니다.

    관리자는 System Diagnostics->Application Operation Queue UI 페이지를 통해 애플리케이션 운영 큐를 관리할 수 있습니다. "운영 큐 상태" 패널에서 관리자는 큐를 일시 중지하거나 다시 시작할 수 있습니다. 관리자는 보류 중인 실행 추적기를 취소할 수도 있으며, 이렇게 하면 결국 앱 운영 큐 상태 모니터 작업을 통해 NowMQ에서 대기 중인 해당 메시지가 제거됩니다.

    애플리케이션 운영 큐 UI 페이지

    샘플 애플리케이션 운영 큐 UI 페이지. 관리자는 "운영 큐 상태"의 버튼을 클릭하여 큐를 일시 중지하거나 재개할 수 있습니다.애플리케이션 운영 큐 UI 페이지입니다.

    "애플리케이션 운영 실행 추적기" 목록 항목을 클릭하면 실행 추적기 양식이 열립니다. 대기 중인 메시지가 대기열에서 보류 중인 경우 실행 추적기 상태를 "취소됨"으로 업데이트하고 변경 내용을 저장하면 대기 중인 해당 CICD 요청이 취소됩니다. 참고: 실행 추적기의 상태가 "실행 중"인 경우 CICD 요청을 취소할 수 없습니다.실행 추적기 양식.

    애플리케이션 운영 큐 및 업그레이드 창

    기본적으로 예약된 업그레이드 2시간 전("com.glide.update_operation.queue_upgrade_window"를 통해 사용자 지정 가능)이 지나면 애플리케이션 운영 큐가 대기 중인 메시지 처리를 중지합니다.

    애플리케이션 운영 큐 상태가 "업그레이드 일시 중지됨"으로 변경됩니다. 이 업그레이드 기간 동안 새 CICD 요청이 계속 큐에 대기됩니다.애플리케이션 운영 큐 및 업그레이드 창

    업그레이드가 완료되면 애플리케이션 운영 큐가 큐에 대기 중인 메시지 처리를 자동으로 재개합니다.

    CICD 파이프라인에 미치는 영향

    CICD API에 대한 기존 요청/응답 계약은 변경되지 않습니다. Tokyo 이전 릴리스에서 관찰된 인스턴스 와이드 잠금/뮤텍스 충돌 업데이트로 인한 작업 실패는 표시되지 않습니다. 요청은 작업 유형에 따라 하나씩 또는 병렬로 큐에 대기하고 제공됩니다.

    큐를 지원하는 CICD API

    다음 CICD API가 처리를 위해 큐에 대기 중입니다.
    • api/sn_cicd/app_repo/install
    • api/sn_cicd/v1/app_repo/install
    • api/sn_cicd/v2/app_repo/install
    • api/sn_cicd/app_repo/롤백
    • api/sn_cicd/v1/app_repo/install
    • api/sn_cicd/v2/app_repo/롤백
    • API/sn_cicd/SC/apply_changes
    • api/sn_cicd/v1/sc/apply_changes
    • api/sn_cicd/v2/sc/apply_changes
    • api/sn_cicd/app/batch/install
    • api/sn_cicd/sc/import
    • api/sn_cicd/plugin/{plugin_id}/activate
    • api/sn_cicd/plugin/{plugin_id}/rollback

    애플리케이션 설치 및 플러그인 활성화 병렬화

    부터 Tokyo다음 작업을 다른 작업과 병렬로 실행할 수 있습니다.
    • api/sn_cicd/app_repo/install
    • api/sn_cicd/v1/app_repo/install
    • api/sn_cicd/v2/app_repo/install
    • api/sn_cicd/plugin/{plugin_id}/activate

    모든 큐 처리는 인스턴스 와이드 잠금/뮤텍스 를 사용하고 큐에 대기 중인 작업이 완료될 때까지 이 뮤텍스를 유지합니다. 이 잠금을 UpdateMutex라고 하며 해당 상태는 sys_mutex 테이블에서 볼 수 있습니다. 이 기간 동안에는 이와 동일한 잠금을 취하는 작업(앱 설치, 플러그인 활성화, 소스 통제 작업)을 UI를 통해 수행할 수 없습니다. 현재 실행 중인 작업이 완료된 후에도 애플리케이션 운영 큐 페이지를 통해 큐를 일시 중지하여 잠금을 해제할 수 있습니다.

    병렬화는 기본적으로 사용하도록 설정됩니다. com.glide.update_operation parallel_operation_enabled 속성을 사용하여 끌 수 있으며 모든 작업은 이전 릴리스에서와 같이 큐에서 순차적으로 실행됩니다.

    병렬화에 대한 제한

    큐 프로세서는 큐에 삽입된 작업을 실행할 수 있는지 여부를 결정합니다. 작업을 실행할 수 있는 경우 최초 가용성 시 인스턴스 노드에서 작업을 선택하도록 예약됩니다. 그렇지 않은 경우 큐로 반환되고 프로세서는 처리를 위해 큐의 다음 작업을 평가합니다.

    병렬로 실행할 수 있는 최대 작업 수에는 제한이 있으며, 기본값은 2입니다. 이 속성은 glide.update.app_operation_queue.parallel.max 를 통해 전환할 수 있지만 설치를 수행하는 데 사용할 수 있는 스레드의 상한이 있으며 병렬화가 증가하면 추가 메모리가 필요하므로 활성 사용자의 인스턴스 속도가 느려질 수 있습니다.

    자원 잠금 얻기

    다음 플러그인과 애플리케이션은 동시에 설치할 수 없습니다.
    • 사용자 지정을 포함하여 동일한 범위를 공유하는 두 작업입니다.
    • 스키마 변경을 유발하는 두 작업입니다.
    • 수정 스크립트를 포함하는 두 작업입니다.

    큐 처리는 큐에 삽입된 작업에 대해 이러한 기준이 충족되는지 여부를 결정하고 필요한 경우 처리할 수 없는 작업을 연기합니다. 작업이 적절한 자원 잠금을 얻을 때까지 대기 중인지 반영하도록 작업의 진행률 ID가 업데이트됩니다. 실행 중인 작업은 sys_padlock 테이블에 있는 자원(범위, 스키마, 수정 스크립트) 목록을 유지 관리하며, 이러한 잠금의 삽입 및 해제는 이 테이블에서 진행률 ID로 관찰할 수 있습니다. 자원에 필요한 잠금을 얻을 수 없어 큐에 대기 중인 작업이 지연되면 다른 메시지가 처리할 수 있도록 휴지 상태가 됩니다. 휴지 기간은 com.glide.update_operation.job_cancel_timeout_minutes 속성으로 수정할 수 있습니다. 작업이 아직 큐에 있으며 애플리케이션 운영 큐 페이지에 표시됩니다.

    큐에서 애플리케이션 패키지를 다운로드하거나 얻는 데 필요한 자원을 확인하기 위한 플러그인을 찾을 수 없는 경우 큐에 대기 중인 작업에 대해 오류를 기록합니다. 운영에서 자원을 정해진 횟수 만큼 미리 못하면 추적기가 실패하고 작업이 큐에서 제거됩니다. 최대 횟수는 기본적으로 3번으로 설정되며 com.glide.update_operation.max_failure_count 속성으로 수정할 수 있습니다.
    주:
    필요한 잠금을 얻지 못하면 실패 시도로 계산되지 않습니다. AppRepo에서 애플리케이션 패키지를 다운로드하지 못하는 등의 오류가 발생한 경우에만 계산됩니다.