Today I Learned 날짜 2024년 4월 18일 목요일
내용 이메일 레거시 코드 개선 이메일 보내는 로직이 2개로 나누어져있다. 하나는 message_sender로 클래스로 구현되어있고, 다른 쪽은 템플릿 만드는 함수, 데이터 처리하는 함수, 전송하는 함수가 구현되어있다. 클래스에는 이 함수들이 메서드로 구현되어 있는 형태인데 추상 패턴이라 이메일 뿐만 아니라 웹 푸시, SMS 전송에도 사용할 수 있다. 따라서 모든 이메일 전송은 전자의 클래스를 사용하도록 개선해야 한다. 단순히 사용 함수를 바꾼다고 해결할 문제는 아닌게, 받는 변수와 처리 로직이 다르다. 전송 클래스는 변수로 messaging_log 테이블의 레코드를 받게 되는데 누구에게 어떤 이유로 어떤 형식의 메일을 보냈는지가 기록되는 테이블이다. 이 테이블에 기록을 남기는 메일은 프로덕트 리뷰 서비스로 발생하는 것들만 포함된다. 첫 리뷰 요청 메일이라던가, 장기간 사용 리뷰 요청 등등 정책에 의해 메일이 전송되어야 할 경우, 해당 메일 전송을 예약하기 위해 전송 대기 상태로 저장해둔다. 1달 후 보내져야 할 메일은 그 시간이 기록된 채로 테이블에 저장되고, 어떤 타입의 메일들은 저장된 즉시 처리되어 전송완료 상태로 변경된다.
...