CI 묻고 답하기

제목 AWS SES 메일 발송 개선 및 email queue 적용 검토 (postfix 사용)
카테고리 CI 2, 3
글쓴이 골드잉여 작성시각 2020/05/20 15:11:56
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 11711   RSS

AWS SES 메일 발송 속도 개선 및 email queue 적용을 검토하고 있습니다.

아래의 2안)으로 개발을 하려고 하는데, 방향이 맞는 것인지 의견을 여쭙기 위해서 질문을 올립니다.

 

▶ 현재 상황을 먼저 말씀드리면 다음과 같습니다. 

- aws 서버의 postfix 메일을 사용하여 보내다가 메일 발송 실패가 되는 것이 너무 많이 발생하였습니다. 

- aws ses의 smtp를 적용하여 메일을 발송하였고 발송 실패 문제는 해결되었습니다. 

- 새로운 문제가 발생했는데 smtp로 메일을 보낼 경우, 건당 2-3초 정도의 딜레이가 발생합니다. 

- 이 딜레이는 메일을 smtp 보낼때마다, connecting하면서 생기는 것으로 파악했고, 5개를 보내면 각각 2-3초씩 10초 정도가 발생합니다.

- 게시판 글을 작성하면 담당자에게 메일을 보내는 기능도 있는데, 담당자가 5명이면 메일 전송이 완료될때까지 10초 정도의 글을 등록하는 딜레이가 생깁니다.  

- 속도를 개선하는 것보다는 queue를 만들어서, 홈페이지를 사용할 때에는 딜레이게 없게 해야한다는 것이 현재의 문제 인식입니다. 

- 이부분에서는 config/email.php에서 바로 smtp를 설정하였기에, postfix가 전혀 관여하지 않는 것이 맞는지요? (postfix를 세팅하면서 기존에 메일 보내던 것에 오류가 발생할까봐 걱정이 됩니다)

 

▶ 고민해본 개선 방법 

1안) 자체적으로 대기열(DB table)을 개발하는 방법 (코드이그나이터에서 aws ses smtp 유지)

- 딜레이를 없애기 위해서, 데이터베이스에 테이블을 직접 만들어서 메일 내용을 대기열에 넣고, 이 테이블에 있는 것을 다시 발송해주는 것을 생각했습니다. 

- cron을 쓰던, 어떠한 방법을 써도 서버의 부담이 가중되는 것 같고, 파일첨부 등 깔끔하게 처리하기 힘들 것 같았습니다.

- 조금 찾아본 결과 굳이 이렇게 새롭게 개발할 필요 없이, postfix를 사용한 2안)으로 개발하면 될 것 같았습니다.

 

2안) codeigniter에서 postfix로 전송, postfix에서 aws ses smtp로 전송. 

- codeigniter에서는 postfix로 메일을 보내는 방식으로 그대로 세팅을 합니다. 

- postfix에서 aws ses smtp로 보내는 세팅을 합니다. 

- 이렇게 하는 경우, 메일이 많아져도 postfix에서 자체적으로 queue를 관리하고, 파일첨부 등의 모든 문제를 postfix에서 알아서 처리해주는 것으로 생각했습니다. 

- 이렇게 하는 경우, 기존 코드의 수정도 최소화됨 (config/email.php만 수정하면 되고, postfix 세팅만 수정하면 됨) 

- postfix에서 queue에 있다가 실패하는 경우도 많을까요? 이부분도 따로 관리를 해주어야 하는지 궁금합니다.(관리 포인트가 늘어난다면 이부분도 부담이 되기는 할 것 같습니다.)

 

2안)으로 진향하려고 하는데, 틀린 방법은 아닌지, 또는 다른 더 좋은 방법이 있는지 확인차 문의를 드리고 싶습니다.

긴 글 읽어주셔서 감사합니다.

 다음글 컨트롤러(클래스) 관련 질문입니다. (2)
 이전글 join table update 문의 (2)

댓글

변종원(웅파) / 2020/05/27 10:06:37 / 추천 0

aws에 설치한 postfix 서버가 어느정도를 발송할 수 있는 서버인지 파악을 하셔야 합니다. 서버허용치를 넘어가면 실패가 나올 수 밖에 없습니다.

시간당 최대 전송량을 파악하고 거기에 맞게 스케줄링하시는 방법, 말씀하신대로 큐를 사용하는 방법

qmail 서버 구축해서 20만통 에러 없이 전송(부정확하거나 반송된거 제외)을 했었습니다. 우선은 메일서버에서 에러 없이 최대로 보낼 수 있는 허용량을 파악하는게 첫번째입니다.

골드잉여 / 2020/05/28 16:30:07 / 추천 0

@웅파님

답변이 아무도 없으셔서 혼자서 계속 고민하고 있었는데, 감사합니다.

저의 경우는 20만통까지는 아니고, 많아야 1만통 정도 보내게 될 것 같습니다.

postfix가 문제 없이 처리할 수 있는지 확인해보고 적용해보겠습니다.

적용이 잘 되면, 다시 답변달도록 하겠습니다.

골드잉여 / 2020/09/11 16:43:37 / 추천 0

postfix로 세팅을 aws ses로 연결하고, CI를 postfix로 바꾸었습니다.

실제로 전송속도도 비교가 안되게 빨라졌고, 세팅도 인터넷 자료들 참고하여 어렵지 않았습니다.

CI와 aws ses smtp를 직접 연결하면, 1통당 2-3초씩 연결에 시간이 걸리니 위와 같이 postfix를 사용하는 것이 더 좋은 것 같네요..

세팅이 살짝 수고로운 것 말고는 단점을 모르겠습니다. 감사합니다.