У нас есть сайт электронной коммерции с примерно 500 000 активных клиентов. Мы регулярно отправляем новостные рассылки через внешнюю почтовую службу (https://www.campaignmonitor.com/) Однако по мере роста компании и увеличения числа наших клиентов расходы на нашу рассылку возрастают.
Недавно я столкнулся с Amazon SES, который идеально подходит для нас, поскольку они дешевы, и, поскольку мы уже используем AWS для наших серверов, это упрощает обслуживание. Я знаю, что есть более дешевые альтернативы, но я бы предпочел придерживаться Amazon SES.
Допустим, я создаю в своей системе информационный бюллетень, который рассылает электронное письмо всем, у кого сегодня день рождения. Так получилось, что сегодня у 400 000 человек день рождения, и отправлено 400 000 писем.
На следующий день у оставшихся 100 000 человек есть дни рождения, а также еще 100 000 человек, которые вчера уже получили электронное письмо с днем рождения, но изменили дату своего рождения на этот день, потому что они ввели это неправильно при регистрации. Теперь система видит 200 000 электронных писем для отправки, но должна знать, что нужно отправить только 100 000 из них, потому что 100 000 уже получили электронное письмо за период времени (365 дней).
У меня проблема с базой данных и эффективностью скриптов.
В первый день я сохраняю адреса электронной почты 400 000 человек в таблице «отправлено».
На второй день я получаю список всех адресов электронной почты для отправки. У меня тогда есть следующие варианты:
Я понимаю, что это очень крайние примеры, которые никогда не произойдут в реальной среде, но я бы предпочел (заново) реализовать это правильно сейчас и не пересматривать это снова в будущем.
Если в Amazon SES встроена эта функциональность, я хотел бы узнать, где я могу ее найти! Я искал их документы, но не вижу этого.
У кого-нибудь есть опыт в этой области или есть какие-то предложения? Я несколько дней ломал голову, пытаясь найти хорошее решение, но я просто не могу ничего найти.
ПОМОГИТЕ! 🙂
РЕДАКТИРОВАТЬ: я использую MySQL. Я изучил No-SQL, но не чувствую, что это необходимо.
РЕДАКТИРОВАТЬ: День рождения вещь просто пример бюллетеня. Это должна быть полностью общая система, которая не основывается на каких-либо предопределенных представлениях о том, что содержат данные.
РЕДАКТИРОВАТЬ: сервер уже реализует хорошие методы электронной почты, такие как SPF, DKIM и т. Д.
РЕДАКТИРОВАТЬ: Я решил реорганизовать вещи и создать свой собственный индексатор на основе файлов и / или памяти, который в некоторой степени решает проблему. Дело закрыто, по крайней мере, на данный момент.
Вы можете написать свою собственную систему или использовать существующий инструмент. На Google Sendy https://sendy.co/ приходит как первый результат для «php mysql SES newsletter», который, похоже, подходит вам по списку отправленных вами тегов. Есть тысячи других программ на основе PHP / Mysql, которые могут вам подойти. Тот выглядел довольно опрятным.
Что касается обеспокоенности по поводу нагрузки на сервер. Я бы раскрутил «маленький» экземпляр в AWS и использовал бы его только для своей почтовой системы. Таким образом, вам не нужно беспокоиться о длительных процессах или тайм-аутах, которые могут вызвать проблемы на рабочем сайте. 200 000 или 500 000 записей на самом деле не так много. Могу поспорить, что вы тратите больше времени на ожидание ответа Amazon SES, чем на ожидание возврата или анализа.
Других решений пока нет …