자동화의 연산 사용량 줄이기
자동화의 비용은 조건을 얼마나 자주 평가하는지, 효과를 몇 건으로 나누는지, 액션과 함수가 어떤 작업을 하는지에 따라 달라집니다. 가능한 경우 객체를 묶어서 처리하도록 세 단계를 함께 설계합니다.
자동화가 필요한지 판단
데이터 변경에 자동 반응하거나 사람이 시작하지 않는 정기 처리가 필요하면 Automate를 사용합니다. 사용자가 선택한 객체의 속성을 정적 값이나 계산 값으로 한 번 바꾸는 작업이면 Workshop이나 Object Explorer에서 액션을 직접 실행하는 방식이 더 적합할 수 있습니다.
사용량의 단위와 귀속은 Resource Management 사용량을 참고합니다.
조건 평가 횟수
하루 100회 이상처럼 변경이 잦은 객체 유형에는 시간 기반 평가로 횟수를 제한하는 방식을 검토합니다. 변경이 드물면 변경 조건만으로 충분할 수 있습니다.
다만 스케줄을 지원하는 조건에만 일정을 결합할 수 있습니다. Objects modified는 실시간 전용입니다. 모든 개별 수정을 처리해야 하는 요구를 스케줄로 바꾸면 같은 동작을 유지한다고 볼 수 없으므로, 조건별 지원 범위와 업무 의미를 먼저 확인합니다. 스케줄을 지원하는 객체 추가, 제거 또는 전체 실행 조건으로 요구를 표현할 수 있을 때 전환합니다.
24시간인 하루와 서로 동시에 일어나지 않는 변경을 가정한 예는 다음과 같습니다.
- 객체 1,000개가 각각 하루 100번 갱신되면 최대 100,000번 평가할 수 있습니다.
- 5분 간격 평가라면 하루 최대 횟수는
1,440 / 5 = 288회입니다.
이는 평가 횟수를 약 340배 규모로 줄이는 산술 예입니다. 지연 허용 범위와 중간 변경을 모두 처리해야 하는지를 함께 판단해야 합니다.
실행 묶음
업무가 허용하면 기본 Single execution으로 조건에 해당한 객체 집합을 한 번 전달합니다. 객체마다 실행하면 호출과 준비 비용이 반복됩니다. 실패를 분리해야 하거나 객체별 구성이 다른 경우에는 객체별 또는 배치 실행을 사용합니다.
예를 들어 객체별 알림이 필요해도 객체마다 액션을 호출하는 대신, 한 액션의 함수가 여러 알림을 만들도록 구성하는 방법이 있습니다. 입력 조건이 한 객체만 제공한다면 뒤에서 실행 모드만 바꾸어 큰 집합을 만들 수는 없습니다. 조건, 입력 형태와 함수가 함께 묶음 처리를 지원해야 합니다.
액션과 함수 입력
| 입력 | 사용 방식 |
|---|---|
| 객체 집합 | 질의 가능한 집합을 전달하므로 큰 대상 집합을 표현하기에 유리합니다. |
| 객체 배열 | 중간 크기 배치에 사용할 수 있습니다. 액션 매개변수의 Object reference에서 allow multiple values를 켭니다. |
| 단일 객체 | 업무가 객체 하나 단위의 처리를 요구할 때 사용합니다. |
객체 집합을 효율적으로 전달할 수 있다는 사실이 효과의 객체 수나 실행 시간 한도를 없애지는 않습니다. 배치와 자동화 한도를 함께 적용합니다.
함수도 집합이나 배열을 입력으로 받고 묶음 계산을 수행해야 합니다. 가능하면 서버 집계를 사용하여 모든 객체를 메모리에 적재하는 일을 피합니다. 세부 구현은 함수 성능을 따릅니다.
관찰할 패턴
짧은 시간에 반복 실행되는 자동화, 빠르게 갱신되는 객체, 서로를 계속 발동시키는 자동화와 객체별 질의를 반복하는 함수를 살핍니다.
Automate의 History에서 실행 패턴을 보고, Overview의 Actions에서 Autopilot 또는 Workflow Lineage를 열어 다른 자동화와의 연결을 확인할 수 있습니다. 객체 편집으로 다음 자동화의 조건이 충족되는 연쇄는 부모와 자식 한 단계만 지원하는 Automation dependency 설정과 다릅니다.
문제가 나타나면 성능 진단의 순서에 따라 원인을 좁힙니다.