12P by leelou2 2달전 | ★ favorite | 댓글 22개

AWS SES로 대량 이메일을 발송하는 서버를 Rust(Axum)로 만들었습니다.
뉴스레터, 알림 메일 등 한 번에 많은 메일을 보내야 할 때 사용할 수 있습니다. SES 샌드박스만 탈출하면 바로 사용 가능하고, SQLite 기반이라 별도 DB 서버 없이 단독으로 돌릴 수 있습니다.
주요 기능
요청당 최대 10,000개 이메일 일괄 발송
예약 발송 지원 (scheduled_at)
Token Bucket 기반 초당 발송량 제어
AWS SNS 웹훅으로 Bounce/Complaint/Delivery 이벤트 수신
1x1 픽셀 기반 오픈 트래킹
왜 Rust?
Tokio 비동기 런타임 위에서 동작하고, 메모리 사용량이 적어서 오래 띄워둬도 안정적입니다. 한 번 배포하면 신경 쓸 일이 거의 없습니다.
AGENTS.md
프로젝트 구조, DB 스키마, 코드 스타일 가이드를 AGENTS.md에 정리해두었습니다. Cursor나 Copilot 같은 AI 코딩 도구가 프로젝트 컨텍스트를 빠르게 파악할 수 있어서, AI와 페어 프로그래밍할 때 편합니다.
피드백이나 PR 환영합니다.
GitHub: https://github.com/lee-lou2/aws-ses-sender

이런 느낌의 개인 프로젝트 홍보가 꾸준히 올라오는데 소개글만 봤을땐 사실 스스로도 의미있게 사용할지 의문이 듭니다. AI 사용에 대한 거부감도 생기구요.
느낌이 취업이 목표인 것 같은데.. 채용 기준은 사람마다 천차만별이지만 이런 프로젝트들로 채워진 이력서가 크게 도움이 될 것 같진 않습니다.

의미있는 문제해결을 하신거고 제가 착각한거라면.. 좀 더 문제 해결 경험을 소개를 해주시면 좋을 것 같네요.

취업 준비행의 마음이 급한건 이해합니다만
이런식의 커뮤니티 활동 기록은 취업에 전혀 도움이 되지 않습니다.

그냥 이메일 일괄로 보내는게 무슨 의미가 있는 프로젝트인지도 모르겠고, 코드는 안봐도 AI가 작성했을 것 같습니다.

회사입장에서 작성자분을 채용하기보단 AI구매가 합리적으로 느껴지지 않을까요?

오픈소스 활동을 하실거면 이런것보단 그냥 큰 프로젝트를 가셔서 한줄이라도 고치고 진짜 문제를 해결 하시길 바랍니다.

그리고 취준생분들.. 제발 기초 CS 를 공부하세요. 전공자라면 대학교 수업을 무시하지말아주세요..

Geek show가 이런 용도이니 그것에 대해 뭐라고 할순 없을것같습니다. 메인 피드에 올라오면 강렬한 저항을 받으시겠지만요!

다만 피드백을 저자분께서도 피드백을 원하시고, 저 또한 저자분께서 만드신 해커뉴스 메일링을 구독하고 있는 이용자로서 몇자 감히 적어보겠습니다!

우선 러스트 언어로 프로젝트를 진행하시는데 이것을 웹 백엔드로 사용하실 경우 목표 성능을 훨씬 높게 잡으셔야 됩니다. 사실 지금보다 최소 80~배 이상 tps는 뽑을 수 있습니다. 지금 성능은 러스트라는 러닝커브가 가파른 언어를 사용한 비용 대비 성능이 아에 못따라가는것같습니다. (따라서 러스트 경험자라면 1만 tps는 오히려 퀘스천 포인트를 줄수있을것같습니다. Aws가 병목지점이면 바이패스를 하셨어야 될것같습니다. 실제 러스트의 장점을 제대로 레버리지 하고있는지 의문이 들것같군요)

그리고 잘 아시겠지만, 요즘은 llm과 바이브 코딩으로 인해 넓게 아는 개발자보다 깊게 아는 개발자가 좀 더 우대받는 시대가 되어가고 있는것 같습니다. 넓게 아는건 llm을 레버리지 하면 되니까요! 시니어가 그냥 한두시간 더 추가근무해서 llm으로 생산성을 내면 주니어 한명 채용하는것보다 비용효율적인 세상이 온것같습니다.

따라서, 깊이있는 프로젝트를 geek show로 보여주시는게 어떨까요? 남들이 느낀 페인포인트를 해결하는 서비스(해커뉴스 요약 서비스는 이런면에서 잘 사용하고 있습니다 :)!) 나 성능으로 압도적인 프로젝트(왠만한 개발자들도 이건 나도 힘들겠는데 수준), 프론티어급 태스크에 도전(에이전트 개발을 통해 벤치마크 이기기) 등 이런것들이 있을것 같습니다!

착하고 유익한 댓글!

앗 그리고 한가지 더요! 혹시 그냥 자기만족용 사이드 프로젝트면 readmd를 마음대로 작성하셔도 된다고 생각합니다만, PR의 의도가 1%라도 있으시면 llm이 만든 리드미는 지양하셔야 될것같습니다! 필요없는 내용들이 너무 많이 나와서 피로감이 상당하거든요!!

같은 러스트 사용자로서 더 좋은 프로젝트 기대하겠습니다! 화이팅!!

저는 email 발송성능보다
bounce 랑 스팸 처리 되는 부분 + 수신거부기능이 더 중요할꺼 같습니다.
https://listmonk.app/ 를 좀 참조하시고 필요한 기능을 넣는게 더 좋을거 같아요.

전적으로 같은 의견 입니다만, 최소 80배 이상 목표 성능을 높게 잡으라는 말은 약간 동의하기 힘드네요.

성능이 정말 문제가 되느냐?와 정말 높일 수 있느냐 두 관점 모두 에서요.

전자는 배치 발송에 1초가 걸리던 80초가 걸리던 별 차이는 없을 것 같고,
후자의 경우 techempower 벤치마크에서 axum은 단순 단일 쿼리 벤치마크에서도 120만 TPS 수준에 머무르는데,
그 보다 복잡한 메일 전송에서 최소 80만 TPS를 달성할 수 있을까 하는 의문이 있습니다.

AWS SES를 바이패스 하라고 하셨는데, 이메일 보내는데 SES 보다 월등히 빠른 방법이 있을까요?

제가 웹백엔드 엔지니어가 메인이 아니고 퍼포먼스 엔지니어 관점에서 kpi를 잡아서 목표치가 높게 설정된것 같습니다.

일단 첫번째 질문에 대해선, 아무래도 다른 언어 대비 러스트를 채택하면 일정량의 생산성을 버리고(상대적으로) 퍼포먼스(비용대비) 를 노리겠다는 가정일것 같습니다. 그러면 성능이 문제가 되는 상황이라고 상정했습니다.

두번째 질문에 대해선, 기본적인 커널 네트워크 파라미터부터, 커널 바이패스, 가장 밑단인 cpu 분기 예측레벨까지 튜닝하면 안된다고 단정하기 힘듭니다. 저는 저자님께 이정도 수준을 바란건 아니였으나 열심히 깎으면 된다 라는 메시지를 전달하고 싶었습니다.

세번째 질문에 대해선, SMTP 엔드포인트 대신 Amazon SES 쿼리 API를 사용한다는 말인데 제가 설명이 짧아서 제대로 전달이 안된 것 같습니다.

https://news.hada.io/topic?id=19280
어뷰징 시도했던 게시자입니다. 주의가 필요합니다

이런 메일러가 제대로 보내질려면
"보내는 것"만으로는 충분하지 않고, 컴플레인이나 바운스된 메일을 트래킹하고
스패머로 간주되지 않도록 dmarc report도 분석해서 평판 관리를 해주면 좋겠네요.

스케줄에 대량 이메일 전송만으로는 그냥 ses 바로 연동해도 되는데 굳이 이걸 써야 하나 싶군요.

그러네요. 이 글도 전에 투표 어뷰징으로 flagged 먹고 다시 올리셨네.

flagged 처리된 글에도 작성해두긴 했는데 약간의 해명을 하자면 다음과 같습니다
우선 저는 개발을 무척 좋아하는 개발자입니다 새로운걸 만드는걸 좋아하고 만들걸 보다 많은 사람들과 공유하며 조금이나마 도움이 되길 원하는... 그런 개발자입니다
그래서 개인의 이익이 목적이 아닌 프로젝트들을 만들고 공유했었어요
그러다가 이 사이트를 알게됐고 글을 쓰게 됐습니다
그런데 계정 생성이 아무런 인증없이 된다는걸 알게됐어요. 그래서 비슷한 계정 2개정도를 더 만들었어요
그렇게 만든 계정으로 제가 작성한 글에 favorite 를 누른게 다입니다
분명 제가 잘못한 부분이 있습니다 하지만 이게 이렇게 제가 좋은 목적으로 만든 프로젝트가 안좋게 비춰질만큼 잘못된 행동이 된 것에 대해 무척 유감스럽게 생각하고 있습니다
앞으론 더 신중하게 글을 쓰며 좋은 영향을 줄 수 있게 노력할 예정입니다
관심을 가져주셔서 감사합니다 🙇‍♂️

이 분은 순도 100% 자기 PR용으로만 긱뉴스를 사용하시는듯…

단축링크 사용하지 마세요

어디로 연결되는지 예측할 수 없고, 영구적이지 못할 수 있고, 어떤 추적을 할지 모르니 꺼리게 됩니다. HN에서도 단축링크 사용시 불이익이 있는걸로 압니다.

확인이 늦었네요 답변 감사합니다!

GeekNews 가이드라인에는 "원문 링크가 아닌 단축 URL로 올라온 글은 삭제됩니다."라고 나와있습니다.

이것도 몰랐네요 알려주셔서 감사합니다!

설명이 부족해서 조금 오해하시는 분들이 많으시네요 😭
취업 목적도 개인의 이익을 위한 프로젝트도 아닙니다
또한 AI를 적극 사용하긴했지만 아무 생각없이 AI에만 의존해서 생성한 프로젝트가 아닙니다
실제로 코드를 하나씩 보시면 제가 많이 고민하고 많은 관여가 있었다는걸 아실 수 있으실거예요
부디 프로젝트를 확인 후에 평가해주시길 조심스럽게 요청드립니다
감사합니다 🙏

코드나 커밋 로그에는 의사결정 결과만 있고 과정이 없는데 어떻게 고민한 흔적을 볼 수 있죠? 오해한 사람들이 프로젝트를 보지 않았다고 가정하시는 이유도 잘 납득이 안 됩니다

투표 어뷰징은 어쩔 수 없는 현상이라고 봐야하나...