일반적인 문제와 제한사항

Cloud Tasks 사용 시 다음과 같은 문제 및 제한이 발생할 수 있습니다.

실행 순서

향후 실행하도록 예정된 작업을 제외한 작업 대기열은 실행 순서와 전혀 상관없이 실행됩니다. 특정 순서로 작업을 실행한다고 보장하거나 이를 위한 최선의 노력도 시도하지 않습니다. 특히 대기열이 완전히 비어 있지 않으면 이전 작업이 실행된다는 보장이 없습니다. 최신 작업이 이전 작업보다 먼저 실행된다는 일반적인 사례가 많이 있으며, 이와 관련한 패턴은 예고 없이 변경될 수 있습니다.

중복 실행

Cloud Tasks는 '정확하게 한 번만 실행'이라는 의미 구현을 목적으로 합니다. 그러나 설계상 보장된 실행과 중복 실행 간에 균형을 맞춰야 하는 상황에서는 보장된 실행에 서비스 오류가 발생합니다. 마찬가지로 중복 실행이 1회 이상 발생합니다. 개발자는 중복 실행이 치명적인 결과를 초래하지 않도록 조치를 취해야 합니다. 프로덕션 단계에서는 99.999% 이상의 작업이 한번만 실행됩니다.

리소스 제한사항

즉시 처리 큐에서 가장 일반적인 백로그 소스는 대상 인스턴스의 리소스를 소진하는 것입니다. 사용자가 초당 10개의 요청만 처리할 수 있는 프런트엔드 인스턴스에서 초당 100개의 작업을 실행하려고 하면 백로그가 만들어집니다. 이는 대개 두 가지 방식 중 하나로 나타나는 데, 이중 하나는 일반적으로 요청을 처리하는 인스턴스 수를 늘려서 해결할 수 있습니다.

백오프 오류 및 적용 비율

과부하되는 서버는 HTTP 응답 코드 503의 형태로 백오프 오류를 반환할 수 있습니다. Cloud Tasks는 오류가 중단될 때까지 실행 속도를 늦춰서 이러한 오류에 대응합니다. 이는 Cloud Console의 '적용 비율' 필드에서 확인할 수 있습니다.

Cloud Tasks 페이지로 이동

지연 시간 급증 및 최대 동시 작업 수

과부하된 서버도 크게 증가한 지연 시간으로 응답할 수 있습니다. 이 상황에서 요청은 장기간 미해결 상태로 유지됩니다. 큐는 최대 동시 태스크 수로 실행되므로 큐에서 태스크를 예상 비율로 실행하지 못할 수 있습니다. 값이 너무 낮게 설정되어 있어 인위적인 비율 제한이 발생하는 상황에서는 영향을 받는 큐의 max_concurrent_tasks를 늘리면 이러한 문제가 해결될 수 있습니다. 그러나 max_concurrent_tasks를 늘리는 것으로 기본적인 리소스 문제를 해결하기는 어렵습니다.