Temporal은 개발자가 ‘행복 경로(Happy Path)’에 집중하며 복잡한 오류 처리 로직 구현 부담을 줄여 애플리케이션 개발 속도와 유지보수성을 높입니다.
Temporal의 핵심 기능 및 이점
-
자동 상태 유지: 애플리케이션 변수 상태를 자동으로 영구 저장하여, 프로그램 종료 후에도 이전 상태를 복원하고 실행을 재개합니다. 별도 데이터베이스 없이 상태를 관리할 수 있습니다.
-
내장된 재시도 및 타임아웃: 외부 서비스 호출 실패 시 자동 재시도 기능을 제공하며, 무한 대기를 방지하는 타임아웃 설정이 가능하여 시스템 안정성을 높입니다.
-
개발 생산성 향상: 오류 처리 코드로 인한 코드 복잡성을 줄여 개발자가 핵심 비즈니스 로직에 집중하도록 돕습니다.
아키텍처 및 지원
-
다국어 SDK 지원: Java, Go, Python, PHP, TypeScript를 포함하며, 최근 Ruby SDK가 추가되어 Ruby 개발자도 Temporal을 활용할 수 있습니다. 다중 언어(Polyglot) 환경을 지원합니다.
-
오픈소스 모델: MIT 라이선스 기반의 오픈소스이며, 자가 호스팅은 무료입니다. 관리형 서비스인 Temporal Cloud도 제공됩니다.
데모를 통한 주요 활용 사례
-
견고한 실행 시연: Ruby 카운터 프로그램이 중간에 종료되어도 재실행 시 중단된 지점부터 이어서 실행되는 것을 보여줍니다.
-
복잡한 비즈니스 로직 처리:
- 자동 복구: 네트워크 오류 발생 시 자동으로 재시도하여 거래를 성공적으로 완료합니다.
- 보상 패턴(Saga Pattern): 입금 실패 시 이미 출금된 금액을 원 계좌로 환불하는 보상 로직을 통해 거래 일관성을 보장합니다.
- 실시간 버그 수정: 라이브 시스템에서 버그 발생 시 Temporal UI를 통해 식별하고, 코드를 수정한 후 재배포하면 중단 지점부터 수정된 코드로 재실행되어 완료됩니다.
- 휴먼-인-더-루프: 고액 송금 시 관리자 승인을 대기하는 워크플로우를 구현하고,
workflow signal을 통해 외부에서 승인 메시지를 보내 워크플로우를 진행시킵니다.