개발자답게 단순노동하기

Today I Learned 날짜 2024년 7월 30일 화요일 내용 사소한 듯 한 에러처리 어제 나는 분명 기능을 완성하고 갔다. 분명. 그런데 오늘 2차 QA를 시작하자마자 안 만들어진다. 하… 헛고생 했다는 생각에 1차 분노, QA 하는 분들의 시간을 낭비했다는 생각에 2차 분노했다. 화를 삭히고 열심히 원인을 찾았다. 네이버 API 호출 제한 네이버 검색광고에서 데이터를 불러올 때, 호출 횟수의 제한이 있다. 초당 2030회가 넘어가면 429 코드가 반환되면서 “Too many requests” 라는 메시지를 뱉는다. 담당자의 답변에 의하면 1초 후 다시 시도하란다. 데이터를 불러올 떄, 이런 일이 발생하면 1초 후 로직을 다시 시작하도록은 구현해 놨다. 우선 테스트를 위해 요청 횟수를 적게 해놔서 발생할 일은 없을 거라고 예상했는데.. 오늘 QA 과정에서 문제가 됐다. 여러 명이 동시에 진행하는 QA에서 모두가 같은 네이버 계정을 사용했기 떄문이다. 100일치만 불러오느라 괜찮을 줄 알았는데 동시에 23 명이 요청을 보내니 에러가 떴고 내가 짠 코드가 제대로 작동 안하는게 확인됐다. 400일치가 제대로 돌아가는지 꼭 재차 확인해야겄다. ...

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

잡다한 오류 뜯어 고치기

Today I Learned 날짜 2024년 7월 29일 월요일 내용 오류 뜯어고치기 QA를 계속 진행중. 자잘한 오류를 뜯어 고치는 중이다. 데이터베이스상으론 등록된 스프레드시트가 존재하지만, 실제로 구글 드라이브에는 존재하지 않을 떄에 대한 처리가 없었다. 스프레드시트는 존재하지만 이름이 바뀌었을 경우, 정해진 로우데이터 이름대로 변경하는 코드가 없었다. 템플릿 데이터가 int로 들어오는데, 올바른 스키마 형태로 처리하지 못했다. 로직이 실패했을 때 올바른(?) 이유가 저장되거나 실패처리가 되지 않았다. 등등… 뭔가 큰 틀에서는 이상이 없는데 온갖 자잘한 곳에서 자꾸 삐그덕거린다.. 뒤늦게 이 코드 저 코드 추가하니 모양새가 영 보기 좋지 않다. ...

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

잘못된 단어 : 정치적 올바름은 어떻게 우리를 침묵시키는가

잘못된 단어 지은이: 르네 피스터 번역 : 배명자 출판사: 문예출판사 감상 정치적 올바름, 흔히 말하는 PC는 이미 유럽과 미국에선 큰 화두이다. 영화의 원작 줄거리나 실제 역사적 배경과 무관하게 흑인이 주인공으로 캐스팅되면 항상 뜨거운 논쟁이 펼쳐진다. 이름 자체가 snow white인 백설공주가 흑인이어도 되는가? 배경이 과거의 북유럽인 인어공주가 흑인일 수 있는가? 논쟁이 끊이지 않는 이유는, 어느정도의 사실과 합당한 근거를 기반으로 한 세력이 광폭화했기 때문이라고 생각한다. 인종차별은 분명히 존재하며 여성, 장애인, 동성애자 등 소수자들에 대한 불편한 시선과 차별은 여전하다. 전혀 사실이 아니라면 이 이야기가 시작되지도 않았을 거라 생각한다. 세상이 변하고 인권 의식이 나아졌다 하더라도 여전히 누군가는 일상에서 목숨의 위협을 받고 있고, 자유를 누리지 못할 수도 있다. 그렇다면, 이에 반대하는 세력은 성차별적이고, 인종차별주의자며 장애인을 혐오하는 비인륜적인 사람임이 틀림없을까? 과거 수 천년간 지속되어온 차별을 타파하기 위해 지금 나의 삶을 희생하라고 해야 하는 것이 한치의 오차도 없이 합리적인가? 누가 옳은지, 누구의 말이 중요한지에 대한 이야기가 아니다. 더 나아지기 위해 가져야 할 태도에 대해 이야기 하는 책이다. 수학책에 나온 공식에 대해 의문을 갖는 사람, 수학책을 의심했다는 이유만으로 비논리적이며 합리적이지 않은 인간으로 취급하는 사람 중 더 학문적인 사람은 누구일까? 자신의 정치적 신념이 어떠하든 꼭 추천하는 책이다. ...

2024년 7월 27일 · 6 분 · 배준수

쿼리문에서 또는 사용법

Today I Learned 날짜 2024년 7월 26일 금요일 내용 또 이슈.. 또 이슈가 터졌다. 우리 프로덕트 리뷰 기능에는 구글 검색에 나타나는 제품 스니펫을 추가해주는 기능이 있다. 제대로 들어갔는지는 링크에서 확인해보면 되는데, aggregateRating과 리뷰가 없다고 결과가 나온다. 스니펫이 없다거나, 스니펫에 들어갈 데이터가 상품 메타필드에 없거나 하는 문제가 있을까 싶어 열심히 찾아봤는데 다 있다. 그럼 도대체 어디가 문제인가… 비정상을 찾는 최고의 방법은 정상과 비교해보는 법. 우리 서비스를 이용하는 다른 샵들의 대시보드로 들어가서 구글 스니펫을 사용하는 샵들도 테스트를 돌려봤다. 근데 다 똑같은 오류가 뜬다..? 그럼 둘 중 하나다. 저게 뜨는게 정상적인 상태였거나, 애초에 기능 자체가 고장나버린 상태거나.. 월요일에 도움을 받아 다시 봐야 겠다. 혹시나해서 구글에 검색해봤는데 역시나 리뷰 갯수나 평점 등의 스니펫은 안뜨긴 한다. 아마 고장났나보다… ...

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

AWS 람다함수의 재요청 방지

Today I Learned 날짜 2024년 7월 25일 목요일 내용 람다의 재요청 방지 데이터 임포트를 요청하면 boto3로 AWS Lambda를 호출하도록 구현했다. 맨 처음에는 RequestResponse로 보냈었다. 그런데 디버깅 과정에서 요청이 실패할때마다 1분 간격으로 재시도가 발생해서, 데이터가 꼬이고 쓸데없는 로그가 많이 남아 힘들었다. 그래서 비동기 호출인 Event로 바꾸었다. 근데 비동기 함수라 로직이 원하는대로 실행되지 않았다.. 알아보니 RequestResponse 호출을 했을 때 요청이 실패하면 AWS에서 자동으로 3회 정도 재시도를 한다고 한다. Lambda 클라이언트를 설정할 때 config를 설정해서 이를 방지 할 수 있었다. ...

2024년 7월 25일 · 1 분 · 배준수

리뷰 요청 메일 조회 기능

Today I Learned 날짜 2024년 7월 24일 수요일 내용 리뷰 요청 메일 리뷰를 요청하는 메일은 중요한 기능이기 떄문에 매일매일 확인하고 있다. 발송 자체는 올바르게 되나 한가지 문제점을 발견했다. 발송 여부에 관한 데이터를 메시징 로그라 하는데, 이 데이터가 조회가 안된다. 메뉴에서 collect 메뉴에 들어가면 유저는 메시징 로그가 생성된 메일들 목록을 볼 수 있다. 특정 날짜에 발송되었거나, 취소되었거나, 발송할 예정인 메일들과 그 메일의 기점이 된 주문 데이터를 볼 수 있다. 주문데이터를 볼떄는 필터링을 추가할 수 있는데 주문시점, 배송완료 시점, 요청 메일 발송 시점 3가지다. ...

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

서버에서 사용하기 위한 데이터 테이블

Today I Learned 날짜 2024년 7월 23일 화요일 내용 자주 추가될 템플릿. 네트워크 문제를 해결하니 무사히 람다함수가 완성됐다. 그동안 임시로 멀티스레드로 처리하도록 구현해놓은거를 다 바꿔주었다. 그런데 변경사항이 발생했다. 템플릿이 여러 스프레드시트에 나눠져서 만들어질 것이고 자주 추가될 듯하다. 매번 코드를 엎거나 수정하기엔 번거로울 듯하여 새로운 방안을 모색했다. 각 템플릿의 정보를 담은 테이블을 사용하려고 한다. 그동안은 유저에 의해 생성되는 데이터들만을 위해 데이터베이스를 사용했지만, 이번엔 기능에 추가되는 템플릿들을 저장하는 테이블을 생성하려고 한다. 1 2 3 4 5 6 7 8 9 template : { "id" : 데이터베이스 내 고유 id, "number" : 각각에게 부여되는 고유 숫자, "name" : 템플릿 이름(ex. NSA_GTD 항목별 캠페인 유형, "description": 템플릿에 관한 설명, "spreadsheet_id": 템플릿 원본이 존재하는 스프레드시트의 아이디, "sheetfile_id": 템플릿 원본이 존재하는 시트파일의 아이디, "raw_data_foramt_type": 템플릿이 참조하는 로우데이터의 형식 } 쯤으로 만들면 되지 않을까! 앞으로 추가, 삭제, 변경도 쉬워지도록… ...

2024년 7월 23일 · 1 분 · 배준수

AWS VPC Subnet

Today I Learned 날짜 2024년 7월 22일 월요일 내용 Public Subnet VS Private Subnet 지난 주 금요일부터 계속 처리하던 람다 함수를 계속 만졌다. 웬걸? 람다함수는 구글 드라이브에 스프레드 시트를 생성하는 것부터 실패하고 있었다. 아예 요청 자체가 가질 못하고 있었다. 요청의 문제라기보단 통신의 문제였다. 람다함수가 외부 인터넷과 통신을 못하고 있는게 분명했다. AWS Lambda 함수가 VPC 내의 퍼블릭 서브넷에 배치될 때, 자동으로 퍼블릭 IP를 할당받지는 않습니다. Lambda 함수는 ENI(Elastic Network Interface)를 사용하여 VPC 내에서 네트워크 통신을 수행합니다. 이러한 ENI는 퍼블릭 IP를 갖지 않기 때문에 퍼블릭 서브넷에 배치되어도 인터넷에 직접 접근할 수 없습니다. ...

2024년 7월 22일 · 3 분 · 배준수

람다와 중복된 메일 요청(2)

Today I Learned 날짜 2024년 7월 19일 금요일 내용 람다 AWS Lambda란 무엇인가요? ✔ 서버 프로비저닝 또는 관리, 워크로드 인식 클러스터 확장 로직 생성, 이벤트 통합 유지 또는 런타임 관리 없이 코드를 실행합니다. ✔ 사실상 모든 유형의 애플리케이션이나 백엔드 서비스에 대한 코드를 실행합니다. 코드를 ZIP 파일 또는 컨테이너 이미지로 업로드하기만 하면 Lambda는 자동으로 컴퓨팅 실행 능력을 할당하고, 모든 트래픽 규모에 대하여 수신 요청 또는 이벤트를 기반으로 코드를 실행합니다. ✔ Lambda 기능을 선호하는 언어(Node.js, Python, Go, Java 등)로 작성하고 서버리스 및 컨테이너 도구(AWS SAM 또는 Docker CLI)를 사용하여 기능을 구축, 테스트 및 배포합니다. ...

2024년 7월 19일 · 3 분 · 배준수

람다와 중복된 메일 요청

Today I Learned 날짜 2024년 7월 18일 목요일 내용 중복된 리뷰 요청 메일 주문한 고객에게 리뷰 요청 메일이 중복되서 발송된다는 이슈가 발생했다. 확인해보니 주문 데이터가 여러개 생기는데, 이를 처리하지 않아서 생기는 문제였다. 무슨말이냐면 A, B, C, D 상품을 주문했다고 가정해보자. 그럼 이 주문 데이터가 들어오는데 발송상태는 ‘발송중’, 완료상태에는 빈값으로 들어온다. 여기서 B 상품만 배송이 완료되었다면 주문 데이터가 또 들어온다. 발송 상태는 여전히 ‘발송중’, 완료 상태는 ‘Partial’로 들어온다. 이게 A 상품, C 상품, D 상품이 발송될 떄마다 들어온다. 주문은 1번이지만 최대 데이터가 5개까지 생성될 수 있다는 의미다. 이떄마다 리뷰 요청 메일 로그가 생성되어서 발생한 문제로 파악했다. ...

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