쇼피파이 버전 업그레이드

2024년 8월 13일 화요일

Today I Learned

날짜

2024년 8월 13일 화요일

내용

쇼피파이 버전업

쇼피파이는 1년에 4번 새로운 API 버전을 출시한다(1월, 4월, 7월, 10월). 각 버전의 유효기간은 1년이다. 지난 12월에 2023-04 에서 2023-07로 버전을 떙겼는데 새로 버전을 바꿔야할 때가 왔다. 현재 가장 최신 버전은 2024-10 이지만, 아직 정식 출시 전인 버전이라 안전한 2024-07로 올리기로 했다. 쇼피파이에선 API로 데이터를 가져올 때 이 API 버전을 쿼리 파라미터로 항상 넣어야 하므로 쇼피파이 API를 이용하는 부분을 싹다 확인해야 했다. 릴리즈 노트 상으로는 상품 관련 API에만 큰 변경이 있을 것이고, 그 외에는 없는 것 같지만 혹시 모르니…

우리 서버에 스토어의 상품 데이터가 들어오는 경우는 2가지다. 첫번 째는 설치할 때. 설치하면 스토어의 상품을 API로 모두 가져와서 저장한다. 두번째는 웹훅. 스토어의 상품에 데이터 변경이 있을 경우 웹훅으로 이를 서버에 반영한다. 따라서 두 곳을 집중적으로 확인해야 한다.

쇼피파이 쪽과 통신하기 위한 방법은 여러가지가 있는데 Admin Rest API가 있고 Admin GraphQL가 있다. Rest는 우리가 자주 사용하는 REST API로, 쿼리나 바디 파라미터로 원하는 데이터 내용을 보내면 되고, GraphQL은 쿼리를 작성해서 보내야 한다. 당연히 전자가 편하다. 쇼피파이쪽에선 GraphQL을 사용하길 권장하고 있고 2024년 4월 버전부터는 아에 새로운 GraphQL Admin을 만들어서 쓰길 권장한다.

이 GraphQL은 메타에서 만든 방식인데, 도대체 왜 좋아하는지 찾아봤더니 다음과 같단다.

REST와의 가장 큰 차이점은 GraphQL에서는 서버로 한 번만 이동하면 되므로 데이터 페치가 더 빠르다는 것입니다. GraphQL 쿼리에 대한 응답은 JSON으로 다시 전송됩니다. 데이터를 페치하는 REST 모델에서는 애플리케이션에 필요한 모든 데이터를 얻기 위해 서버로 여러 번 왕복해야 하는 경우가 많으므로 특히 모바일 기기에서는 느릴 수 있습니다.

GraphQL의 또 다른 주요 이점은 클라이언트가 필요한 데이터를 정확히 지정한다는 것입니다. 예를 들어, 전자 상거래 앱의 제품 페이지인 경우 클라이언트는 제품 이름, 가격, 고객 평가 및 재고만 수신하고 싶다고 지정할 수 있습니다. 해당 제품에 대한 다른 모든 데이터(예: 전자 제품인 경우 기술 사양)는 특별히 요청하지 않는 한 다운로드되지 않습니다. 반면 동일한 사용 사례에서 REST API 요청의 경우 서버는 특정 제품에 대한 불필요한 세부 정보를 모두 다시 보낼 수 있습니다.

(출처)

뭐 어쨌든.. 바꾸라니 바꿔줬다. 들어온 데이터를 처리하는 클래스도 바꿔줘야 했는데, 괜히 create_at 이 createdAt 으로 바뀐다거나, option json으로 바뀌었다든가 하는 수정사항들이 있었기 때문이다. 그외에 고객 데이터 외에는 크게 바뀐 부분은 없었다. 생각보다 쉬웠다.

라고 생각했으나, 이 쇼피파이 친구가 API로 불러오는 상품 데이터 필드는 변경해놓고 웹훅으로 들어오는 필드는 그대로 냅뒀다. 왜 둘이 통일이 안되냐! 기존에는 둘다 같은 로직을 따라갔지만, 어쩔수 없이 분리해버렸다.

회고

드디어 버전을 바꿨다. 앞으로 1년간 편-안