
세일즈포스 자동화의 심장, 플로우 트리거 5종 심층 분석 및 아키텍처 가이드
세일즈포스 생태계에서 ‘선언적 개발(Declarative Development)’의 위상이 그 어느 때보다 높습니다. 과거에는 Apex 코딩으로만 가능했던 복잡한 로직들이 이제는 플로우(Flow)라는 강력한 도구 안에서 모두 구현 가능해졌기 때문입니다. 특히 워크플로우와 프로세스 빌더가 공식적으로 은퇴의 길을 걸으면서, 모든 관리자와 개발자에게 플로우 마스터는 선택이 아닌 생존의 문제가 되었습니다.
하지만 단순히 플로우를 ‘그릴 줄 아는 것’과 ‘최적화된 설계를 하는 것’은 전혀 다른 차원의 이야기입니다. 그 설계의 시작점이 바로 트리거 유형(Trigger Type)의 선택입니다. 트리거를 잘못 선택하면 시스템의 퍼포먼스가 급격히 저하되거나, 거버너 리밋(Governor Limits)의 벽에 부딪혀 비즈니스 프로세스가 마비될 수 있습니다. 오늘은 현업에서 가장 많이 쓰이는 5가지 플로우 트리거를 파헤치고, 각 상황에 맞는 아키텍처 설계 전략을 공유하겠습니다.
1. 레코드 트리거 플로우 (Record-Triggered Flow): 최적화의 승부처
가장 대중적이면서도 기술적 깊이가 요구되는 유형입니다. 레코드의 생성, 수정, 삭제가 일어나는 순간 실행되는데, 여기서 우리는 실행 시점(Order of Execution)에 주목해야 합니다.
Fast Field Updates (Before-Save)는 플로우의 보석 같은 기능입니다. 레코드가 데이터베이스에 실제로 저장되기 직전에 값을 변경합니다. 이는 데이터베이스에 ‘쓰기’ 작업을 한 번만 수행하게 만들므로, After-Save 방식보다 압도적으로 빠릅니다. 만약 업데이트하려는 대상이 트리거를 발생시킨 ‘자기 자신’이라면, 고민할 필요 없이 무조건 이 방식을 써야 합니다. 예를 들어, 리드의 특정 주소 정보를 바탕으로 지역(Region) 필드를 자동 할당하는 로직은 여기서 처리하는 것이 베스트 프랙티스입니다.
Actions and Related Records (After-Save)는 레코드가 저장된 이후에 작동합니다. “저장이 완료되었으니 이제 다른 일을 해도 좋다”는 신호와 같습니다. 관련 있는 다른 레코드를 생성하거나, 이메일 알림을 보내고, 외부 시스템으로 데이터를 전송하는 등의 작업은 여기서 이루어집니다.
2. 스케줄 트리거 플로우 (Schedule-Triggered Flow): 효율적인 자원 관리의 핵심
많은 관리자가 간과하는 사실 중 하나는, 모든 것을 실시간(Real-time)으로 처리할 필요는 없다는 점입니다. 실시간 처리가 많아질수록 시스템 부하는 커집니다. 이때 구원투수가 되는 것이 바로 스케줄 트리거 플로우입니다.
이 유형은 배치(Batch) 프로세스처럼 작동합니다. 예를 들어 “매일 밤 12시에 종료일이 지난 영업 기회의 상태를 ‘기간 만료’로 변경하라”는 요구사항이 있다면, 굳이 레코드가 수정될 때마다 트리거를 태울 필요가 없습니다. 스케줄 플로우를 통해 비혼잡 시간대에 일괄 처리함으로써 시스템의 안정성을 확보할 수 있습니다. 특히 대용량 데이터를 다룰 때 세일즈포스가 내부적으로 200개씩 묶어서(Chunking) 처리해주기 때문에 리밋 관리 측면에서도 매우 유리합니다.
3. 스크린 플로우 (Screen Flow): 사용자 경험(UX)의 완성
플로우 중 유일하게 사용자 인터페이스를 가지는 유형입니다. 단순한 데이터 입력 창을 넘어, 비즈니스 로직이 가미된 ‘지능형 마법사’ 역할을 수행합니다.
실무에서는 주로 복잡한 인테이크(Intake) 과정을 간소화할 때 사용합니다. 예를 들어 고객 서비스 센터에서 상담원이 전화를 받으면서 정보를 입력할 때, 고객의 유형(개인/기업)에 따라 다음에 보여줄 화면을 동적으로 제어할 수 있습니다. 이는 데이터 입력의 오류를 원천 차단하고 교육 비용을 획기적으로 줄여줍니다. 또한, 라이트닝 페이지나 유틸리티 바에 배치하여 접근성을 높일 수 있다는 점도 큰 장점입니다.
4. 자동 실행 플로우 (Autolaunched Flow): 모듈화와 재사용성의 실현
현명한 관리자는 같은 로직을 두 번 쓰지 않습니다. 자동 실행 플로우는 트리거 없이 존재하며, 오직 호출(Call)에 의해서만 움직입니다.
이 유형의 진가는 서브 플로우(Subflow)로서의 역할에서 드러납니다. 예를 들어 기업마다 복잡한 ‘할인율 계산 로직’이 있다고 가정해 봅시다. 이 로직을 영업 기회 플로우에도 넣고, 주문 플로우에도 각각 넣는다면 나중에 로직이 바뀔 때 모든 곳을 수정해야 합니다. 대신 할인율 계산만 수행하는 자동 실행 플로우를 하나 만들고, 각 플로우에서 이를 호출하게 만들면 유지보수가 매우 단순해집니다. 이는 프로그래밍의 ‘함수(Function)’ 개념과 같습니다.
5. 플랫폼 이벤트 트리거 플로우 (Platform Event-Triggered Flow): 확장 가능한 아키텍처
현대적인 엔터프라이즈 환경에서는 시스템 간의 연동이 필수입니다. 플랫폼 이벤트 트리거는 외부 시스템이나 세일즈포스 내 다른 프로세스로부터 ‘이벤트 메시지’를 수신했을 때 실행됩니다.
가장 큰 특징은 비동기(Asynchronous) 처리입니다. 어떤 작업이 완료될 때까지 기다리는 것이 아니라, 메시지만 던져두고 다음 작업을 진행하는 방식입니다. 예를 들어 배송 시스템에서 “배송 완료” 신호를 쐈을 때, 세일즈포스가 이를 받아 고객에게 문자를 보내고 상태를 업데이트하는 로직을 짤 때 유용합니다. 이는 시스템 간의 결합도(Coupling)를 낮추어 한쪽의 장애가 다른 쪽으로 전이되는 것을 막아줍니다.
선택을 위한 최종 가이드: 상황별 매칭 리스트
어떤 트리거를 써야 할지 여전히 모호하다면, 아래의 실무 가이드를 참고해 보세요.
| 업무 요구사항 | 최적의 트리거 유형 | 추천 이유 |
| 현재 수정 중인 레코드의 필드 값만 바꾼다 | Record (Before-Save) | 가장 빠르고 리밋 소모가 적음 |
| 레코드가 생성될 때 관련 하위 레코드도 만든다 | Record (After-Save) | ID가 생성된 후 연관 관계 설정 가능 |
| 매주 월요일 아침 미결 업무 리포트를 보낸다 | Schedule-Triggered | 정기적인 배치 작업에 최적화 |
| 사용자의 선택에 따라 입력 항목이 달라져야 한다 | Screen Flow | 인터랙티브한 UI 제공 가능 |
| 여러 플로우에서 공통으로 쓰는 로직이 있다 | Autolaunched Flow | 코드의 재사용성 및 유지보수 용이 |
| 외부 시스템의 신호를 받아 즉시 처리해야 한다 | Platform Event | 비동기식 대용량 연동에 강점 |
실무자가 가장 자주 묻는 질문 3가지 (FAQ)
Q1. 하나의 오브젝트에 여러 레코드 트리거 플로우를 만들어도 될까요?
기술적으로는 가능하지만, 관리가 매우 어려워집니다. 세일즈포스는 ‘Trigger Order’ 기능을 통해 실행 순서를 지정할 수 있게 지원하므로, 로직이 너무 복잡하다면 목적별로 분리하되 반드시 순서를 명시해야 합니다. 하지만 가급적이면 하나의 오브젝트에는 하나의 After-Save 플로우(또는 Before-Save)를 유지하고, 내부에서 ‘Decision’ 요소를 통해 분기하는 것이 전체적인 로직 흐름을 한눈에 파악하기에 더 좋습니다.
Q2. 스케줄 플로우가 실행되지 않고 실패하는 주된 원인은 무엇인가요?
가장 흔한 원인은 ‘쿼리 제한’이나 ‘권한 문제’입니다. 스케줄 플로우는 특정 실행 유저의 권한으로 돌아가는데, 그 유저가 대상 레코드에 접근 권한이 없으면 무시될 수 있습니다. 또한, 실행 조건(Filter)을 지정하지 않아 대상 레코드가 너무 많을 경우 타임아웃이 발생할 수 있습니다. 항상 ‘Start’ 요소에서 조건 필터를 꼼꼼하게 설정하여 처리 대상을 최소화하는 습관이 필요합니다.
Q3. 플로우 내에서 루프(Loop)를 돌릴 때 주의할 점은 무엇인가요?
플로우의 가장 무서운 적은 ‘루프 안의 쿼리(DML/SOQL)’입니다. 루프 안에서 레코드를 하나씩 업데이트(Update)하거나 조회(Get Records)하면 즉시 거버너 리밋에 걸려 플로우가 중단됩니다. 반드시 루프 밖에서 변수(Collection Variable)에 데이터를 모은 뒤, 루프가 끝난 후에 한 번에 DML 작업을 수행하는 ‘벌크화(Bulkification)’를 적용해야 합니다. 이는 관리자와 개발자를 구분하는 가장 큰 실력 차이이기도 합니다.
도구의 이해가 시스템의 품격을 만든다
세일즈포스 플로우는 단순한 자동화 도구를 넘어선 강력한 로우코드 엔진입니다. 5가지 트리거의 특성을 명확히 이해하고 적재적소에 배치하는 능력은, 효율적인 시스템 운영뿐만 아니라 여러분의 전문성을 증명하는 지표가 될 것입니다. 오늘 정리해 드린 트리거별 특징과 주의사항을 바탕으로, 여러분의 조직에 가장 최적화된 자동화 아키텍처를 설계해 보시길 바랍니다.
이후에는 이러한 플로우를 테스트하고 배포하는 과정에서의 팁이나, 에러 발생 시 디버깅하는 노하우에 대해서도 다루어 보도록 하겠습니다. 여러분의 성공적인 자동화 여정을 응원합니다.