windforce¶
git으로 배포한 코드를 안전하게 실행하는 멀티테넌트 SaaS 워커 플랫폼.
windforce에서는 콘솔에서 코드를 쓰거나 자기 git 저장소를 연결하고 Deploy를 누르면, 그 코드가 격리된 워커에서 실행되고 결과·로그가 감사 가능한 형태로 남는다. 트리거(HTTP·webhook·schedule)로 호출하고, 잡(job)의 결과를 받아 간다.
- 함수를 만들고 호출한다 — 앱(Application Project) 안에 액션(Action)을 정의하고,
main(ctx)한 함수를 작성한다. TypeScript·Python·Go를 한 플랫폼에서 실행한다. - 안전하게 실행된다 — 모든 잡은 2계층 샌드박스(호스트 커널 경계 + 테넌트 간 격리)에서 돌아간다. 비신뢰 코드도 받을 수 있게 설계됐다.
- 운영할 수 있다 — Kubernetes 위에서 워커 그룹·스케일·멀티테넌시·관측·시크릿·배포를 GitOps로 운영한다.
어디서 시작할까¶
-
처음 오셨나요?
설치하고 첫 잡을 5분 안에 돌려 본다. 핵심 개념(Workspace·App·Action·Job)도 여기서.
-
windforce로 만드는 분 (사용자)
앱·액션을 만들고, 액션 코드를 작성하고, 트리거로 호출하고, 잡 결과를 받는 법.
-
windforce를 운영하는 분 (운영자)
Kubernetes 배포, 워커 그룹·스케일, 멀티테넌시, 시크릿, 관측, CI/CD.
-
내부가 궁금하신 분
3 평면 + PG 큐, 큐 스파인의 정확성 불변식, 2계층 샌드박싱, 재현성.
한눈에¶
windforce는 세 평면(Control Plane · Trigger Plane · Worker) + 그것들을 잇는 하나의 PG 큐로 구성된다. "일을 만드는 모든 것은 enqueue하고, 워커는 consume한다"가 전체 설계의 한 줄 요약이다.
| 영역 | 무엇 |
|---|---|
| 언어/스택 | Go 단일 정적 바이너리(server/worker/standalone) · Postgres 큐(외부 브로커 없음) |
| 지원 언어 | TypeScript(정본) · Python · Go — 한 워커가 모두 실행 |
| 격리 | gVisor(호스트 커널 경계) + per-job bubblewrap(테넌트 간 격리) 2계층 |
| 재현성 | 잡이 실행 메타(commit·entrypoint·스키마·timeout)를 자기 자신에 self-pin |
| 멀티테넌시 | 워크스페이스별 envelope 암호화 + 사용량 측정·테넌트 quota |
| 배포 | 릴리스 태그 → 인클러스터 CI → Flux GitOps |
이 문서 사이트에 대해
이 사이트는 windforce를 사용·운영하는 사람을 위한 가이드다. 설계 결정의 근거(왜 이렇게 했나)는 레포의 엔지니어링 문서(아키텍처 정본·결정 기록·전체 명세)에 정리돼 있고, 이 사이트의 "아키텍처 & 내부 동작" 섹션은 운영에 필요한 만큼을 압축해 설명하고 더 깊은 원문으로 링크한다.