Shoal은 코드의 배포와 공개를 분리합니다. 기능을 플래그 뒤에 두고 꺼진 상태로 프로덕션에 배포한 다음, 동료 한 명, 베타 그룹, 트래픽의 5%에게 차례로 켜면 됩니다. 다시 배포할 필요가 없습니다.
빠른 시작5분 안에 첫 플래그를 평가해 보세요.핵심 개념플래그, 환경, 타기팅 규칙을 설명합니다.Next.js 가이드서버 컴포넌트, 미들웨어, 엣지 평가.API 레퍼런스모든 REST 엔드포인트와 요청·응답 예제.
동작 방식
앱은 작은 SDK로 Shoal과 통신합니다. SDK는 시작할 때 환경의 룰셋(모든 플래그를 담은 작은 JSON 문서)을 내려받아 플래그를 로컬에서 평가합니다. 평가할 때 네트워크를 기다리지 않으므로 플래그 확인 비용은 마이크로초 수준입니다.
app.ts
import { createClient } from "@shoal/sdk";
const shoal = createClient({ key: process.env.SHOAL_KEY! });
if (await shoal.isOn("new-checkout", { user: { id: "u_42", plan: "pro" } })) {
renderNewCheckout();
}대시보드에서 플래그를 바꾸면 연결된 SDK가 스트리밍 연결로 약 1초 안에 변경 사항을 받습니다.
왜 Shoal인가
- 타입이 있는 플래그.
shoal generate가 플래그 키를 타입스크립트 유니언으로 만들어 주므로, 오타는 조용한false가 아니라 컴파일 오류가 됩니다. - 로컬 평가. 요청마다 네트워크를 타지 않고, 마지막으로 받은 룰셋으로 오프라인에서도 동작합니다.
- 엣지 지원. 의존성 없이 Node, Bun, Deno, 브라우저, 엣지 런타임에서 실행됩니다.
- 모든 변경 기록. 누가, 무엇을, 왜 바꿨는지 남고, 기록 화면에서 되돌릴 수 있습니다.