Go back
mailcheck image-1 mailcheck image-2 mailcheck image-3

Mailcheck

Валидации списков емейл рассылки на предмет несуществующих ящиков. Сервисы массовых рассылок требуют чтобы bounce rate (процент не существующих ящиков) был ниже определенного предела, если порог превышен аккаунт блокируют. Поэтому при работе со старыми или покупными базами их необходимо предварительно чистить. Сервис решает задачу очистки списков рассылки от не работающих ящиков.

Проект позволяет либо интегрироваться с несложным API для проверки ящиков на лету, либо воспользоваться веб интерфейсом для загрузки списков в формате .CSV или .TSV, с возможностью настройки этого импорта. Далее сервис каждый емейл пропускает через набор внутренних сервисов, как-то проверка емейла на "одноразовость", проверка на существование домена и почтового сервера, поиск ящика в социальных сетях и т.п. На выходе мы даём пользователю результат проверок, из которого он может принять решение слать или нет письмо на этот ящик.

Для решения задачи сервис разбит на разные подсистемы. Лендинг, кабинет, апи шлюз, сервисы проверки. В следствие специфики задачи включение и отключение проверки должно быть максимально простым процессом. К примеру сейчас у нас есть Google plus верификация, но вдруг Google plus закрывается, мы должны оперативно отключить эту проверку.

Для API мы выбрали Google App Engine и golang. Одна из проблем сервиса - необходимость в постоянной ротации ip адресов. Соответственно если мы не хотим заниматься закупкой и менеджментом блоков ip адресов то нам выгоднее прописаться на каком-то облачном сервисе, без привязки к конкретным ip адресам. И тут Google app engine очень даже хорош, поскольку каждый инстанс получает новый ip, а средняя жизнь инстанса всего пара минут. Вторая задача которую решает App Engine - стоимость масштабирования. В момент когда нет файлов в обработке у нас нет костов. Но как только приходит файл в оборотку необходимо максимально быстро его обработать. В случае большой базы для обработки может понадобиться много ресурсов. Разница между пиковым потреблением и штатным в сотни раз. И тут нам очень помогает то что время старта инстанса в Google app engine всего пара секунд. Далее если минуту он не получает нагрузки - инстанс будет погашен. То есть у нас очень дешёвая стоимость эксплуатации и нет затрат на саппорт оборудования. У нас нулевые косты на эксплуатацию. На момент написания appengine standard инстансы умели работать с java, python, golang. Мы выбрали golang как наиболее подходящий для и написания апи и микросервисов - это его прямое назначение. Сейчас можно запускать NodeJS инстансы, что позволяет новые и сервисы писать на нем. Для фронтенда мы выбрали Angular material.angular.io мы нарисовали дизайн который был бы максимально неинвазивен по отношению к материал, таким образом мы можем использовать очень качественные компоненты из состава material для Angular и в то же время имеем свой собственный стиль, не похожий на обычную админ панель. Для авторизации, хостинга, хранения данных пользователей мы используем Google Firebase. Он за нас реализует механизмы авторизации согласно всех требований GDPR. Далее мы используем Firebase Storage для загрузки данных для обработки в обход сервера, напрямую в Google storage. И самое невероятное - firebase FireStore, документая бд в составе firebase это нам самом деле cloud database из appengine. То есть у нашего API и фронтенда общая база данных. Это позволяет нам на фронтенде реализовать сбор данных по настройкам пользователя для дальнейшей работы appengine. Для процессинга платежей выбран stripe.com - причин две - он позволяет построить гибкую систему оплаты с подпиской оплатой по факту использовался. Тарифные планы как у нас невозможно реализовать обычным мнэерчантом, но весьма просто в страйпе. Мы продаем человеку подписку, на месяц. Покупка подписки определяет цену конкретной валидации, а далее по итогам месяца мы выставляем счёт за проработанный объем. Вторая причина использования страйпа - он фактически заменяет нам админ панель управления сервисом. В нем мы ведём как клиентов и их оплаты, так и учёт тарифов и использования нашего сервиса каждым покупателем. Для хранения аналитической информации мы используем Google BigQuery, это datawarehouse решение, рассчитанное на бесконечное хранение данных. К этой базе можно подключать Data Studio для получения визуализаций и реалтайм дашбордов.

mailcheck.co