실서버 배포 문제 (2)

Today I Learned 날짜 2024년 5월 31일 금요일 내용 실서버에서 놓친 부분 아침에 갑자기 리뷰 작성페이지가 열리지 않는 것, 리뷰와 평점이 상품과 함께 나타나지 않는다는 이슈가 생겼다. 헐레벌떡 알아보니 메타필드가 문제였다. 메타필드에는 shop_access_code가 저장된다. 이번에 새로운 앱을 추가하면서 shop_access_code를 6글자에서 8글자로 변경했다. 메타필드는 업데이트 해주지 않았는데, 테스트 서버에서 큰 이상이 없었기 떄문이다. 또한 혹시나 싶은 마음에 항상 access_code를 처리할 때 6글자면 8글자로 바꾸어 인식하도록 추가해놨었다. 그런데 실서버에서만 문제가 됐다. 커맨드를 몰려 모든 샵들의 메타필드에서 샵액세스코드를 6글자에서 8글자로 업데이트해주었다. ...

2024년 5월 31일 · 1 분 · 배준수

클래스로 묶는 것은 항상 좋은 코드인가?

Today I Learned 날짜 2024년 5월 30일 목요일 내용 클래스로 묶는 목적 리스트 디자이너 고도화 작업중에 고민이 생겼다. 이번에 추가해야할 기능은 상품 자동진열 방식에 따라 자동으로 상품 목록을 업데이트 해주는 것이다. 위젯의 자동진열 기준이 판매량 순이라면, 매일 특정한 시간에 그 샵의 판매량 순서를 확인하고 변경이 있다면 위젯에 등록될 상품도 변경해줘야 한다. 기능 자체는 어찌어찌 만들었는데, 코드를 어디에 어떻게 배치해야 할지에 대해 나름 고민이 생겼다. 이 기능의 로직을 조금 더 작은 단위로 구별해보면 다음 순서로 이루어진다. ...

2024년 5월 30일 · 3 분 · 배준수

실서버 배포 1차시도 실패

Today I Learned 날짜 2024년 5월 29일 수요일 내용 실서버 배포 오늘 처음으로 내가 실서버를 배포했다. 뭐 잘못될까봐 무서운데 여러모로 크고 작은 문제를 겪었다. EC2 인스턴스 내에서 데이터베이스 마이그레이션을 하는데, 파일 수정이 안됐다. alembic으로 새로운 변경을 적용할떄 보통 Enum 타입이 오류가 많이난다. 오늘도 나서, 해당 부분을 수정했는데 파일 저장이 안됐다. 파일을 읽고 쓸 권한이 없다고 경고창이 떴다. 전체 디렉토리, 특정 파일 모두 chmod로 권한을 줬으나 잘 안되다 갑자기 됐다. 지 맘대로여 아주.. ...

2024년 5월 29일 · 1 분 · 배준수

데이터베이스 정규화의 중요성

Today I Learned 날짜 2024년 5월 28일 화요일 내용 정규화와 연관된 데이터 업데이트 리스트 디자이너 고도화작업을 시작했다. 이전에 개발된 것에서 문제를 찾았는데, 상품 정보가 변경되어도 곧바로 리스트 디자이너 위젯에 적용되지 않는다. 우선 이 부분을 해결하려 했다. 계획상으론 그리 어렵지 않았는데, 웹훅을 이용해 상품이 업데이트 될 경우 그 상품이 ListDesignerProduct 에 연관된 데이터가 존재할 경우 그 데이터도 업데이트 시켜주면 될거라 생각했다. 하지만 예상치 못한 곳에 빠져 고민이 생겼다. 필요한 데이터는 product가 아닌 product_variants에 있다. ...

2024년 5월 28일 · 2 분 · 배준수

자잘한 QA 처리

Today I Learned 날짜 2024년 5월 27일 월요일 내용 QA 이것저것 자잘한 QA를 열심히 처리했다. 코어스크립트 활성화 여부를 체크할 때 알파플러스 앱 ID가 입력되고 있어서 제대로 반영이 안됨. 상품 등록할때 데이터베이스에선 상품 아이디를 secondary_product_id 로 처리하지만 스키마와 프론트에선 product_id 로 처리해서 데이터가 누락됨. 할인코드가 “THANKYOU” 로 시작되야 하는데 “BROWSE_BOOSTER”로 만들어짐 상품 정보가 변경되었을 때 반영이 안됨. 어떤 샵에 대한 웹훅인지 확인하는 과정에서 shop_url로 Redis 캐시를 확인하는데 새 앱 정보는 들어있지 않아 다른 앱 정보에서 샵을 찾고 있었음. 계정 설정 페이지에서 관계된 계정을 찾는데 잘못된 방식으로 탐색해서 화면에 출력되지 않음 관리자 계정을 추가할 때, 연관된 스토어 추가에 새로운 앱은 반영되지 않음 등등.. 배설한 업보가 많다 많아. ...

2024년 5월 27일 · 1 분 · 배준수

Pytest와 faker로 코드 작성

Today I Learned 날짜 2024년 5월 24일 금요일 내용 테스트 코드 작성을 위한 DB 모델링 우리 서비스의 테스트 코드는 pytest로 작성되어 있고, 데이터베이스는 SQLite다. SQLite는 파일 형식이라 만들고 뚝딱 삭제해버리면 금방이다. 우리 데이터베이스인 Postgres 와 마찬가지로 SQL이긴 하나 약간의 기능 차이는 존재한다. 하나 꼽자면 jsonb 타입의 필드가 없다. jsonb는 json과 달리 내부의 키로 검색할 수 있는 나름 유용한 타입이다. 쇼피파이에서 넘어오는 스토어 데이터는 Shop 테이블에 담긴다. 가공없이 그대로. 스토어와 관련해서 우리가 필요하고 자주쓰는 데이터는 이 자식테이블 격인 shop_detail에 담긴다. 여기에 apps_log라는 이름으로, 그 스토어가 활성화한 서비스가 어떤 것인지를 담는데 이 필드가 jsonb 타입이다. ...

2024년 5월 24일 · 4 분 · 배준수

Gitbook을 이용한 Docs 작성

Today I Learned 날짜 2024년 5월 23일 목요일 내용 서비스 독스 작성 올해 회사에서 이룰 개인적인 목표 중 하나는 우리 팀의 서비스에 대한 Docs를 작성하는 것이다. 처음 계획은 어떤 기능이 어떤 함수, 어떤 파일에서 어떻게 데이터를 주고받는지를 기록하려고 했다. 내가 보기 위해서기도 하지만, 여러 사람이 협업하는 만큼 다른사람이 작성한 코드를 읽고 파악하는데 낭비되는 시간을 최소화하기 위해서였다. 문서를 작성하는 시간만큼 내가 코드 보는 눈도 좋아질 것이고.. 조언과 여러 생각 끝에 방향을 틀어 기능과 흐름에 대해 작성하는 걸로 수정했다. 이렇게 되면 코드와 언어 자체에 대한 해석은 부족할지라도 전체적인 흐름을 파악할 수 있어 큰 그림의 이해가 더 쉽다. 또한 문서를 읽을 수 있는 사람이 개발자로 한정되지 않는다. 아주 약간, 조금의 짬이 차면서 기능을 개발하면서 생기는 고민은 코드 퀄리티나 방식에 대한 고민도 있지만, 지금은 에러가 나거나 로직상 구멍이 나서 유저가 원치않는 상황에 직면하게 되는 것을 더 걱정하게 되었다. 지금 시점에서 더 깔끔하고 근사한 코드를 짜는 사람보다는 계획 수준에서부터 그림을 그릴 줄 아는 개발자, 내가 들여야 할 공수와 시간을 정확하게 계산해 낼줄 아는 개발자가 되고 싶다. ...

2024년 5월 23일 · 2 분 · 배준수

데이터가 삭제되지 않는 로직 찾기

Today I Learned 날짜 2024년 5월 22일 수요일 내용 데이터 삭제 관리 서비스 내에 별개의 앱이 생성되면서 이것저것 분기 테스트를 진행중이다. 어떤 샵이 어떤 서비스를 사용하고 있는지, 어떤 앱을 설치했는지가 항상 정확하게 처리되어야 한다. 설치 과정에서 발생하는 문제들은 여러 테스트들에서 이상이 없었다. 샵을 삭제할 때, 연결된 계정의 삭제여부도 결정해야한다. 어떤 계정이 더이상 연결된 샵이 없으면, 그 계정은 삭제되어야 한다. 기존에는 알파플러스 앱에 있는 샵들만 확인하면 됐었는데, 이제 확인해야할 샵이 늘었다. 이 부분을 뒤늦게 파악하여 부랴부랴 추가해주었다. ...

2024년 5월 22일 · 1 분 · 배준수

jsdeliver 폭파사건

Today I Learned 날짜 2024년 5월 21일 화요일 내용 사건사고(?) 백서 그동안 사내 다른 사버스들에서 발생했던 중대한 문제들에 대한 백서 공유 시간이 있었다. 자세히 이야기하자면 길지만 서버 문제로 고객사들의 스토어에 문제가 생겨서 발생한 문제들이었다. 사실 jsdeliver가 작동하지 않았을 때, FastAPI에서 자동으로 생성해주는 swagger UI 문서가 제대로 뜨지 않고, 내 개인 블로그도 고장나서 알게 되었다. 우리 글로벌 서비스의 위젯도 작동하지 않았지만 다행히 문제제기는 없었다. 문제가 있었던 오전 9시부터 11시는 미국 LA 기준으로 오후 5시부터 7시 쯤이니 잘 몰랐던 건 아닐까! 나중에 백서 쓸일이 없었으면 좋겠다. ...

2024년 5월 21일 · 1 분 · 배준수

Shopify의 앱 설치 로직 이해하기

Today I Learned 날짜 2024년 5월 20일 월요일 내용 앱 설치 링크 이제 우리 서비스는 2가지 앱을 같은 어드민 페이지에서 지원한다. 브라우저 부스터 앱을 사용하는 사람이 알파플러스 앱에 접근하려고 하면, 앱 설치 URL로 리다이렉트 시켜줘야 한다. 쇼피파이 앱 스토어에서 설치할 때, 바로 해당 앱을 설치하기 위한 권한을 묻는 페이지로 넘겨줬어야 했는데 저번주 내내 열심히 뒤져봤지만 못찾았다.. 분명 다른 앱에선 구현해놓은 건데… 이 부분을 해결했다! 쇼피파이와 우리 서버가 통신을 주고받는 엔드포인트는 3개다. ...

2024년 5월 20일 · 3 분 · 배준수