원문 캡처 · github.com
원문 캡처 · github.com

Composable Services Platform은 동적 작업 제어 모델로 조합형 서비스를 정의하고, 검색하고, 조율하는 모듈형 시스템을 담은 저장소다. 느슨하게 연결된 Node.js 서비스들이 네트워크에서 실행 시점에 유연하게 상호작용하도록 설계됐다.

핵심 구성요소는 서비스 등록과 메타데이터 제공, 상태 점검을 지원하는 경량 메모리 내 검색 서비스(discovery/), 작업 실행 간 구조화된 상태를 보관하는 문서 저장소(shared-state/), 여러 단계의 순차 작업과 병렬 태스크를 조율하는 job-control/, 그리고 design.json을 읽어 명령을 동적으로 제공하는 런타임 엔진(engine-service/)이다. 작업 제어 기능은 선언형 작업 정의, $fromState를 이용한 입력의 동적 결정, storeResultAt을 통한 결과 저장, 되돌릴 수 있는 실행 모델을 지원한다. 단계나 태스크는 enabled: false로 비활성화할 수 있다.

엔진 서비스는 /execute, /repeat, /revert 엔드포인트 패턴을 사용한다. 개발자가 정의한 명령과 기본 동작을 지원하며, 서비스 검색 등록 기능도 제공한다. 검색 서비스의 주요 엔드포인트는 /register, /unregister, /ping, /services다. 공유 상태 저장소는 POST /state, GET /state/:id, PATCH /state/:id, DELETE /state/:id를 제공한다.

작업 실행 도구인 job-runner/는 플랫폼에서 작업을 실행하는 명령줄 도구다. 공유 상태 문서를 만들고 작업 제어 파일을 제출하며, JSON 파일의 값을 주입하고 /jobs/:id를 폴링해 진행 상황을 확인한다. 공유 상태 결과를 내보내거나 삭제할 수 있고, 기본값은 로컬 .job-runner.json에서 읽는다.

text
npx job-runner run my-job.json --emit final.json --cleanup

시작하기 안내에 따르면 먼저 ./scripts/start-all.sh로 플랫폼 서비스를 시작한 뒤 service-a, service-b 같은 조합형 서비스를 등록한다. 이후 다음 명령으로 작업을 제출하고 모니터링한다.

text
npx job-runner examples/sample-job.json --emit

저장소는 향후 방향으로 ALPS 통합, 지속형 작업 재실행과 감사 로그, 공유 상태의 원격 저장소, 런타임에 검색할 수 있는 서비스 계약을 제시한다.