2차 서브도메인

Today I Learned 날짜 2024년 8월 19일 월요일 내용 2차 서브도메인의 SSL 인증서는 별개로 받자. 도메인은 IP주소에 붙인 이름이다. 모든 서버는 자신의 IP 주소를 가지는데, 우리가 쉽게 읽고 쓸 수 있는 자연어를 IP주소에 할당한 것을 도메인이라 한다. naver.com, google.com 등이 우리가 흔히 생각하는 도메인이고 이 도메인은 최상위 도메인이다. 최상위 도메인에 prefix를 붙여서 서브 도메인을 만들 수 있다. 아임리포트를 예시로 들면, 유저들은 최상위 도메인인 imreport.io로 접근한다. 이떄 클라이언트가 서버로 요청을 보내야하는데 서버의 도메인이 server.imreport.io 로 설정되어있다. 이 외에도 여러 서브도메인을 구축하면 같은 도메인 내에서도 다양한 섹션으로 나누어 사용할 수 있다. ...

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

테스트만이 살길이다

Today I Learned 날짜 2024년 8월 16일 금요일 내용 테스트케이스 추가 무려 6개월 전에 진행했던 리스트 디자이너의 테스트 케이스를 추가해줬다. 허허.. 진작에 좀 부지런하게 해놓을껄.. 깃헙 액션으로 풀리퀘스트를 머지할 때마다 테스트를 진행해 결과를 나타내고, 커버리지로 테스트되는 코드 비율을 표시하려고 했는데 약간의 문제가 있다. 결국 빌드해서 파이테스트를 돌려봐야 하는데, 깃헙에선 환경변수 파일이 없으니 실행 과정에서 자꾸 오류가 난다. 그렇다고 필요한 환경변수를 모두 repostiory 환경 변수로 설정할 수도 없고 흠.. 다른 방법이 뭐가 있을까 고민하다가 ...

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

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 분 · 배준수