본문으로 건너뛰기

© 2026 Molayo

GH Trending릴리즈2026. 06. 16. 20:47

Windmill: 내부 코드를 위한 API, 백그라운드 작업, 워크플로 및 UI 오픈소스 개발자 플랫폼

요약

Windmill은 API, 백그라운드 작업, 워크플로 및 UI를 구축할 수 있는 오픈소스 개발자 플랫폼입니다. Retool이나 Temporal의 대안으로 사용 가능하며, 다양한 언어로 작성된 스크립트를 자동으로 UI로 변환하고 관리할 수 있는 기능을 제공합니다.

핵심 포인트

  • Python, TypeScript, Go 등 다양한 언어 지원
  • 스크립트 파라미터를 기반으로 프론트엔드 자동 생성
  • CLI, VS Code 확장 프로그램, Git 동기화 지원
  • Claude Code를 활용한 AI 보조 개발 기능 포함
  • Rust 기반의 고성능 백엔드 및 Svelte 5 프론트엔드 사용

내부 코드를 위한 API, 백그라운드 작업 (background jobs), 워크플로 (workflows) 및 UI를 위한 오픈소스 개발자 플랫폼입니다. Retool, Pipedream, Superblocks를 대체할 수 있는 셀프 호스팅 (Self-hostable) 가능한 대안이며, 자동 생성된 UI 및 워크플로와 스크립트를 내부 앱으로 실행할 수 있는 커스텀 UI를 제공하는 단순화된 Temporal입니다.

스크립트는 자동으로 공유 가능한 UI로 변환되며, 플로우 (flows)로 함께 구성하거나 로우코드 (low-code)로 구축된 더 풍부한 앱에서 사용할 수 있습니다. 지원되는 언어: Python, TypeScript, Go, Bash, SQL, GraphQL, PowerShell, Rust 및 기타 언어.

시도해 보기 - 웹사이트 - 문서 - Discord - Hub - 기여자 가이드

Windmill은 완전히 오픈 소스 (AGPLv3)이며, Windmill Labs는 전용 인스턴스 및 상업적 지원과 라이선스를 제공합니다.

readme_video.mp4

  • Windmill - API, 백그라운드 작업, 워크플로 및 UI를 위한 개발자 플랫폼

  • 특정 작업을 해결하는 Python, TypeScript, Go 또는 Bash로 작성된 최소한의 범용 스크립트를 정의합니다. 코드는 제공된 웹 IDE (Web IDE)에서 정의하거나 본인의 GitHub 리포지토리와 동기화할 수 있습니다 (예: VS Code 확장 프로그램을 통해):

  • 스크립트의 파라미터 (parameters)가 자동으로 파싱되어 프론트엔드 (frontend)를 생성합니다.

  • 플로우를 만드세요! 스크립트를 체이닝 (chain)하거나 WindmillHub에 공유된 커뮤니티 제작 스크립트를 사용할 수 있습니다.

  • 스크립트와 플로우 위에 복잡한 UI를 구축하세요.

스크립트와 플로우는 스케줄 (schedules), 웹훅 (webhooks), HTTP 라우트 (routes), Kafka, WebSockets, 이메일 등을 통해 트리거 (trigger)될 수 있습니다.

Windmill 위에 전체 인프라를 구축하세요!

// npm에서 모든 의존성(dependency)을 가져오기
import * as wmill from "windmill-client";
import * as cowsay from "cowsay@1.5.0";
...

Windmill은 로컬에서 개발하고 인스턴스와 동기화하는 여러 가지 방법을 지원합니다:

도구 (Tool)설명 (Description)
CLI로컬 파일 또는 GitHub에서 스크립트를 동기화하고, 명령줄(command line)에서 스크립트/플로우를 실행합니다
VS Code Extension전체 IDE 지원을 통해 VS Code / Cursor에서 스크립트 및 플로우를 직접 편집하고 테스트합니다
Git SyncWindmill과 Git 저장소 간의 양방향 동기화 (Two-way sync)
Claude CodeClaude를 활용하여 스크립트, 플로우 및 앱을 개발하는 AI 보조 개발

landingscripts-local.mp4

wmill 클라이언트 라이브러리가 인스턴스로부터 리소스와 변수를 가져올 수 있도록 적절한 환경 변수 (environment variables)를 전달함으로써 스크립트를 로컬에서 실행할 수 있습니다. 로컬 개발 문서를 참조하세요.

데이터베이스 (Database): Postgres (Aurora, Cloud SQL, Neon, Azure PostgreSQL과 호환 가능)
백엔드 (Backend): Rust - Postgres 큐 (queue)에서 작업을 가져오는 상태 비저장 (stateless) API 서버 및 워커 (workers)
프론트엔드 (Frontend): Svelte 5
샌드박싱 (Sandboxing): nsjail 및 PID 네임스페이스 격리 (PID namespace isolation)
런타임 (Runtimes):

  • TypeScript/JavaScript: Bun (기본값) 및 Deno
  • Python: 의존성 관리 (dependency management)를 위한 uv를 사용하는 python3
  • Go, Bash, PowerShell, PHP, Rust, C#, Java, Ansible

우리는 Windmill을 다른 셀프 호스팅 가능한 워크플로 엔진 (Airflow, Prefect & Temporal)과 비교하였으며, Windmill은 두 가지 벤치마크 모두에서 가장 성능이 뛰어난 솔루션임을 확인했습니다: 40개의 경량 작업 (lightweight tasks)으로 구성된 하나의 플로우와 10개의 장기 실행 작업 (long-running tasks)으로 구성된 하나의 플로우.

모든 방법론 및 결과는 우리의 벤치마크 (Benchmarks) 페이지에서 확인할 수 있습니다.

샌드박싱 (Sandboxing): 파일 시스템/리소스 격리를 위한 nsjail, 그리고 작업이 워커 프로세스 메모리에 접근하는 것을 방지하기 위한 PID 네임스페이스 격리 (기본적으로 활성화됨)
비밀 정보 (Secrets): Windmill의 K/V 스토어에 저장된 자격 증명 (credentials)을 위해 워크스페이스당 하나의 암호화 키 사용. Postgres 데이터베이스 또한 암호화할 것을 권장합니다.

자세한 내용은 보안 (Security) 문서를 참조하세요.

작업이 시작되면, 해당 러너 (runner) (Deno/Go/Python/Bash)가 있는 노드에서 동일한 스크립트를 실행하는 것과 비교하여 오버헤드가 없습니다. 작업이 큐에서 인출되어 시작되고 결과가 데이터베이스로 다시 전송될 때 발생하는 추가 지연 시간 (latency)은 약 50ms입니다. 전형적인 경량 Deno 작업은 총 약 100ms가 소요됩니다.

자세한 설정 옵션은 Self-Host 문서를 참조하세요.

3개의 파일(docker-compose.yml, Caddyfile, .env)로 Windmill을 배포합니다:

curl https://raw.githubusercontent.com/windmill-labs/windmill/main/docker-compose.yml -o docker-compose.yml
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/Caddyfile -o Caddyfile
curl https://raw.githubusercontent.com/windmill-labs/windmill/main/.env -o .env
...

http://localhost 로 이동하세요 - 기본 자격 증명(credentials): admin@windmill.dev / changeme

외부 데이터베이스 사용하기: .env 파일의 DATABASE_URL을 관리형 Postgres(AWS RDS, GCP Cloud SQL, Azure, Neon 등)를 가리키도록 설정하고, db replicas를 0으로 설정하세요.

helm repo add windmill https://windmill-labs.github.io/windmill-helm-charts/
helm install windmill-chart windmill/windmill --namespace=windmill --create-namespace

구성 옵션은 windmill-helm-charts를 참조하세요.

Windmill은 AWS (EKS/ECS), GCP, Azure, Ubicloud, Fly.io, Render.com, Hetzner, Digital Ocean 및 기타 환경에서 작동합니다. 경험 법칙(Rule of thumb)에 따르면, 1vCPU당 1개의 워커(worker)와 1-2 GB RAM이 권장됩니다.

OAuth 및 SSO (Google Workspace, Microsoft/Azure, Okta)를 superadmin UI에서 직접 구성하세요. 문서를 참조하세요.

Community Edition은 내부적으로 무료로 사용할 수 있습니다. 상업적 재배포 또는 관리형 서비스(managed services)의 경우 sales@windmill.dev로 문의하세요. 자세한 내용은 LICENSE 및 Pricing을 참조하세요.

ghcr.io/windmill-labs/windmill에 호스팅되는 Docker 이미지 및 GitHub 바이너리 릴리스(binary releases)에서 제공되는 Windmill의 "Community Edition"은 AGPLv3 및 Apache 2 소스 아래의 파일들을 포함하고 있으나, 오픈 소스가 아니며 다음 약관에 따른 독점적(proprietary)이고 비공개적인 코드 및 기능들도 포함하고 있습니다: Windmill Labs, Inc.는 소프트웨어에 설정된 제한 및 할당량(quotas) 외에는 제한 없이 "Community Edition"의 모든 기능을 무료로 사용할 수 있는 권리와, 커뮤니티 에디션을 있는 그대로 배포할 수 있는 권리를 부여합니다. 단, 명시적인 합의 없이는 판매, 재판매, Windmill을 관리형 서비스(managed service)로 제공, 또는 어떤 형태로든 수정하거나 래핑(wrap)하는 것은 허용되지 않습니다.

"enterprise" 기능 플래그(feature flag) 없이 이 저장소의 소스 코드로부터 컴파일 가능한 바이너리는 LICENSE-AGPLv3 라이선스 약관 및 조건에 따라 오픈 소스입니다.

iframe으로 구현된 공개 Windmill "앱(apps)"을 제외하고, 귀하의 제품 기능으로서 Windmill의 일부를 사용자에게 직접 다시 노출하거나, 상업적으로 판매하거나 배포 가능한 제품 또는 바이너리에 포함되는 "Windmill Community Edition" 기반의 기능을 구축하려는 경우에는 반드시 상업용 라이선스(commercial license)를 취득해야 합니다. 질문이 있는 경우 sales@windmill.dev로 문의하십시오. "enterprise" 기능 플래그 없이 이 저장소의 소스 코드에서 컴파일된 바이너리를 사용하여 동일한 행위를 하려는 경우, AGPLv3 라이선스 약관 및 조건을 준수하거나 Windmill Labs, Inc.로부터 상업용 라이선스를 취득해야 합니다.

Windmill "Community Edition"을 조직 내부에서 있는 그대로 사용하거나, 그 API를 있는 그대로 사용하는 경우에는 상업용 라이선스가 필요하지 않습니다.

Windmill에서 통합(integrations)은 리소스(resources) 및 리소스 유형(resource types)으로 지칭됩니다. 각 리소스는 해당 리소스가 구현해야 하는 스키마(schema)를 정의하는 리소스 유형(Resource Type)을 가집니다.

셀프 호스팅(self-hosted) 인스턴스의 경우, WindmillHub에서 승인된 모든 리소스 유형을 가져오고 싶을 수 있습니다. 설정 스크립트가 매일 자동으로 동기화되도록 설정할 것인지 사용자에게 안내할 것입니다.

환경 변수 이름 (Environment Variable name)기본값 (Default)설명 (Description)Api Server/Worker/All
DATABASE_URLPostgres 데이터베이스 URL전체 (All)
...

Nix 사용을 권장합니다. 모든 옵션은 ./frontend/README_DEV.md를 참조하세요.

https://app.windmill.dev의 백엔드와 로컬 프론트엔드 (hot-reload)를 사용합니다:

cd frontend
npm install
npm run generate-backend-client # 또는 Mac의 경우 generate-backend-client-mac
...

Windmill은 http://localhost/에서 사용 가능합니다.

모든 실행 옵션은 ./frontend/README_DEV.md 파일을 참조하세요.

  • 예를 들어 start-dev-db.sh 스크립트를 사용하여 로컬 Postgres 데이터베이스를 시작하세요. 이 스크립트는 postgres://postgres:changeme@localhost:5432/windmill에서 데이터베이스를 사용할 수 있게 합니다.

  • 그다음 다음 명령어를 사용하여 마이그레이션 (migrations)을 실행하세요. 이는 또한 sqlx의 query! 매크로와 관련된 컴파일 타임 문제를 방지합니다: cargo install sqlx-cli env DATABASE_URL=<YOUR_DATABASE_URL> sqlx migrate run

  • (선택 사항, Linux 전용) nsjail을 설치하고 PATH에서 접근할 수 있도록 설정하세요.

  • bun, deno, python3 (+ 사용하려는 기타 언어들)를 설치하고, 바이너리(bins)를 /usr/bin/bun, /usr/bin/deno, /usr/local/bin/python3에 위치시키거나 해당 환경 변수를 설정하세요.

  • (선택 사항) lld 링커 (linker)를 설치하세요.

  • frontend/ 디렉토리로 이동하여: npm install, npm run generate-backend-client를 실행한 다음 REMOTE=http://localhost:8000 npm run dev를 실행하세요.

  • Node 런타임을 위해 추가적인 힙 공간 (heap space) 설정이 필요할 수 있습니다: export NODE_OPTIONS="--max-old-space-size=4096"

  • mkdir frontend/build를 사용하여 빈 frontend/build 폴더를 생성하세요.

  • backend/ 디렉토리로 이동하여: env DATABASE_URL=<YOUR_DATABASE_URL> RUST_LOG=info cargo run을 실행하세요.

  • 활성화하려는 기능 플래그 (feature flag)를 지정할 수 있습니다. 예를 들어, python 실행기 (python executor)를 활성화하려면 cargo run --features python을 사용하세요.

  • Windmill은 http://localhost:3000에서 사용 가능해야 합니다.

© 2023-2026 Windmill Labs, Inc.

AI 자동 생성 콘텐츠

본 콘텐츠는 GitHub Trending Rust (weekly)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0