QStash를 발표하게 되어 자랑스럽고 기쁩니다 🔥🔥🔥
공식적으로 QStash는 서버리스 런타임을 위해 설계된 메시지 대기열 및 작업 스케줄러입니다. 비공식적으로 QStash는 서버리스 기능을 위한 접착제입니다.
서버리스는 단순한 작업에만 적합하다는 인식이 있었습니다. 더 이상은 아닙니다. 사람들은 서버리스 스택으로 강력한 시스템을 구축합니다. 강력한 시스템은 여러 구성 요소로 구성됩니다. 이러한 구성 요소 간의 통신은 큰 엔지니어링 문제입니다. 이 문제에 대한 훌륭한 해결책이 이미 있습니다. 하지만 우리는 기존 솔루션이 서버리스 공간에 적합하지 않다고 생각합니다. 너무 복잡하거나 상태 비저장 런타임과 함께 작동하도록 설계되지 않았습니다. 그래서 우리는 다음과 같은 해결책을 원합니다:
- 서버리스 및 엣지를 포함하여 어디서나 작동합니다.
- 사용자가 실행할 백엔드가 없는 서비스로서의 메시징
- 가벼워서 이해하기 쉬우며 배울 필요가 없습니다.
- 가격은 0으로 조정됩니다.
실제 사례에 대해 이야기해 보겠습니다. 우리는 전자상거래 앱을 갖고 있으며, 구매할 때마다 정보 이메일을 보내고 싶습니다. 신규 구매(newPurchase)를 위한 서비스(API 경로)와 이메일 및 알림 전송(sendEmail)을 위한 두 번째 서비스가 있습니다. newPurchase 서비스에서 sendEmail 서비스를 호출할 수 있습니다. 하지만 통화가 실패하면 어떻게 되나요? 응답을 기다렸다가 다시 시도해야 할까요? 너무 많은 호출이 sendEmail 서비스를 정체시키고 서비스가 제 시간에 응답하지 않으면 어떻게 됩니까? newPurchase 서비스에서 이러한 모든 사례를 처리해야 합니다. 또한, 귀하가 sendEmail 서비스의 계약을 변경하는 경우; newPurchase 서비스도 업데이트해야 합니다.
위의 예에서 QStash를 사용하는 경우 newPurchase 서비스에서 QStash에 요청을 보내기만 하면 됩니다. QStash는 요청을 대기열에 추가하고 sendEmail 서비스를 호출합니다. 서비스가 응답하지 않으면 QStash는 백오프 전략을 사용하여 다시 시도합니다. sendEmail 서비스의 대기 시간은 newPurchase 서비스에 영향을 미치지 않습니다. 왜냐하면 newPurchase 서비스는 sendEmail 서비스의 응답을 기다리지 않기 때문입니다. QStash는 newPurchase 및 sendEmail 서비스를 분리합니다. 메시지 형식의 호환성을 유지하는 한 두 서비스를 독립적으로 업데이트할 수 있습니다.
QStash를 사용하면 delays을 추가할 수 있습니다. 요청에. 배송 후 3일 후에 이메일을 보내 고객에게 리뷰 추가를 상기시키세요. 작업을 예약할 수도 있습니다. CRON 표현식을 사용하여 요청을 보낼 수 있으므로 반복적으로 실행됩니다.

이제 QStash의 기능을 간단히 살펴보겠습니다:
어디서나 작동
대기열에서 소비하기 위해 장기 실행 프로세스가 필요한 기존 풀 기반 메시징 대신 QStash는 메시지를 API에 푸시합니다. 이를 통해 서버리스 기능을 사용하여 처리할 수 있습니다. 재시도, 사용자 정의 지연 및 예약을 처리해 드립니다. 공개적으로 액세스할 수 있는 HTTP API만 있으면 됩니다.
가격이 0으로 조정
QStash 가격은 요청 100,000건당 $1입니다. 좋은 점은 최소 지불이나 고정 지불이 없다는 것입니다. 사용한 만큼만 비용을 지불하면 됩니다. 수백만 건의 요청이 예상되는 경우 요청당 가격이 더 낮은 기업용 요금제를 제공해 드립니다.
업데이트 - 2022년 9월
QStash 가격을 요청 100,000개당 1달러로 낮추었습니다. 최신 가격 정보는 QStashPricing 페이지를 참조하세요.
엔드포인트 및 주제
QStash에 대한 메시지와 함께 끝점을 포함합니다. 따라서 QStash는 이 끝점으로 메시지를 보냅니다. 또한 하나 이상의 엔드포인트를 단일 네임스페이스로 그룹화할 수 있는 주제를 정의할 수 있습니다. 주제 추상화 덕분에 백엔드 구현을 건드리지 않고도 엔드포인트를 수정할 수 있습니다. 아래는 user-apis 주제로 요청을 보냅니다. . 메시지 사본이 각 엔드포인트에 전달됩니다.
엔드포인트로 보내기
curl -XPOST \
"https://qstash.upstash.io/v1/publish/https://example.com" \
-H "Authorization: Bearer XXX" \
-H "Content-Type: application/json" \
-d "{ \"hello\" : \"world\" }" 주제로 보내기
curl -XPOST \
"https://qstash.upstash.io/v1/publish/user-apis" \
-H "Authorization: Bearer XXX" \
-H "Content-Type: application/json" \
-d "{ \"hello\" : \"world\" }" 일정
QStash는 일정에 따라 작업 전송을 반복할 수 있습니다. CRON 표현식을 Upstash-Cron 헤더의 값으로 설정합니다. 아래 예는 QStash가 1분마다 API를 호출하도록 지시합니다.
curl -XPOST \
'https://qstash.upstash.io/v1/publish/https://example.com'
-H 'Authorization: Bearer XXX' \
-H "Content-type: application/json" \
-H "Upstash-Cron: * * * * *" \
-d '{ "hello": "world" }' \ 더보기
- 재시도:API가 성공 상태 코드로 응답하지 않으면 QStash는 모든 메시지가 전달되는지 확인하기 위해 요청을 재시도합니다.
- 지연:메시지 전달을 최대 90일까지 지연합니다.
- 중복 제거:중복 제거 ID 또는 자동 콘텐츠 기반 중복 제거를 사용하여 중복 메시지를 방지할 수 있습니다.
- 요청 서명:API는 공개되어야 합니다. 서명을 확인하여 수신되는 각 요청의 진위 여부를 확인할 수 있습니다.
- JS/TS SDK:REST API는 간단하지만 JS/TS를 기반으로 구축하는 경우 SDK가 훨씬 더 간단합니다.
마무리 단어
QStash는 서버리스 세계에 최고의 메시징 서비스를 제공하는 것을 목표로 합니다. 이번 릴리스는 첫 번째 릴리스이므로 여러분의 피드백과 참여가 절실히 필요합니다. QStash 문서를 확인하세요. 여러분의 의견과 제안을 Discord와 Twitter로 보내주세요.