프로세스 프레임워크 핵심 구성 요소
Process Framework 핵심 구성 요소
Process Framework는 모듈식 아키텍처 위에 세워져 있습니다. 개발자가 정교한 워크플로를 구성할 수 있게 해주는 핵심 구성 요소들의 조합이죠. 이 구성 요소들을 이해하는 게 프레임워크를 제대로 활용하기 위한 첫걸음입니다.
Process
Process는 단계(Step)들의 실행을 조율하는 전체 컨테이너 역할을 합니다. Step 사이의 데이터 흐름과 라우팅을 정의해서 프로세스 목표를 효율적으로 달성하게 해주죠. 입력과 출력을 처리하면서 다양한 워크플로에 걸쳐 유연성과 확장성을 제공합니다.
Process의 특징
- 상태 보존(Stateful): 추적 상태나 완료 비율 같은 정보를 조회할 수 있고, 일시 중지와 재개도 지원합니다.
- 재사용 가능: 다른 프로세스 안에서 또 다른 프로세스를 호출할 수 있어요. 모듈성과 재사용성이 좋아집니다.
- 이벤트 기반: 리스너를 활용한 이벤트 기반 흐름으로 데이터를 Step이나 다른 프로세스로 라우팅합니다.
- 확장 가능: 검증된 런타임을 사용해 전 세계적인 확장과 배포를 지원합니다.
- 클라우드 이벤트 통합: Process나 Step을 트리거하는 데 업계 표준 이벤트 방식을 채택합니다.
프로세스 만들기
새 Process를 만들려면 프로젝트에 Process 패키지를 추가하고 프로세스에 이름을 정해 주면 됩니다.
Step
Step은 프로세스 안의 기본 빌딩 블록입니다. 각 Step은 독립된 작업 단위에 해당하고, 하나 이상의 Kernel Function을 감쌉니다. 특정 프로세스에서 쓰이기 전에 독립적으로 만들 수 있어서 재사용성이 높아져요. Step은 수행한 작업을 바탕으로 이벤트를 발생시키고, 이 이벤트가 뒤따르는 Step을 트리거합니다.
Step의 특징
- 상태 보존: 상태나 정의된 태그 같은 정보를 추적할 수 있습니다.
- 재사용 가능: Step은 여러 프로세스에서 쓰일 수 있어요.
- 동적: 필요한 패턴에 따라 프로세스가 Step을 그때그때 동적으로 만들 수도 있습니다.
- 유연: Kernel Function을 활용해 코드 전용, API 호출, AI 에이전트, 사람 개입(Human-in-the-loop) 등 여러 유형의 Step을 만들 수 있어요.
- 감사 가능: Step과 Process 양쪽 모두에서 텔레메트리가 활성화됩니다.
Step 정의하기
Step을 만들려면 public 클래스를 정의해 Step에 이름을 붙이고 KernelStepBase에 추가합니다. 클래스 안에 Kernel Function을 하나 이상 넣을 수 있어요.
프로세스에 Step 등록하기
클래스를 만들었다면 그걸 프로세스에 등록해야 합니다. 프로세스의 첫 번째 Step이라면 isEntryPoint: true를 붙여서 프로세스가 어디서 시작해야 하는지 알려줍니다.
Step 이벤트
Step에는 주로 다음 이벤트들이 있습니다.
- OnEvent: 클래스 실행이 끝났을 때 트리거됩니다.
- OnFunctionResult: 정의한 Kernel Function이 결과를 내보냈을 때 활성화됩니다. 출력을 하나 또는 여러 Step으로 보낼 수 있죠.
- SendOutputTo: 이후 Step으로 결과를 보낼 Step과 입력을 지정합니다.
Pattern
Pattern은 흔히 쓰이는 프로세스 흐름을 표준화해, 자주 사용하는 작업의 구현을 단순하게 만들어 줍니다. 반복되는 문제를 여러 구현에서 일관성 있게 풀도록 도와주고, 유지보수성과 가독성을 높여요.
패턴 유형
- Fan In: 다음 Step의 입력이 이전 Step들의 여러 출력으로 구성됩니다.
- Fan Out: 이전 Step의 출력이 프로세스 아래쪽의 여러 Step으로 분산됩니다.
- Cycle: 입력과 출력에 따라 완료될 때까지 Step이 계속 루프합니다.
- Map Reduce: Step의 출력이 더 적은 양으로 통합되어 다음 Step의 입력으로 전달됩니다.
패턴 설정하기
Step 클래스를 만들고 프로세스에 등록했다면, 이제 다른 Step으로 보낼 이벤트나, 자신의 출력을 바탕으로 Step을 다시 시작하게 할 조건을 정의할 수 있어요.