팀차이

2023년 12월 04일 월요일

Today I Learned

날짜

2023년 12월 4일 월요일

내용

지난 주 테스트 코드를 완료한 이후 새로운 Task에 진입했다.

새로운 티켓

지난 번 업무 시스템 관련해서 이야기를 들었지만 아직은 조금 낯설긴 하다. 물론 크게 복잡할 것 없는데 내가 겁먹은 걸 수도 있고… 고객이 Shopify에서 shop 이름을 변경했을 때 슈퍼관리자 페이지에서 어떻게 노출될 것인가가 주제였다.

우선 슈퍼관리자가 처음 접하는 개념이라, 무엇인지 부터 파악했다. 우리 서비스를 이용하는 모든 고객들에 대한 정보나 현황을 파악하고 관리할 수 있는 종합적인 페이지인데, 기존 계정이 보내주는 링크를 통해서만 가입할 수 있었다. product 서버에서는 가능했지만, 로컬에서는 어떻게 해야할지 고민했다. 처음에는 DB에 직접 집어넣으려고 했으나, command를 이용해보라는 도움을 받았다. DB를 직접 건드리는 게 좋을리가 없으니 당연히…

command는 단순히 말하면 프로젝트 내 특정 함수나 로직을 실행하도록 하는 스크립트인데, 유효한 슈퍼관리자 생성 링크를 보내도록 커맨드를 작성하면 로컬에서도 슈퍼관리자 계정을 만들 수 있었다. 기존에 있는 command 들을 참고하여서, 해당 로직을 똑같이 만들었다.

마지막 __name__ 코드는, 이 파이썬 파일이 다른 곳에서 import 되지 않고 직접 실행할 때만 작동되도록 해주는 코드라고 한다. __name__은 실행되는 모듈의 이름으로 설정되는데, 이 command 파이썬 파일이 직접 실행될때만 main으로 설정된다는 규칙을 이용한 코드다.

상황 파악

이제 본격적으로 상황을 이해하고자 하였다. 티켓에 나온 설명은 다음과 같다.

알파리뷰에 저장된 스토어 이름과 쇼피파이에 저장된 스토어 이름이 상이한 경우가 있음. 이 경우 슈퍼관리자를 통해 스토어를 검색하는 데에 어려움이 있어 쇼피파이에 저장된 스토어 이름을 기준으로 슈퍼관리자 내에서 조회가 가능하도록 하는 기능 수정이 필요함.

난 우리 서비스에 대한 이해도가 많이 부족하다고 판단해서 하나씩 차근차근 접근했다.

  1. 알파리뷰에 저장된 스토어 이름과 쇼피파이에 저장된 스토어 이름

    이름이 두개라고..? 애초에 이름을 어떻게 바꾸는지 확인했다. 우리 서비스에 가입한 샵은 shopify 관리 페이지와 알파리뷰 관리 페이지 라는 2개의 관리 페이지가 존재하게 된다. 각각은 setting에서 샵의 이름을 바꿀 수 있었다.

  2. 슈퍼관리자를 통해 스토어를 검색하는 데에 어려움이 있어

    슈퍼관리자 페이지에선 고객사 목록이 존재하고 검색 기능도 있다. 그 기준에는 ‘쇼핑몰명’ 이 있는데 어떤 쇼핑몰명이 검색되는걸까? 코드를 확인해보니 shop 테이블의 shop_name을 확인한다.

  3. 쇼피파이에 저장된 스토어 이름을 기준으로 슈퍼관리자 내에서 조회가 가능하도록 하는 기능 수정이 필요

    사실, 이 부분이 잘 이해가 되지 않았다. 결론부터 말하면 위 과정에서 충분한 고민과 구조 파악이 부족했기 때문이다. 이때, 샵의 이름은 데이터베이스 내에 1곳에 저장된다는 오해를 전제로 추론을 진행했기 때문이다.

따라서 나는 ‘쇼피파이의 정보가 바뀌면 우리 알파리뷰 서비스에서도 알고 반영해야 한다’ 는 결론을 내렸다. 이 방법을 어떻게 할지 고민하던 와중에 도움을 받아 웹훅을 알게 되었다.

웹훅

웹훅은 다른 서비스나 시스템에서 발생한 이벤트를 감지해주는 기능이다. 나의 경우로 적용해보면 숍의 정보(정확히는 숍의 이름) 변경이라는 이벤트가 발생하면 알파리뷰가 이를 알 수 있도록 하는 것이다. 감지 이후의 로직은 작성하기 나름이다.

우리 서비스에서 이미 웹훅을 사용하고 있었고, 이를 만들거나 조회하는 함수도 작성되어 있었다. 특히 엔지니어링 디렉토리에 작성되어 있는 문서 덕분에 수월하게 진행할 수 있었다.

다만 겪은 약간의 어려움은 있었는데, id가 1이 아닌 기존 샵들의 웹훅을 조회하면 API 키나 access token이 유효하지 않다는 오류가 발생했다. 많이 난처했는데, 도움을 받아 테스트 서버 DB의 access token과 로컬 DB의 access token이 다르다는 것을 발견했고 이를 올바른 값으로 변경하였더니 잘 작동하였다.

회고

웹훅을 몰랐다면 구현이 쉽지 않았거나, 성공했어도 비효율적이 였을것이다. 웹훅이 존재한다는 것도 모르는 수준이었기 때문에 혼자 알아채기도 쉽지 않았을 것이다. 기깔난 타이밍에 기가막힌 도움을 받았다. 롤에서 못 받는 팀운을 여기서 다 받는다. 오히려 좋아.