Vol.02 開発編

「心地よいコミュニケーション」の実現へ。CRM革命への挑戦 開発編

「CRMと広告の連携」によって創造されたサービスを。どこよりも早くお客様に提供したい。そのために、技術の限界を超え続ける。

2015年4月13日、当社のコミュニケーションプラットフォーム「Synergy!」と、Yahoo! JAPANが提供する「Yahoo! DMP」が連携しました。
Vol1の企画編では、Synergy!に格納されているCRMデータとYahoo!JAPANが持つマルチビッグデータの掛け合わせによって実現した「リターゲティングメール機能」がどうやって創造、企画されたかをご紹介いたしました。

今回は、リターゲティング機能がどのように生み出され、リリースされたのか。開発に携わった3名の開発者によるクロストークでご紹介いたします。

Project Member
  • ENGINEER
    プロダクト本部 プロダクト開発部プラットフォームグループ
    末廣 雅利
  • ENGINEER
    プロダクト本部 プロダクト開発部第二プロダクト開発グループ
    N氏
  • ENGINEER
    プロダクト本部 プロダクト開発部第二プロダクト開発グループ
    寺岡 佑起

自動化から問題の早期検知実現に向けて。

末廣我々開発者のミッションは、大きく2つありました。1つ目は、リターゲティングメール機能の実装。2つ目は、新プロダクトや機能開発の「スピードアップ」を目的とした基盤強化です。今回は先に、基盤を強化するために取り組んだ、Synergy!のシステム基盤のリプレイスとプログラムの刷新についてお話します。

我々プラットフォームグループの業務は、アプリケーションを動かすために必要なシステム基盤を構築し、運用管理することです。

今回、このシステム基盤をほぼすべてリプレイスしたので、100台以上の仮想サーバーを短期間で構築する必要がありました。これまではサーバー 1台あたり、5営業日かかっていた構築作業を、すべて自動化することに取り組みました。

小規模なプロジェクトでの自動化の経験はあったので、それほど難しく考えていなかったのですが、Synergy!のサーバー構築の自動化はとてつもなく大変でした。
Synergy! は長年に渡って機能追加を繰り返してきた結果、約30個のアプリケーションが100台以上のサーバーで稼働しており、それぞれに合わせた自動化のレシピが必要だったんです。

そのため、サーバー群で共通する部分、ミドルウェア単位、機能単位といった感じでグループ化していき、最終的には約70種類のレシピを作成しました。その結果、寺岡やN氏のようなプロダクト開発者から来たオーダーに合わせたサーバーを、「約30分」で本番投入することが可能になりました。

今は特に問題ないから・・・といって新しい取り組みを後回しにするのではなく、より良いものを生み出すために挑戦した結果が、業務効率化の実現に繋がったのだと思います。
今後は、サーバー構築をもっと効率化したいです。構築したサーバーのテスト工程が手動で時間がかかっているので、ここを自動化していきたいです。また、サービスの品質を高く維持するために、サーバーの各種ログをリアルタイムに解析して「この宛先にメールを送りにくくなっている」や「Web のレスポンスが悪化しはじめている」といった問題をより早期に検知できるようにしていきたいと考えています。

Synergy!の進化に向けて。

N氏寺岡と私は、Synergy!のプロダクト開発に携わっているエンジニアで、「スピードアップ」を目的とした基盤強化の中で、プログラムの刷新に深く関わっていました。

Synergy!の運用開始は2005年で、10年前に書いたプログラムがいまだに動いているんです。それはそれでとってもすごいことなんですけど、やっぱり当時の最先端のプログラムも、今ではもう古くて処理スピードが遅く、リリース手順も非常に複雑でした。そのため、このような古い部品、要はプログラムやソフトフェアを全部見直し、新しい部品に取り替えることで、簡単に機能追加ができるなど、新しいことがしやすい基盤作りに挑戦しました。

はじめは簡単に思っていたのですが、10年にわたって積み重ねられてきたプログラムの解読に苦しみ・・・この部品を入れ替えると、別の部品にも影響してしまうという「依存関係」に苦しみ・・・運用期間の長いSynergy!のプログラムの梃入れは、本当に困難の連続でした。

それらを乗り越え、プログラムの刷新をし、リリース作業の自動化に向けて取り組みました。

寺岡毎月2回発生する、Synergy!のリリース作業。この中には、プログラムファイルをサーバーにアップするデブロイ作業があり、以前は10人体制で2時間かけてやっていました。というのも、前述で末廣が述べた通り、Synergy!では、100台以上のサーバーが稼働しており、そのサーバー1台、1台にプログラムファイルによって異なるコマンドを手で打ち込む必要があったんです。そのため、デブロイ作業を自動化できるシステムを開発し、今では"ワンクリック"で作業が完了するようになりました。もちろん、どんなプログラムファイルでもこのシステムは活用できます。
この自動化で効率化はもとより、一番よかったのは手作業では防ぎきれない手順漏れや、打ち間違いによるミスがなくなったことですね。

末廣どうしても稼働中の仮想サーバーやアプリケーションに対する変更は、リスクが大きく、なかなかチャレンジし難いものがありましたが、今回のリプレイスがあったからこそ、リリース作業の自動化に挑戦できたんだろうね。

寺岡そうですね。今後も、保守、運用管理などの自動化ができるものは自動化していき、Synergy!本体を進化させるために重要な新プロダクトや機能開発にもっと注力していきましょう!

企業の"やりたい"を実現する。そのために、技術の限界を超える。

寺岡上記で述べていた新仮想サーバーや刷新したシステム上にリリースしたのがVol1で紹介していたリターゲティングメール機能です。Vol1の企画編で紹介していたような「Webサイトに訪問したお客様で、かつ、直近三ヶ月の間に合計○○円以上の購買者にタイムリーにメールを配信する。」といったお客様からの要望をかなえるために、実はかなり悪戦苦闘しました。。

N氏単体であれば比較的簡単なのですが、Synergy!が管理している属性情報や購買情報、さらにトラッキングシステムが管理する膨大なWebサイトのアクセス履歴。この異なる場所で管理されている2つのデータを瞬時に呼び出し、紐付け、条件に合致した場合のみ、タイムリーにメールを配信する。これをどうやって実現するか。その部分の難易度がとても高かったです。具体的な方法はお伝えできないのですが、トラッキング、イベント、データ結合、配信処理といった4つのシステムを、何度も試行錯誤を繰り返し、上手く連携させ、お客様の要望を反映したリターゲティングメール機能を実現させました。

寺岡私たちは、上司にいつも「できないとは絶対に言うな。」と言われています。
お客様が求める1歩先を行く新機能をカタチにすべく、我々は、ただただ最善を尽くすのみです。
こうして開発された技術が、不可能だといわれていた技術の限界を超えた瞬間は、なんとも言えない喜びがありますね。

お客様が求めるサービスを。どこよりも早く。そして安定的に。

寺岡新サービスの開発を、よりスピーディーにしたいですね。
今回構築したリターゲティングメールシステムでは、配信対象の抽出機能、メール配信機能などはすべて切り離し、マイクロサービスで開発しています。マイクロサービスで開発しておくことで、プッシュ通知といった新サービスにおいて、抽出機能が必要になった場合、一から開発する必要はありません。
なぜなら、リターゲティングメールシステムの抽出機能を呼び出すだけで、同じ機能を利用することができるからです。

このマイクロサービスで開発されている機能の組み合わせによって、開発期間を圧縮し、さらにより良いサービスをリリースしたいと考えています。

N氏スピードは私たちの至上命題となっています。
加速化する顧客ニーズ、市場ニーズの変化に合わせ、競合も新プロダクトや機能をリリースしており、それに負けないスピード感が求められています。今回の基盤強化もスピードを上げるためには必要不可欠なファクターでした。リリースのスピードアップには成功しましたので、次はプロダクト開発に大きなメスを入れていきます。

末廣私は「安心して利用できる安定的なシステム基盤の提供」ですね。
これは本当に当たり前なことですが、すごく大切なことなのでいつも意識しています。フロントランナーのページにも「究極は、自分たちの仕事をなくすこと」と話した通り、私たちの仕事がなくなるくらい、安心、安定的なシステムを提供したいと考えています。

今後、TOPメッセージにもあるCRM革命の実現を目指し、様々な機能を実装していくことで、インフラ規模の拡大や安定的なサービス継続の重要度が増していきます。お客様のご要望をかなえるとともに、お客様が管理する顧客データの件数が膨大になったとしても、基盤とアプリケーションがそれに耐えられる状態、いつもとなんら変わることなく稼働できる状態を創り上げたいです。

N氏営業がお客様に自信を持って提案することができるCRMツール。
それはきっと、革新的で、かつ、お客様が安心してご利用いただけるプロダクトでなければ成しえません。最先端のマーケティングテクノロジーでコミュニケーションをよりよくするプロダクトを、爆速で開発していきますので期待しておいてください!