メールニュースレターサービスのインフラストラクチャの構築方法:Pechkin-mail.ruエクスペリエンス





メーリングリストは、プロジェクトの販売およびマーケティングサポートを増やすための効果的なツールです。 そのため、ますます多くの企業が適切なツールを使用してニュースレターを作成および実装しています。



今日のトピックでは、 Pechkin-mail.ruプロジェクトの例を使用して、このようなサービスのインフラストラクチャの構築方法について説明します。



そのようなサービスが必要な理由



よくある誤解は、電子メールニュースレターを作成するためのサービスがスパマーによって使用され、バイアグラの購入に関するオファーを含む手紙を送信することです。 実際、会社のニュースレター(たとえば、ウェブサイト)を購読している人のアドレスにメールを送信するには、私たち(または外国のMailchimp)のようなサービスが必要です。つまり、彼らは明示的に手紙を受け取ることに同意しました。



企業は、システムの動作に関する情報メッセージを顧客に送信したり(Habréに関する新しいコメントの通知など)、商品や割引を提供したりすることができます(このような手紙の受信を中止できます)。



スパム送信者との立派な電子メールサービスは、電子メールサービス自体の制裁の対象にならないように、単に機能せず、送信されたコンテンツを厳密に管理します。



仕組み



実際、サービスPechkin-mail.ruはそれ自体ではレターを配信しませんが、最終的なhtmlコードの形式でレターを作成し、MIME形式で生成し、パーソナライズし、レターの運命を追跡します(開かれているかどうかなど)それらをメールボックスに入れます。







このタスクには多くのESPがあります-andrill、smtp.com、mailgun、sendgridなど。 これらのクラウドベースのメールプロバイダーを使用して、非常に高いレベルの電子メール配信、IPアドレスプールの高い制御性、および低いレベルの運用コストを実現できます。



技術の選択



ビジネス向けの負荷の高いWebサービス(数百および数千のユーザー)を作成した経験から、技術的な性質の主な費用は現在のコードのサポート、新しい機能の開発に費やされていることがわかります。 給料のためのトライト。 それが、プログラミング言語や他の技術を選ぶ際に賢明でないことが多い理由です。 理解すべき最も重要なことは、問題の99%が正しいアーキテクチャで対処できることです。



以下は、Peckin-mailプロジェクトの主な技術的特性に関する情報です。



プログラミング言語


このサービスはPHPとJSで書かれています。 同時に、一部の関数は独自のCライブラリを使用します(それらの作成は別のトピックのトピックです)。



データベースとOS


郵便サービスは非常に負荷の高いサービスです。1日に最大1,000万通の手紙を送信します。 また、これらの文字のかなりの部分が追跡されます(開始、クリックなど)。 これはすべてデータベースクエリを生成します。 したがって、必ず問題を回避する必要があります(障害は一般に受け入れられません)。



この問題を長い間解決し、Perconaのクラスターに到達しました(その設定に関するHabréの優れた記事があります)。 これは、マスターマスタレプリケーションを備えた、フェールセーフで水平方向にスケーラブルなクラスターです(パフォーマンスを犠牲にすることなく「ホット」バックアップを行うことは素晴らしいボーナスです)。



Perconaは、ビジネスロジックを実装し、レポートを生成するために使用されます。さらに、MongoDBを使用して、レターを送信するプロセスでさまざまなデータのキューおよびオンラインストレージを使用します。 DebianはOSとして使用され、仮想化はOpenVZを通じて実装されます。



鉄とチャンネル


前述のように、メーリングリストサービスの機能は、大量のデータを頻繁に処理する必要があることです。 これは、高速ディスクなしでは実行できないことを意味します(現在はSASを使用していますが、もちろんSSDが最適です)。



現在、Pechkin-mail.ruサービスは、DELL PowerEdgeTM R720 DX-150 64Gb RAM、4x600Gb SAS、Hetzner EX-5、Hetzner EX-10サーバーで実行されます。 さらに、Amazon EC2(ピーク負荷の場合は10インスタンス)とSelectel Storageが使用されます。これは、顧客の写真をホストし、郵送先への配信を担当します(コストの関係で、すべてのユーザーにお勧めします)。







また、高品質で幅の広いチャネルが非常に望ましい-SMTPトラフィックは非常に重く、多くの場合、これらは短時間で数十万人の受信者に送信される画像やコンテンツです。 平均150 KBのメーリングリスト(ほとんど画像がなく、サードパーティのサーバーでホストされている)を使用する場合、10,000のサブスクライバーに送信することでも1.5 GBのトラフィックになります。 システムを設計するときは、このことに留意する必要があります。



重要な機能



優れたメールサービスは、多くの問題をうまく解決できるはずです。 以下は、このようなツールの最も重要な機能のリストです。



住所データベースを使用する


顧客データを処理するサービスを使用するには、この情報をダウンロードする速度と容易さが重要な役割を果たします。 メーリングリストサービスでは、電子メールアドレス、名前、姓、その他の追加データを含むアドレスデータベースを迅速かつ簡単にダウンロードすることが重要です。



これらの目的のために、 多数の Excelと商用ライブラリlibxlを実装しました。最終的に判明した内容の説明は、Habréに関する別の記事で公開されています。



さらに、Pechkinは、たとえば、以前のメーリングでのサブスクライバーのアクティビティまたはデータベースにアドレスが追加された日付に応じて、アドレスベースのフィールドに基づいて、メーリングをセグメント化する機能を提供します。







ニュースレターを作成する


電子メールのレイアウトは、独立した非常に興味深いトピックです。 メーリングリストのレイアウトルールを公​​開し、 YouTubeビデオをメールに埋め込む方法について説明しました。



さらに、しばしばニュースレターのプレーンテキストバージョンを作成する必要があります-このタスクを自動化し、lynxテキストブラウザーを使用してHTMLからのテキストバージョンのレターのジェネレーターを開発することを決定しました(このソリューションの詳細についてはこちらご覧ください)。



さらに、郵送の有効性に関する統計に基づいて、手紙の送信を微調整できます-たとえば、一定の時間に均一な断片で送信し、A / Bメーリングを作成します(ヘッダー、メッセージテキストなどの異なるオプションの有効性をテストする2つの郵送) 。



スパムの戦い


メールマーケティングサービスの主なタスクの1つは、スパムとの戦いです。 「Pechkin」では、次のメカニズムによって実装されます。





車輪を再発明する必要はありません



あらゆる種類の松葉杖を作成せずに適切に設計されている場合にのみ、負荷の高いサービスの良好なワークロードを達成できます。 これを回避するために、手頃な価格のクラウドソリューション(Amazon EC2、Selectel Cloud Storage)を非常に積極的に使用しています。 便利で安価です。たとえば、ピーク時に(一度に30通以上のメールを送信する)、Amazon EC2に追加の「インスタンス」を含めます。



インフラストラクチャの適切な構築のおかげで、2014年には99.98%のレベルでサービスアップタイムインジケータを達成することができ、2.5万人を超える顧客の問題を処理できるのは2人のサポートスタッフだけです。



All Articles