Wippy 소개

Wippy는 실행 중 변경이 필요한 소프트웨어를 위한 오픈소스 액터 모델 런타임입니다. 자동화 시스템, AI 에이전트, 플러그인 아키텍처처럼 핵심 로직은 한 번만 개발하고 이후에는 재빌드나 재배포 없이 계속 적응해 나가야 하는 애플리케이션에 적합합니다.

Wippy가 무엇을 대체하는지, 무엇이 아닌지, 누가 만드는지를 포함한 전체 제품 개요는 About 페이지를 참고하세요.

액터 모델 기반으로 동작합니다. 코드는 메시지로 통신하는 격리된 프로세스에서 실행되며, 각 프로세스는 자체 상태를 관리합니다. 무언가 실패해도 해당 프로세스만 영향받습니다. 슈퍼비전 트리가 장애 발생 시 프로세스를 자동으로 재시작하여 복구합니다.

local worker = process.spawn("app.workers:handler", "app:processes")
process.send(worker, "task", {id = 1, data = payload})
process.monitor(worker)

설정은 중앙 레지스트리에 저장되며, 변경 사항은 이벤트로 전파됩니다. 설정 파일을 수정하면 실행 중인 프로세스가 이를 감지합니다. 시스템을 재시작하지 않고도 새 연결 추가, 동작 변경 등 필요한 조정이 가능합니다.

local db = registry.get("app.db:postgres")
local cache = registry.get("app.cache:redis")

결제 처리, 다단계 워크플로우, 장기 실행 에이전트 작업처럼 인프라 장애에도 반드시 완료되어야 하는 작업은 런타임이 자동으로 상태를 저장합니다. 서버가 중단되어도 워크플로우는 다른 머신에서 중단된 지점부터 재개됩니다.

전체 시스템은 단일 바이너리로 실행됩니다. 별도의 컨테이너 오케스트레이션이나 서비스 조율이 필요 없습니다. 바이너리 하나와 설정 파일 하나만 있으면 런타임이 나머지를 처리합니다.

Wippy를 만든 이유에 대한 전체 이야기는 Why We Built Wippy에서 확인하세요.