December 18, 2019

루틴을 고민하다. (2) - 시행착오편

루틴을 보다 효과적으로 만들기 위해서 웹&앱 서비스를 이용한 자동화를 고민했고, 그 과정에서 겪은 시행착오를 적었다. 생각보다 시간이 지체되기는 했지만 나름 재밌는 과정이었다.

루틴을 고민하다. (2) - 시행착오편
루틴을 고민하다.
아이의 육아에 우선 순위를 두면서, 아이가 없었을 때는 쉽게 했던 일들이 미뤄지게 되는 경험이 반복되었다. 조금씩 정체됨과 무너짐을 느끼게 되었다. 그래서 이를 바꾸고자 루틴을 고민하게 되었다.

위의 글과 연결된 글을 쓴다.

루틴을 효과적으로 만들어나가기 위해 내가 할 수 있는게 무엇일까를 고민했다. 우선, 나는 새로운 시도를 해보는 것을 좋아하는 편이다. 남들은 어떤 방법을 사용할까 궁금하여 구글에서 검색해봤다. 그러던 중 아래와 같은 링크를 발견하였다.

해당 기사에는 Google Calendar, Asana, Wunderlist, Relish, Labor of love 총 5개의 서비스가 등장한다.

기사를 읽으면서, 웹 혹은 모바일 서비스로 관리하면 참 편하겠다는 생각이 가장 먼저 들었다. 그래서 기사에서 등장한 익숙한 서비스들부터 고민했다. Google calendar는 익숙한 서비스였고, Asana는 익히 알고 있던 서비스였다. 아무렇지않게 Asana에서 To-do list(편의상 Task라고 부르겠다.)를 만들면 Google calendar에 자동으로 반영되면 좋겠다는 생각이 들었다.

Asana에서 Task 개설 ->
Google calendar에서 자동으로 해당 일정(Task의 내용이 적힌) 개설

기대와 어긋나다.

충분히 가능하다고 생각했고, 먼저 Asana에 문의했다. 그들의 회신을 살펴보니, 서비스 정책상 24시간이 경과되면 Google calendar에 업데이트된다고 적혀있었다. 만약 Asana에서 Task를 수정시 24시간이 지나야만 관련 수정사항이 Google calendar에 반영된다는 이야기였다. 내가 고민하던 부분과는 차이가 있었다. Task의 개설은 그렇다쳐도, 내가 기대했던 바는 Task 수정시 실시간 업데이트는 아니더라도 짧게는 5분, 길게는 30분 이내에 Google calendar에 업데이트되는 것이었다.[1]

내 기대사항을 어떻게 반영시킬 수 있을까 고민 끝에 Zapier을 활용하면 가능할꺼 같다는 생각이 들었다. Zapier는 Zap이라는 개념으로 여러 서비스들을 연동하여 하나의 자동화 솔루션을 만들어주는 서비스이다.

그래서 Zapier를 이용하여 익숙한 두 서비스를 연동하였다. 내가 Zapier를 통해 기대했던 바는 아래와 같았다.

  • 새로운 Task를 Asana에서 만들시 Google calendar에 새로운 일정이 자동으로 개설될 것
  • 기존의 Task를 Asana에서 수정할 시 기존의 Google calendar 일정이 수정된 내용으로 자동 업데이트될 것

그래서 만든 Zap은 다음과 같았다.

  1. New task in project of Asana -> Create detailed event in Google calendar
  2. Updated task in project of Asana -> Update event in google calendar

전자는 Trigger, 후자는 Action이다. Zap은 크게 Trigger와 Action으로 구성된다. 결과는 만족스럽지 않았다. Trigger 부분에서 에러가 일어났는데 "Missing value"라는 메시지였다. 반복적으로 일어나는 에러라서 Zaier에서 문의하니 그들의 제안은 다음과 같았다.

  1. New task in project -> Delay by Zapier -> Find task in project -> Create detailed event in google calendar
  2. Update task in project -> Delay by Zapier -> Find task in proejct -> Update event in google calendar

Delay by Zapier, Find task in project라는 부분을 나에게 제안했는데 기존 2단계에서 4단계로 늘어난 것이다. Delay는 Zapier에서 제공하는 App이고 Find task in project 부분은 Search에 해당한다. Zap은 Trigger, Search, Action를 조합하여 만든다.

Search 부분이 추가된 이유는 Zapier 측의 설명에 따르면 Asana의 데이터가 Zap을 통해 전송되는 과정에서 데이터가 누락되는 현상들이 발생했고, Zapier 유저들이 같은 문제로 꽤 많이 문의했었단다. Zapier측의 설명으로는 자주 발생하는 문제라 유저들의 불만 사항들을 모아 Asana측에 전달하여 적극적인 해결을 요청하고 있지만 Asana측에서 소극적으로 대응하고 있다고 한다. 그래서 자신들의 입장에서 취한 조치가 Delay와 Search 추가하여 데이터를 한번 더 정확하게 찾을 수 있도록 만든 것이라고 한다. 실제로는 "Missing value"라는 에러가 일어나지 않으면 불필요한 단계인데 추가한 것이다.

Zapier에서 제안한 Zap으로 변경하여 쓰는 과정에서 다소 황당한 문제점을 발견하였다. Zapier는 Task라는 개념을 통해 자동화 처리 횟수를 월 단위로 제공하는데, 이것이 순식간에 월 한계치에 다다른 것이다.[2]

이유를 살펴보니 Asana에서 기존의 Task를 수정할 경우, 변경된 수정사항을 하나로 보는 것이 아니었다. 예를 들어, 기존 Task의 제목, 날짜 그리고 상세 내용 등 3개의 항목을 수정할 경우, 내가 제작한 2번째 Zap이 갑자기 나의 기대와는 달리, 3번 연달아 작동하는 것이었다.

분명 나의 기대는 Task의 항목 전부를 변경했더라도 하나의 Task를 수정했기 때문에, 2번째 Zap은 한 번만 작동해야한다. 이상하다는 생각이 들어 Zapier에 문의했다. Zapier로 받은 답변에는 Asana를 사용하는 유저들이 자주 문의하는 내용이라는 언급이 가장 먼저 적혀있었다. 자신들도 해당 문제에 충분히 공감하고 있으나, 자신들이 실제 취할 수 있는 조치는 없다고 하였다. 지속적으로 Asana에 요청했지만, Asana에서는 마찬가지로 소극적인 자세를 취하고 있단다.

뭐 그렇다고 하니 내가 할 수 있는 부분은 없었다. 내가 계속 이대로 쓰고자 한다면 불필요한, 의미없는 Zap의 작동을 감수하는 해야하는 것이었다. Asana의 내 계정에서 기존 Task의 제목, 날짜, 시간, 장소, 상세 내용 등 5개의 항목들을 변경했다면[3], 변경된 항목 모두에 Updated task라는 Trigger가 작동하니 Zapier에서는 내 기대와는 달리, 4번의 Trigger가 추가적으로 작동하는 것이다. 그리고 이 사항들은 만들어진 Zap에 의하여 Google calendar에 전달된다.

예를 들어, Asana의 내 계정에 5개의 Task들이 있다. 나는 Task들의 내용을 전부 수정하였다. 각 Task마다 5개의 항목(제목, 날짜, 시간, 장소, 상세내용)이 있으니 모두 25개의 항목들을 변경한 것이다. 내가 만든 2번째 Zap(추천받아 변경한)에서 Updated Task라는 Trigger는 모두 25번의 작동이 일어난다. 내 기대에서는 실제 5개의 Task들을 수정했기 때문에 5번의 작동만 일어나면 되는데 그렇지 않다. 20번이 추가적으로 원치않게 일어나는 것이다. 그리고 20번의 Trigger는 2번째 Zap에서 후속 단계인 20번의 Search와 20번의 Action을 일으킨다.

정리하면, 내 기대에서는 Asana의 내 계정에서 5개의 Task들을 변경한다면, Zapier에서 내 기대에서는 5번의 Trigger, 5번의 Delay, 5번의 Search, 5번의 Action, 총 20개의 Task가 작동해야한다. 안타깝게도 현재 상황에서는 동일한 시나리오로 25번의 Trigger와 25번의 Delay, 25번의 Search, 25번의 Action, 총 100개의 Task가 작동한다. 80개의 Task가 의미없이 작동하는 것이다.

이 부분에 대해서 Zapier 측에 다시 문의하였다. 받은 답변은 아래와 같았다.

  1. Update task in project -> Delay by zapier -> Find task in proejct -> Filter by zapier -> Update event in google calendar

Filter by zapier라고 불리는 기능의 추가를 통해 제약 조건을 만들어 Action을 멈추는 것이다. 좋기는 하지만, Delay와 Find task 단계까지 여전히 작동했다. 의미없게 작동하는 Task가 계속 발생하는 것이다. 나는 의미하게 작동하는 Task들을 멈추고 싶었다.

Zapier측에 Trigger인 Update task 이후에 Filter를 적용하면 어떠냐고 의견을 물으니 어차피 "missing value"라는 에러가 빈번하게 일어나기에 무의미할거라는 응답과 함께, Search 부분 이후에 Filter를 적용하는게 더 효과적이라는 의견을 받았다.

이후 조치

손쉬운 자동화를 만들기 위해서 To-do list(Task)를 6가지의 섹션으로 나눴었다. 크게 To do, Done으로 2개의 섹션으로 나눴고 이를 다시 Morning, Afternoon, Dinner로 나눴다. 즉, To do - Morning, To do - Afternoon 등등 총 6개의 섹션으로 나눴다. 거기에 Completed을 선택할 시에 자동으로 Done 섹션으로 이동하며, 시간에 따라 분류하게 Zap을 개선하여 적용하였다. 만들고 개선하는 과정에서 위에서 공유한 문제점을 발견했고, 그로 인해 Task들을 꽤 소비했다. 다행히 우리가 원래 사용하고 있던 Task의 최대치를 소비하기 전에 알게 되어, 신속하게 조치를 취할 수 있었다. 다행히 추가 비용을 내지 않게 되었다.

그리고 현재는 Asana 대신, 우리에게 익숙한 또 다른 서비스인 Trello를 이용하여 원하는 자동화 기능들을 구현해 잘 사용하고 있다. 아침에 일어나, 일정은 Google calendar에서 발송하는 알림으로 확인하고, 일정의 개설 및 변경, 처리는 Trello 내부에서 모두 처리하고 있다. 자동으로 Google calendar에서는 개설 및 업데이트가 이뤄지고 있으며, 백업의 중요성을 느껴 Google sheet에도 데이터들을 기록하고 있다. 반복적으로 일어라는 일상의 경우(매주 반복적으로 하는 활동), Trello에서 반복 일정을 개설하면, Google calendar에 한 달 동안의 반복 일정이 생기고, 해당 일정이 다가올 때쯤, 자동으로 Trello에 Task가 만들어진다. 그리고 Completed 라벨이 있어 Task 완료시 표시하는 재미가 쏠쏠하다.

이 과정들도 조만간 공유할 계획이다.


  1. Asana가 기본적으로 Google calerdar와의 연동(Integration)을 제공한다. 다만, 그들의 정책상 24시간이 경과하면 일률적으로 업데이트를 적용한다. 정말 아쉬운 부분이다. ↩︎

  2. 하나의 Zap을 만들었다면 2개의 Task(Trigger, Action)가 기본적으로 소비된다. Search 기능이 추가되어 Trigger, Search, Action 이렇게 구성이 되어있다면 3개의 Task가 소비된다. 실질적으로 Search는 크게 Action 단계에 포함되며 3가지의 단계를 어떻게 조합하며 만드느냐에 따라 단계는 늘어난다. 늘어난 단계 수만큼 Zap이 실행되었을 때 실행된 단계 수만큼 Task의 개수를 계산한다. Zapier에서 제공하는 Filter라는 App을 Zap에 더하여 여러 제약조건들을 통해 Zap의 실행을 효과적으로 제어할 수 있다. 보통 Trigger 이후 Filter를 적용하는데 Filter의 조건들로 인해 Zap의 동작이 멈추었을 경우, Trigger의 실행은 Task 계산에서 제외한다.(사용해 본 경험상 그렇다. Filter의 사용을 적극 추천한다.) 무의미한 Task의 실행을 제어하기 위해서는 Filter는 Trigger 단계 이후에 적용할 것을 추천한다. Zapier는 무료로 이용할 시, Task의 갯수를 100 Tasks/month로 제한하고 있다. 우리의 경우 우리가 운영하고 있는 하이브아레나에서 이뤄지는 거의 모든 일들을 자동으로 처리하고 있기 때문에, 현재 유료로 쓰고 있다. 잘 사용하면 제 값하는, 그 이상의 서비스다. ↩︎

  3. Asana에는 날짜, 시간, 장소 등의 항목이 없다. Due date라는 개념이 있으며 제목은 Title, 상세 내용은 Description으로 있다. 내가 말하늩 날짜, 시간, 장소의 개념은 Google calendar의 항목에 맞춰 Asana의 Custom field라는 기능을 활용하였다. Custom field 기능은 유료 멤버십의 기능인데 당시 나는 Trial 버전을 이용하고 있어서 실제 비용을 지불하지 않았다. ↩︎