추상클래스의 작동 방식

Today I Learned 날짜 2024년 8월 28일 수요일 내용 전환데이터의 종류 네이버 검색광고에도 전환 데이터에 대한 타입이 추가되었다. 제공되는 전환수와 값이 어떤 전환에 대한 데이터인지를 구분해서 준다. 회원가입, 장바구니 담기, 구매 완료, 등등 8가지 종류가 있다는데 정확히 무엇을 의미하는지는 나도 몰?루. 그냥 나눠서 제공해야하니 구현했다. 처음엔 일단 모든 데이터를 가져오되, 현재는 합쳐져 있는 데이터를 전환 종류에 따라 분류해서 들고있으려고 했다. 모두 들고 저장은 하되, 구글 스프레드시트에 넣을 때만 필요한 전환 종류의 데이터만 넣도록 만드는게 목표였다. 이유는 ...

2024년 8월 28일 · 4 분 · 배준수

import 문 정리

Today I Learned 날짜 2024년 8월 14일 수요일 내용 불필요한 import 문 처리 예전부터 꼭 처리하고 싶었던게 있었다. 파일들에 최상단에는 각종 import 문들이 가득한데 중구난방이다. 중복도 너무 많고, 사용하지 않는데 들어가있는 것들도 많다. 아무래도 처음 파일을 만들때 다른 파일에서 긁어오는 경우도 있고 코드를 수정하는 과정에서 더이상 사용하지 않게 됐는데 import문은 처리하지 못한 경우도 있었다. 사용하지 않는 import문은 밑에 점선표시가 뜬다. 이전에 그것만 믿고 지웠다가 사용하는데 점선표시 된 패키지들이 있어서 대참사를 낼뻔했기 떄문에.. 점선을 믿지 않고 일일이 Ctrl + F 로 사용여부를 확인해가면서 지워갔다. ...

2024년 8월 14일 · 1 분 · 배준수

쇼피파이 버전 업그레이드

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에만 큰 변경이 있을 것이고, 그 외에는 없는 것 같지만 혹시 모르니… ...

2024년 8월 13일 · 2 분 · 배준수

pytest 커버리지 확인하기

Today I Learned 날짜 2024년 8월 12일 월요일 내용 테스트코드 정상화 유지보수 중 생각보다 시간 여유가 생겨 테스트코드를 작성했다. 가장 자주 문제가 되는 부분인 서비스 활성화 부분에 대한 코드다. 특정 앱을 사용 시작했을 때 shop_detail이 제대로 바뀌는지 확인하는 코드다. mock_s3_resource랑 mock_send_email_for_starting_user 는 쓰이지 않는데, 뺴면 아예 오류가 뜬다. 원인이 뭐꼬… 처음에 제대로 작동이 안됐는데 이전 테스트에서 생성된 shop이 데이터베이스에 남아있어서 문제가 됐다. 각 유닛테스트가 끝나면 꼭 데이터베이스를 초기화 하는게 중요하다. ...

2024년 8월 12일 · 6 분 · 배준수

굿바이 다이아

Today I Learned 날짜 2024년 8월 9일 금요일 내용 대기열 상태추적 아임리포트에서 로우데이터 생성 요청을 보내면 서버는 로그를 만들고 True를 반환한다. 클라이언트는 True를 반환받으면 로우데이터에 대한 GET 요청을 보내는데, 이떄 각 로우데이터는 현재 상태를 가지고 있다. 이때 현재상태라 함은 이 로우데이터와 연관된 로그 중 가장 최근에 만들어진 것의 상태를 의미한다. 이 중 하나의 값을 가진다. 로우데이터를 생성할 때, 현재 생성중인 것이 없으면 바로 3으로 넘어가지만, 무언가 생성중일 경우 1이나 2로 넘어가 대기상태에 돌입한다. ...

2024년 8월 9일 · 4 분 · 배준수

미작동 원인 찾기

Today I Learned 날짜 2024년 8월 8일 목요일 내용 템플릿 미작동 기능 개발과 3차 QA까지 완료했다. 호옥시나 싶어서 다 만들어봤는데 역시나. 템플릿이 작동하지 않는다. 알아보니 스프레드시트에 날짜가 문자로 들어가진다. 날짜가 들어가는 셀을 클릭했을 때 달력이 떠야하는데 뜨지 않는다… 로우데이터 4개 타입중에 1개만 날짜로 들어가고 3개는 문자로 들어간다. 날짜 서식 지정하는건 똑같은 추상클래스의 메서드를 상속받는거라 그럴리가 없는데 싶었으나… 원인을 찾았다. 각 열별로 데이터에 따라 타입(문자, 숫자, 날짜)를 지정하는데 여기서 코드가 누락되었다. ...

2024년 8월 8일 · 2 분 · 배준수

Sentry로 트랜잭션과 에러 추적하기

Today I Learned 날짜 2024년 8월 7일 수요일 내용 템플릿에 아이디가 필요한 이유 저번주에 고민했던 방식대로, 템플릿 정보를 데이터베이스에 저장하고 불러와서 사용하는 방식으로 변경했다. 현재는 129개 정도의 템플릿이 존재하는데 각자의 id값은 데이터베이스에서 사용하는 id값으로 지정해줬다. 딱히 새로운 고윳값을 줄 이유를 못 느꼈기 떄문.. 그런데 문득 든 생각이, 따로 만들어줘야한다. 예를 들어, 3번 템플릿이 있다고 가정해보면 어떤 유저들의 데이터에는 “3번 템플릿”을 사용하고 있다고 저장된다. 만약, 관리자가 이 3번 템플릿 정보를 바꾸기 위해, 삭제하고 다시 추가한다면? 데이터베이스에서 primary key로 관리되는 id는 한번 사용된 값이 재사용되지 않기 떄문에, 새로운 id를 받게 된다. 예를 들어, 129번까지 사용하고 있었으니 3번을 삭제하고 추가하면 130이라는 id를 갖게 된다. 그럼 유저 정보를 참조하다가 3번 템플릿을 찾으려면 당연히 없을 것이다. ...

2024년 8월 7일 · 2 분 · 배준수

실패시 재시도 하는 코드 만들기

Today I Learned 날짜 2024년 8월 6일 화요일 내용 너무 많은 요청과 재시도 네이버는 초당 20~30회 가 넘어가는 요청이 발생할 경우, 429 code를 반환해준다. {"code":429,"message":"Too Many Requests"} 이런 모양새인데, 관리자의 말에 따르면 1초 후 재시도하라고 한다. 시도하다 status_code가 429면 1초 후 재시도 하도록. 혹시나 무한루프에 빠질까봐, max_retires를 설정해서 재귀 깊이가 5가 넘어가면 멈추도록 구현해놨다. 근데 계속 레포트 생성이 실패한다! 네이버에서 데이터를 가져오기 위해선, 각 날짜별로 보고서를 만들어야 한다. 7월 30일부터 7월 1일까지 보고서를 만들다가 7월 9일 보고서를 만드는 시점에 “429”가 뜬다면? 처음부터 다시한다. ...

2024년 8월 6일 · 1 분 · 배준수

boto3로 ECS Task 호출하기

Today I Learned 날짜 2024년 8월 5일 월요일 내용 ECS 태스크 호출하기 아무리 생각해도 서버 외부에서 호출해야 했다. 람다는 15분 제한 시간에 넘치고, 서버에서 돌리기엔 처음 네이버에 호출하는 순간 CPU 사용률이 80%에 달한다! 다행히 boto3로 ECS Task를 호출하는 방법이 있어 적용했다. 태스크를 직접 요청시에 적용할 수 도 있지만, 미리 정의해놓고 호출해서 원하는 로직만 처리하도록 구현했다. 다만, 일부 파라미터들은 일시적인 환경변수로 지정해줘야 했다. 기존에 lambda_function.py에 있는 lambda_handler 를 자동으로 호출되었는데, ECS에선 내가 실행할 스크립트를 추가해줘야 했다. ...

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

실사용 환경 테스트

Today I Learned 날짜 2024년 8월 2일 금요일 내용 실사용 환경 테스트 아임리포트의 개발이 끝났다. 실서버 구축도 완료했고.. 마지막으로 일부 고객들을 대상으로 한 베타테스트 전에 열심히 테스트를 돌려봤다. 네이버 API로 가져오는 데이터 양이 많은 것은 당연히 알고 있었으나, 생각치도 못한 부분에서 문제가 발생했다. AWS Lambda는 지속시간이 15분이 넘을 수 없는데 일부 테스트때 로직 수행 시간이 15분이 넘어갔다.. “검색어 성과”에 관한 데이터를 가져올떄는 가져오는 데이터가 많은데, 특히 데이터가 많은 브랜드로 테스트 해보니 15분이 훌쩍 넘어가서 기능이 제대로 문제가 됐다. 다른 브랜드들은 괜찮았는데 하… ...

2024년 8월 2일 · 1 분 · 배준수