새 앱의 시작 분기 고려하기

2024년 5월 16일 목요일

Today I Learned

날짜

2024년 5월 16일 목요일

내용

서비스 시작 분기

앱이 2개로 분리되면서 앱을 설치할 때의 분기가 꽤나 복잡해졌다.

  1. 해당 쇼피파이 계정으로 알파플러스 서비스에 처음 가입하는 유저
  2. 해당 쇼피파이 계정의 다른 스토어로는 알파플러스 서비스를 이용하였으나 지금 스토어로는 처음 가입하는 유저
  3. 해당 스토어로 알파플러스 서비스를 가입하였으나 브라우저부스터는 처음인 경우

정도가 있다. 물론 브라우저부스터와 알파플러스가 반대인 경우도 있긴 하지만..

2번과 3번 과정이 꽤나 헷갈렸다. 우리 서비스 로직으로는, 우선 설치하는 과정에서 샵 데이터를 생성한 후, 온보딩(혹은 계정 통합 과정)을 거치면서 이 샵 데이터가 계정 데이터와 연결된다. 3번은 바로 로그인 화면으로 이동해줘야 하므로 별도의 계정 연결 과정이 없다. 따라서 샵 데이터가 생성될 때 이뤄저야 한다. 따라서 샵을 만들때, 그 샵의 URL로 다른 앱 데이터를 탐색해서 존재하는지 확인했다. 존재한다면, 그 데이터와 연결된 계정에 이 샵도 바로 연결해주었다.

1
2
3
4
5
6
7
8
9
10
11
stmt_og = (
  select(models.Shop)
  .join(models.ShopAdminAccount, models.Shop.shop_admin_accounts)
  .where(
      models.Shop.shop_url == shop_url
      and models.ShopAdminAccount.position == ShopAccountPosition.OWNER.value
      )
    .order_by(models.ShopAdminAccount.created_at.desc())
    .options(contains_eager(models.Shop.shop_admin_accounts))
  )
shop_og = db.execute(stmt_og).scalars().first()

계정 중, 스토어 관리자가 아닌 소유자를 불러와야 하는 조건을 걸어야해서 jonedload가 아닌 JOIN을 사용했다. 쿼리문은 쉬운것 같으면서도 은근히 오류가 많이나서 귀찮다. 마지막에 쿼리를 실행할때도 scalar_one_or_none() 을 사용했는데 계정정보가 여러개일 경우로 인해 오류가 나서 여러 개중 첫번째만 선택하도록 수정해주었다.

웹훅 오류

앱 삭제 요청이 아예 도착하지도 않는 상황에서 의외의 해결책을 찾았다. 웹훅을 주고받는 요청의 query param에 Shopify API 버전을 담아야 한다. 기존 알파플러스 앱은. 2023년 7월버전이라 당연히 그렇게 적용되어 있었는데 새로 만든. 브라우저부스터 앱은 2024년 7월 버전이었다.. 또한 웹훅 요청의 타당성을 검사할 때 쓰이는 API_SECRET_KEY도 브라우저부스터가 아닌 알파플러스 앱의 값이 들어가고 있어서 브라우저부스터 앱에서 오는 웹훅들이 모두 401처리 되고 있었다. 어쩐지..

테스트 앱 설치오류

알파플러스 테스트 앱을 설치할 떄, 처음 요청은 502가 뜬다. 이후 새로고침하면 아무일 없다는 듯 잘 되긴 하지만.. 이 문제를 어떻게 고쳐야 할까 난감해하던 중 갑자기 잘 된다. 좀 일관되게 안되던가…

회고

어느 순간 black formatter가 먹통이 되버렸다. 수동으로 처리하기 너무 귀찮다.