모든 것을 연결했더니 모든 것이 위험해졌다
1. 회사의 도서구매제도를 효율적으로 관리하기 위해 '구매신청/구매목록 시트'를 만들었다.
2. 먼저 자동화툴을 이용해서 슬랙과 구글시트를 연결했고, 구글 시트에서 교보문고 정보를 긁어와서 시트를 완성했다.
3. 시트는 (관리자용)과 (열람용)으로 구분했지만, 모든 정보가 연결되어 자동 업데이트되도록 했다.
.
.
.
그렇게 애초에 생각했던 그림을 완성하고, 나름 흡족해하던 어느 날. . .
일부 데이터가 제대로 보이지 않는 건 importxml 문제였다. 동시에 가져오는 데이터가 늘어나면서 로딩 시간이 늘어나거나 로딩 자체가 되지 않는 경우가 발생한 것이다.
그렇지만 더 큰 문제는 모든 데이터가 꼬리에 꼬리를 물고 이어져 있어서, 특정 셀의 문제가 시트 전체에 영향을 준다는 것이었다. 어느 지점에선가 데이터를 분리하고, 백업했다면... (너무 기본적인 내용인데, 애초에 '에러'를 고려하지 않아서...)
문제 해결은 굉장히 간단했다. 모조리 연결되어 흘러가던 데이터를 적절한 지점에서 끊고, 일정한 기간마다 백업하는 것.
1. 먼저 새로운 구글 시트(백업 시트이자 새로운 관리자용 시트)를 만들고, 기존 시트에서 슬랙과 연결된 부분을 제외한 모든 데이터를 이관.
2. 기존 구글 시트는 슬랙 메시지를 받고, 임시 저장하는 시트로만 활용.
3. 두 시트를 연결하여, 임시 저장 시트에 새로 추가된 데이터를 주기적으로 백업 시트에 입력.
importxml 기능은 임시 시트에서 심어서, 기존과 같이 데이터가 제대로 보이지 않는 문제를 방지했고, 두 시트를 연결하는 것은 슬랙과 구글 시트를 연결할 때와 마찬가지로 integromat을 사용했다.
신규 데이터가 실시간으로 반영되는 것은 애초에 필요한 기능이 아니었고, 관리자가 주기적으로 새로운 신청 건을 처리하는 것을 고려하여 하루에 한 번씩 백업을 진행하도록 세팅했다.
현재는 매일 아침 8시 30분에 한 번씩 임시 시트를 확인Watch Rows하고, 새로운 데이터를 백업 시트에 입력Add a Row한다. (integromat 사용량도 줄일 겸...)
사실 문제 상황을 경험하지 않았거나, 모르고 지나갔을 팀원들도 있었을텐데... (굳이 내용을 아래와 같이 요약해서 공유해봤다.)
소소한 에피소드였지만 많은 생각을 할 수 있었던 좋은 기회였다. (예측불허.. 재밌당..)
2020.7.22.
작은 일이지만 전체 그림을 먼저 짜놓아다면 좋았겠구나...하는 마음에 플로우차트라는 것을 그려보았다.