스키퍼: 에어비앤비의 임베디드 워크플로우 엔진 구축
Airbnb는 보험금 청구와 같은 복잡한 워크플로우의 견고한 실행이라는 과제에 직면했습니다. 외부 오케스트레이션 엔진과 같은 기존 솔루션은 운영 복잡성 및 공급업체 종속성과 같은 단점이 있었습니다. 이러한 문제를 해결하기 위해 Airbnb는 각 서비스 내에서 실행되는 내장형 워크플로우 엔진인 Skipper를 구축했습니다. Skipper는 간결성, 단일 실패 지점 없음, 기존 데이터베이스 사용을 우선시합니다. Skipper 설계의 핵심은 개별 작업을 캡슐화하는 로직과 액션을 정의하는 워크플로우를 포함합니다. 내구성은 액션 결과를 데이터베이스에 체크포인트하는 리플레이 메커니즘을 통해 달성됩니다. 리플레이를 통해 워크플로우는 중단 후 중단된 지점에서 다시 시작할 수 있습니다. 상태 필드는 효율성을 위해 지속되며, 시그널을 사용하여 워크플로우의 상태를 업데이트합니다. Skipper를 사용한 워크플로우 테스트는 설정할 큐가 없거나 모의할 인프라가 없기 때문에 단순화됩니다. 이 접근 방식은 종속성을 추가하거나 성능을 저하시키지 않고 견고한 실행을 보장합니다.