의료기기를 만드는 회사는 ISO 13485(의료기기 품질경영 시스템 국제표준) 인증을 받아야 한다. 의료기기 품질 관리를 위해서 각종 절차서와 기록이 중요한데, 노을에서는 구글 문서를 사용해서 이 절차서와 기록을 관리한다. 이 과정을 관리하는 부서인 QMS 부서에서 어느 날 문의가 왔다.
구글로 관리하는 각종 기록 문서의 일련번호를 문서대장을 참고해서 일련번호를 따고 기록을 해야 하는데 이 과정이 번거로워서 잘 안돼요.. 혹시 좋은 방법이 없을까요?
문서 종류별로 관리 대장이 다르고, 문서 종류가 꽤 많다 보니 그걸 구분해서 찾아서 수동으로 기록하는 것도 만만치 않겠다는 생각이 들었다. 그룹웨어 + 전자결재 같은 걸 사용할 수도 있겠지만 절차서와 문서 작성 내용이 양식마다 천차만별이어서 전자결재 양식으로 만드는 것도 보통일은 아닐 듯.. 그리고, 이미 구글 문서로 만들어서 사용한 터라.
처음에는 스마트시트에 일련번호를 따는 기능이 있으니 그런 걸 사용해보면 되지 않을까? 하는 가벼운 마음으로 고민해보겠다고 했다. 그러고 나서 보니.. 요건이 조금 복잡했다 ㅎㅎ 급 후회.
문서의 일련번호는 각 문서 종류별 구분 코드와 연월 정보가 있어야 하고, 월이 바뀌면 일련번호가 reset 되어야 했다. 처음에는 일련번호를 어떻게든 생성해서 알려주는 것으로 할까 싶어서 1차 버전을 만들어서 전달했다가 까였다. 이유는 2분 내에 동시에 요청이 들어오면 중복번호가 생기는 이슈, 그리고 단순히 일련번호만 알려주는 것만으로는 다시 문서를 생성해야 하는 번거로움이 있었기 때문.
그래서, 오기가 생겨서 다시 각 잡고 아래의 4가지를 해결하는 것으로 방향을 잡았다.
1. 일련번호를 기준에 맞게 중복 없이 생성한다.
2. 현재 수동으로 생성중인 구글 문서를 자동으로 생성한다.
3. 1번에서 생성한 일련번호를 2번의 구글 문서 제목 및 문서 내 문서번호 위치에 적용한다.
4. 만들어진 시스템을 QMS 부서에서 유지 관리할 수 있도록 한다.
개발자라면 어렵지 않게 일련번호 생성기를 만들 수 있겠지만, 개발자가 아니다 보니 내가 알고 있는 다양한 서비스를 사용해서 노코드로 만들어보기로 했다.
스마트시트에서 일련번호를 부여하는 기능은 자동으로 reset 되는 옵션이 없기 때문에 처음부터 고려하지 않았다. 예전에 사용했었던 Storage by Zapier도 사용하려고 보니 각 문서별로 일련번호를 만들어 사용하기에는 적합해 보이지 않았다. 어떤 방법이 있을지 고민하며 내가 활용할 수 있는 무기를 둘러보다가 작년에 도입한 Okta의 자동화 기능인 Workflows에서 간단히 데이터를 관리할 수 있는 table이라는 기능이 눈에 띄었다. 이 table을 둘러보다가 숫자를 중복 없이 생성해주는 Counter field가 있는 것을 보았다. 이걸 사용하면 되겠다!! 순간 우영우 변호사가 아이디어가 떠올랐을 때 고래가 등장하는 장면같이 Counter field를 보고서 한줄기 빛이 보이는 것 같았다.
매월 1일에 Okta Workflows를 사용해서 관리하려는 각 문서의 구분 값을 문서번호-YY-MM로 table에 생성하고, Counter field를 사용하여 문서별 일련번호로 사용하면 중복 없이 문서의 일련번호를 만들 수 있었다. 사용자는 문서별 구분 번호를 알기 어렵기 때문에 문서 종류를 선택 후 신청하기 위한 양식을 스마트시트로 만들어 제공했다.
생성된 문서 일련번호로 구글 문서를 생성하기 위해서는 Okta Workflow나 Zapier를 사용할 수 있다. 그런데 이번 작업에는 Okta Workflow 대신 Zapier를 사용했다. Zapier를 사용하게 된 이유는 Zapier Action에 Create Document from Template이 있었기 때문. 이 Zapier Action을 사용하면 Template으로 등록해놓은 문서 양식을 통해 문서 생성 시 문서의 제목뿐 아니라 문서 내에 특정 변수를 넣어서 값이 미리 입력된 상태로 문서를 생성할 수 있다. 문서의 일련번호를 문서 제목만이 아닌 문서 내에도 입력할 수 있는 것.
사용하는 양식 중에는 구글 시트로 되어있는 양식도 있는데 구글 시트는 템플릿 기능을 제공하지는 않았다. 그래서 구글 시트의 경우 문서의 제목은 동일하게 생성하고, 문서 내 일련번호가 들어가야 할 위치를 미리 지정해서 구글 시트의 특정 Cell에 문서 번호가 입력되도록 처리했다.
이렇게 생성된 문서는 문서의 주소(url)를 스마트시트에 기록했고, 스마트시트의 알림 기능을 통해 문서 생성 요청자에게 아래와 같이 알림을 보내주었다. 문서 생성 되었으니 필요한 내용을 작성하도록.
스마트시트로 양식 접수를 받고 생성된 문서의 url 까지 기록하니 문서 리스트를 별도의 대장으로 관리하지 않아도 되었다.
이렇게 만들어진 일련번호 생성기의 전체 flow는 다음과 같다.
이 작업을 위해 Google Sheet, Okta workflow, Smartsheet, Zapier를 사용했다. 사실 이 flow가 최선인지 확신은 없지만 아직까진 별문제 없이 잘 사용하고 있다. 처음 요청했던 QMS 부서도 매우 만족했다. :)
이번 작업을 하면서 느꼈던 것은 생각보다 노코드 플랫폼들을 조합해서 다양한 프로세스를 만들 수 있다는 것이었다. 예전에는 개발자들만이 이런 일들을 할 수 있었지만 이제는 시대가 바뀌어서 코딩을 하지 않고도 안정적으로 이런 자동화 프로세스가 동작하도록 만들 수 있는 시대가 되었다.