로직은 계속 여러분의 것입니다

Fóir는 코드를 호스팅하지 않습니다. 함수를 작성해 HTTP를 제공하는 곳이면 어디에든 호스팅하고 그 URL을 오퍼레이션으로 등록하면, Fóir가 호출하고, 재시도가 도움이 될 때는 재시도하며, 모든 실행을 기록합니다.

HTTP 계약

하나의 오퍼레이션 호출은 JSON 본문을 담은 HTTP POST이므로, HTTP를 제공하고 서명된 토큰을 검증할 수 있는 언어라면 무엇이든 사용할 수 있습니다. 공개된 SDK 헬퍼는 JavaScript와 TypeScript용입니다. 다른 언어에서는 요청과 토큰 검증을 직접 구현해야 합니다. 엔드포인트는 공개적으로 라우팅 가능해야 하며, 루프백, 사설, 클라우드 메타데이터 주소는 저장할 때와 호출할 때 다시 한번 거부됩니다. 로컬 작업에서는 foir operations dev 명령이 프로젝트의 디스패치를 외부에 노출하지 않고 로컬 머신으로 전달합니다.

호출마다 포함되는 토큰

모든 호출에는 서명된 단기 토큰이 포함되며, 이 토큰은 X-Foir-Token 헤더로 전달되고 해당 디스패치 하나로 범위가 제한됩니다. 함수는 Fóir가 공개한 키로 이를 검증합니다. 토큰에는 오퍼레이션이 선언한 기능만 정확히 담기며, 예를 들면 한 모델의 레코드를 읽거나 다른 모델의 레코드를 쓰는 것입니다. 함수는 API 키를 보유하지 않습니다. 토큰으로 클라이언트를 만들어 오퍼레이션의 자격으로 Fóir를 호출합니다.

시크릿 읽기

같은 토큰으로 함수는 프로젝트의 시크릿을 읽을 수 있습니다. 필요할 때 getSecret 호출로 하나씩 가져오며, Fóir가 보내는 요청에는 아무것도 대신 채워지지 않습니다. 예외는 템플릿형 오퍼레이션으로, Fóir가 직접 서드파티 API를 호출하며 사용자의 코드는 실행되지 않습니다. 이 경우 Fóir가 볼트에서 시크릿을 꺼내 나가는 요청에 채웁니다.

재시도와 실행 기록

연결할 수 없는 엔드포인트나 서버 오류처럼 다시 시도하면 해결될 수 있는 실패는 기본 세 번까지 재시도됩니다. 클라이언트 오류나 거부는 재시도하지 않습니다. 재시도를 모두 소진한 실행은 데드 레터 큐로 이동하며, 여기서 확인하고, 재시도하고, 무시할 수 있습니다. 모든 실행은 상태, 소요 시간, 결과 또는 오류, 트리거, 재시도 횟수와 함께 저장됩니다. 같은 페이로드가 두 번 이상 도착할 수 있으므로 핸들러는 멱등하게 작성해야 합니다.

자세한 내용 보기

오퍼레이션 가이드에서 요청과 토큰 계약, 트리거, 동기 및 비동기 모드, 재시도, 실행 기록을 다룹니다.