새로운 오픈소스 워크플로우 엔진인 'SqlFlow'가 공개되어 개발자 커뮤니티의 주목을 받고 있습니다. SqlFlow는 PostgreSQL 또는 SQL Server를 데이터베이스 백엔드로 활용하여 복잡하고 장기 실행되는 비즈니스 로직을 안정적으로 처리할 수 있도록 설계되었습니다. 특히, 서버 크래시나 네트워크 문제 발생 시에도 작업 상태를 안전하게 유지하고 중단된 지점부터 재개할 수 있는 내구성(durable)이 강점입니다.
SqlFlow는 기존의 무거운 워크플로우 엔진인 Temporal이나 Cadence와 달리, 데이터베이스의 기능을 적극적으로 활용하여 경량화된 솔루션을 제공합니다. 예를 들어, PostgreSQL의 LISTEN/NOTIFY나 SQL Server의 Service Broker와 같은 네이티브 데이터베이스 이벤트 기능을 사용해 작업자(worker)에게 새로운 작업이 있음을 알립니다. 이는 지속적인 데이터베이스 폴링(polling)으로 인한 성능 저하를 방지하고, 유휴 상태의 작업자 스레드를 효율적으로 관리하여 시스템 부하를 줄입니다. 또한, .NET, Java, Python, Go 등 주요 프로그래밍 언어용 SDK를 제공하여 개발자들이 쉽게 워크플로우를 정의하고 실행할 수 있도록 지원하며, NATS JetStream을 통한 고성능 시그널링도 선택적으로 지원합니다.
이 시스템의 핵심 개념은 '워크플로우(Workflow)', '태스크(Task)', '스텝(Step)', '서스펜션(Suspension)'입니다. 워크플로우는 실제 비즈니스 로직을 담은 코드이며, 태스크는 워크플로우의 특정 실행 인스턴스를 의미합니다. 스텝은 내구성을 위한 기본 단위로, API 호출과 같이 실패할 수 있는 작업을 스텝으로 감싸면 SqlFlow가 그 결과를 데이터베이스에 저장하여 재시작 시 중복 실행을 방지합니다. 또한, 외부 이벤트 대기 시 워크플로우를 메모리에서 언로드하고 데이터베이스에 상태를 저장하는 서스펜션 기능을 통해 리소스 낭비를 막습니다. 이러한 기능들은 장기 실행 비즈니스 프로세스의 안정성과 효율성을 크게 향상시키며, 분산 시스템 환경에서 복잡한 작업 관리를 간소화하는 데 기여할 것으로 기대됩니다.