람다와 중복된 메일 요청

2024년 7월 18일 목요일

Today I Learned

날짜

2024년 7월 18일 목요일

내용

중복된 리뷰 요청 메일

주문한 고객에게 리뷰 요청 메일이 중복되서 발송된다는 이슈가 발생했다. 확인해보니 주문 데이터가 여러개 생기는데, 이를 처리하지 않아서 생기는 문제였다. 무슨말이냐면

A, B, C, D 상품을 주문했다고 가정해보자. 그럼 이 주문 데이터가 들어오는데 발송상태는 ‘발송중’, 완료상태에는 빈값으로 들어온다. 여기서 B 상품만 배송이 완료되었다면 주문 데이터가 또 들어온다. 발송 상태는 여전히 ‘발송중’, 완료 상태는 ‘Partial’로 들어온다. 이게 A 상품, C 상품, D 상품이 발송될 떄마다 들어온다. 주문은 1번이지만 최대 데이터가 5개까지 생성될 수 있다는 의미다. 이떄마다 리뷰 요청 메일 로그가 생성되어서 발생한 문제로 파악했다.

리뷰요청 메일을 발송할 떄, 발송해야하는 떄를 결정하는데 되게 복잡한 로직들이 이미 구현되어 있었다. 그래서 주문이 생성된 시점에만 로그가 생성되면 되도록 수정해주었다.

람다

테스트서버 배포를 했으니, 네이버에서 데이터를 가져와 처리하고 구글 스프레드시트에 올리는 일련의 프로세스를 람다함수로 구현하고자 한다. 매일 아침 주기적으로 업데이트하는 것은 크론, 유저의 요청으로 비주기적으로 발생하는 요청은 람다로 처리하면 되겠다고 생각했다. 그럼 동시에 여러 처리를 하더라도 서버에 부담이 안생길거라고 생각했다.

그런데, 생각보다 이 프로세스의 규모가 크다…

  1. 데이터베이스를 처리하는 CRUD 함수
  2. 네이버와 구글 API를 처리하는 함수
  3. 데이터를 처리하는 함수
  4. 데이터베이스를 ORM으로 다루기 위한 모델링 파일
  5. 스키마 파일
  6. 4를 위한 데이터베이스 트랜잭션 만드는 파일

이 필요하다.. 압축해서 올려보니 20MB나 된다. 람다로 분리하기엔 상당히 커보이는건 그냥 내 느낌인걸까… 더 알아보고 돌릴꺼면 빨리 돌려보자.

회고

인스타그램 코멘트 서비스가 세상에 나왔다. 고생했으니 잘되지 않을까!