高速リレーサーバ「Cuenote SR-S」の魅力
顧客向けの案内メールなどのように一度に大量のメール配信を行う場合、正しく配信されなかったり、遅れて配信されたりするケースが多々ある。代表的な原因としては、配信先の増加によってメール配信システムの時間辺りの配信数の上限を超えてしまうケースや、無効なアドレスを正しく管理できていないケースなどが挙げられる。また携帯電話向けに配信する場合などには、同じドメインから同時に大量のメールを送るとキャリア側の制限によって配信が中断されてしまうことも多い。
リレーサーバであるCuenote SR-Sの魅力は、これらの問題を既存の配信システムに改修を加えることなく導入できるという点である。簡単に説明すると、Cuenote SR-Sはメール配信のためのネットワーク経路上に配置し、他のメールサーバやメール配信システムからメールの文面を受け取って、登録された配信先に転送する。このとき、配信先ごとに配信する速度や時間帯を制御したり、エラーアドレスやバウンスメールの管理を適切に行うなど、さまざまな視点に基づく対策によって前述のような問題を回避し、遅配や不達のない安定したメールの配信を可能にする。
「メール配信の場合、すでに自前のシステムで運用されているというお客様が少なくありません。その場合、既存システムの資産を活かしたい、使い勝手を変えたくないという声も多く聞かれます。Cuenote SR-Sであれば、既存のシステムはそのまま利用しながら、配信速度の向上や配信遅延の解消などを実現し、大規模配信に対応させることができます」(佐野氏)
単にリレー配信するだけでなく、Cuenote SR-Sにはメール文書の生成機能も備えられており、テンプレート機能や文字列の差込機能、ブロック単位での差し替え機能などによって、配信先一通ごとにカスタマイズされたメールを送ることができる。携帯電話の絵文字やデコメールに対応しているため、キャリアごとに適したフォーマットに変換して送ることもできるようになっている。
標準でAPI機能を備えており、外部システムと柔軟に連携できる点も大きな特長。APIを利用することで、サーバの状態や配信状況の確認、ログデータの取得、各種の取得や変更、メールテンプレートの作成やメール送信指示などを外部から行うことができる。
Erlangの採用により、3か月で実装
多くの機能を備えたCuenote SR-Sだが、その特筆すべき点の一つとして、これがErlangを使用して実装されているということが挙げられる。Erlangはエリクソン社によって開発された関数型プログラミング言語であり、ネットワーク通信処理や複数プロセスの並列・並行処理に優れているという特長がある。Erlangを採用するに至った経緯について、佐野氏は次のように語っている。
「最初のきっかけは、Rubyの開発者であるまつもとゆきひろさんが『Rubyistのための多言語探訪』という連載の中でErlangを紹介されていたことです。ネットワーク性能が高く、業務で活用されている実績もあるということで興味を持ち、まずはプライベートな時間に自分で試してみました。そこで意外と使い物になりそうだという感触があり、通信コードを使ったベンチマークでもある程度の性能が出たので、製品開発にも耐えられると判断して会社に提案しました」
実際に製品開発に使ってみた実感として、「とにかくネットワーク処理を実装するのが楽。並列処理について何も考えなくてもいいという点も大きな魅力」と同氏は語る。メール配信システムの場合、高速な送信を実現するためには通信の多重化が必要になってくる。従来製品ではこの多重化処理をC言語で記述していたが、リソース消費量を抑えるためにシングルプロセス・シングルスレッドでのI/O多重化方式を使用していたため、並列制御が容易ではなかった。
その点Erlangの軽量プロセスであれば、プロセス間の状態遷移を意識しなくても、仮想マシンがうまくI/Oの並列化を行なってくれる。1つの軽量プロセスは極めて少ないメモリで動作するため、数万プロセスの並列処理でも問題なく実行することができる。
初めて使う言語だったが、「C言語で記述するよりはるかに楽に実装できた」と佐野氏は言う。開発にかかった期間はおよそ3か月。C言語で実装した既存製品に比べて格段に短期間での開発だったとのことだ。
同氏は、上記の他に、無停止でパッチを反映させられる点や、実行中のVM内部の情報をリモートシェル機能で参照できる点などもErlangの魅力として挙げている。