공식적으로 불가능을 확인

2024년 2월 15일 목요일

# Today I Learned

## 날짜

2024년 2월 15일 목요일

## 내용

### 앱을 삭제한 스토어의 데이터에 접근하는 법

은 없었다. Shopify partner에게 답변이 왔는데, webhook 시그널의 전달과 access token 무효화는 비동기적으로 발생해서 접근할 수 없다고 한다. 당장은 방법이 없어, 우리 서버 내 데이터만 삭제하는 걸로 Task를 종료했다.

아름다운 사람은 머문 자리도 아름답다는 누군가의 말처럼, 우리가 삭제된 이후에 우리의 흔적을 남기지 않도록 하고 싶은데 마땅한 방법이 떠오르지 않는다. 앱을 삭제하는건 Shopify 쪽에서 발생하는 일이라 우리가 제어할 수 있는 방법이 없다. 미래를 볼 순 없는 노릇이니 삭제할 만한 shop을 고를 수도 없고.. 삭제 이후에는 재설치하지 않는 한 access_token을 얻을 수 없는데 어찌해야 할까.. 짱구좀 굴려봐야겠다.

### 이메일 HTML

다시 이메일을 보내기 위한 Task에 돌입했다. 이전에는 일주일 간 리뷰의 수에 관련된 메일이었다면, 이번에는 가입한 스토어 중 app embed 설정을 활성화 하지 않은 고객에게 3일 후 메일을 보내야 한다.

1
우리 서비스는 messaging_log라는 테이블에 등록된 메일을 cron이 짧은 주기로 탐색하여 보내는데, 리뷰와 관련된 메일을 위한 크론이다. 이미 자주 작동되고 있는 크론이라 굳이 새로운 ECS Task를 추가하지 않고 이용하면 좋겠다고 생각했다. 하지만 우리 서비스에서 너무 핵심적인 동작이기도 하고, 너무 많은 설정들이 이미 갖춰져 있는 상태라 건드리는 위험을 감수하지 않기로 했다.

그 외의 다른 Task는 건드릴 수 없었는데, 메일 발송을 store 현지 기준 오전 8시 30분에 보내야하기 떄문이다. UTC 기준이 아니기 떄문에, 1시간 간격으로 끊임없이 크론이 작동해야 한다. 지구에서 반드시 한 곳은 오전 8시 30분쯤이기 떄문에.. 따라서 그냥 자체적인 Task를 예약하기로 했다.

핵심적인 로직은

  1. 스토어 중 최근 3일 내에 생성된 곳을 탐색
  2. 코어스크립트가 활성화 되어있는지 shopify API를 통해 확인
  3. 비활성화 상태면 메일 발송

이다. 코어스크립트 옵션 상태를 확인하는 함수가 이미 존재했는데, router에 decorator 함수로 되어있었다. cronjob에 쓸 함수를 router 디렉토리에 정의된 것을 import 해오는 건 아무리 생각해도 바람직하지 않은 모양새다. 그렇다고 똑같은 함수를 두 곳에 정의할 순 없다. 마침 클린 아키텍처 스터디를 시작하기도 했고…

shared 디렉토리에 함수를 옮겨서 정의하고, 두 곳에서 import 해서 사용하도록 바꾸었다. 온보딩때 모든 파일에 똑같은 함수를 복붙했던 기억이 났는데, 나도 이제 사람 근처는 됐나보다.

이제 알맞은 형식으로 이메일 CSS만 만들면 된다. 이제는 더이상 물러날 곳이 없다. 도대체 왜 이메일엔 div 형식이 안먹힐까?

## 회고

ChatGPT는 HTML을 왜이렇게 못하냐