자동화를 만드는 것과 잘 설계된 자동화를 만드는 것은 다릅니다. 제대로 설계하지 않으면 유지보수가 어렵고, 에러가 잦고, 확장이 불가능합니다. 이 글에서는 프로페셔널한 워크플로우 자동화를 설계하는 방법을 다룹니다.
워크플로우 설계 원칙
단일 책임 원칙
하나의 시나리오는 하나의 목적만 가져야 합니다. 여러 가지를 한 시나리오에 넣으면 복잡해지고 디버깅이 어려워집니다.
나쁜 예: 하나의 시나리오에서 주문 처리 + 재고 관리 + 리포트 생성
좋은 예: 주문 처리 시나리오, 재고 관리 시나리오, 리포트 시나리오를 분리하고 필요시 Webhook으로 연결
모듈화
반복되는 로직은 별도 시나리오로 분리합니다. Make에서는 “Call another scenario” 기능으로 시나리오를 호출할 수 있습니다.
예: 알림 발송 로직을 별도 시나리오로 만들고, 여러 시나리오에서 호출
에러 핸들링
모든 시나리오에 에러 처리를 추가합니다. 에러 발생 시 알림을 받고, 적절히 대응할 수 있어야 합니다.
기본 에러 처리 패턴:
– Error Handler 추가
– 에러 정보를 Slack/이메일로 알림
– 필요시 재시도 로직 (Break + Resume)
로깅
중요한 단계에서 로그를 남깁니다. 문제 발생 시 원인을 파악하기 쉬워집니다.
로깅 방법:
– Google Sheets에 실행 기록 추가
– Data Store에 로그 저장
– 외부 로깅 서비스 사용
설계 프로세스
1단계: 요구사항 정의
자동화할 프로세스를 명확히 정의합니다.
질문:
– 이 자동화의 목적은?
– 어떤 트리거로 시작하는가?
– 어떤 데이터가 필요한가?
– 최종 결과물은 무엇인가?
– 예외 상황은 무엇인가?
2단계: 플로우차트 작성
자동화 흐름을 시각적으로 그립니다. 복잡한 조건 분기와 반복을 명확히 합니다.
포함할 내용:
– 시작점 (트리거)
– 각 단계 (액션)
– 조건 분기
– 반복
– 에러 처리
– 종료점
3단계: 데이터 흐름 설계
각 단계에서 어떤 데이터가 필요하고, 어떤 데이터가 생성되는지 정의합니다.
예시:
단계 1 (트리거): 주문 ID, 고객 정보, 상품 목록
단계 2 (재고 확인): 각 상품의 재고 수량
단계 3 (조건 분기): 재고 충분 여부
단계 4A (재고 충분): 출고 처리, 알림 발송
단계 4B (재고 부족): 대기 처리, 관리자 알림
4단계: 도구 선택
각 단계에 사용할 도구/모듈을 선택합니다.
고려 사항:
– 공식 모듈이 있는가
– API가 필요한가
– Rate Limit은 어떤가
– 비용은 어떤가
5단계: 구현
설계대로 Make에서 시나리오를 구축합니다. 한 번에 전체를 만들지 말고, 단계별로 테스트하면서 진행합니다.
6단계: 테스트
다양한 케이스로 테스트합니다.
테스트 케이스:
– 정상 케이스
– 에지 케이스 (빈 데이터, 특수 문자)
– 에러 케이스 (연결 실패, API 에러)
– 부하 테스트 (대량 데이터)
7단계: 문서화
자동화에 대한 문서를 작성합니다.
문서 내용:
– 자동화 목적과 범위
– 트리거 조건
– 각 단계 설명
– 에러 처리 방법
– 유지보수 가이드
– 담당자 정보
Make 시나리오 구조화
명명 규칙
시나리오 이름: [도메인] – [기능] – [버전]
예: Sales – Lead Scoring – v2
모듈 메모: 각 모듈에 역할 설명 추가
폴더 구조
시나리오를 폴더로 정리합니다:
– Production (운영)
– Development (개발/테스트)
– Archive (더 이상 사용 안 함)
버전 관리
중요한 변경 전에 시나리오를 복제해서 백업합니다. 시나리오 이름에 버전이나 날짜를 포함합니다.
고급 패턴
배치 처리
대량 데이터를 효율적으로 처리합니다.
패턴:
Schedule 트리거 → Data Store에서 미처리 건 조회 → Iterator → 처리 → 처리 완료 표시
한 번에 처리할 건수를 제한해서 타임아웃을 방지합니다.
재시도 로직
일시적 오류에 대한 자동 재시도를 구현합니다.
패턴:
– Error Handler에서 Break 사용
– 재시도 간격 설정 (예: 1분, 5분, 30분)
– 최대 재시도 횟수 설정
– 최종 실패 시 에스컬레이션
비동기 처리
오래 걸리는 작업을 비동기로 처리합니다.
패턴:
시나리오 1: 요청 접수 → 큐(Data Store)에 추가 → 즉시 응답
시나리오 2: 큐에서 가져오기 → 처리 → 결과 알림
조건부 실행
특정 조건에서만 시나리오가 실행되도록 합니다.
방법 1: 트리거 직후 Filter로 조건 체크
방법 2: Router로 조건별 분기
방법 3: Data Store에서 설정값 읽어서 판단
성능 최적화
Operations 절약
– 불필요한 모듈 제거
– 배치 처리로 API 호출 줄이기
– Filter를 앞쪽에 배치해서 불필요한 처리 방지
실행 시간 단축
– 병렬 처리 가능한 부분은 병렬로
– 외부 API 호출 최소화
– 데이터 크기 줄이기
유지보수
모니터링
– Make 대시보드에서 실행 상태 확인
– 에러 알림 설정
– 정기적인 리뷰 (월 1회)
업데이트
– 외부 서비스 변경 시 시나리오 업데이트
– 성능 개선 기회 탐색
– 새 기능 추가 시 기존 시나리오 영향 검토
시작하기
다음 자동화를 만들 때 이 글의 원칙을 적용해보세요. 처음에는 시간이 더 걸리는 것 같지만, 장기적으로 유지보수 시간을 크게 줄여줍니다.
좋은 설계는 좋은 자동화의 기반입니다. 급하게 만들지 말고, 제대로 설계하고 만드세요.