今回のソリューション:【Couchbase/カウチベース】
〜ハイパフォーマンスで信頼性も高いNoSQL「Couchbase(カウチベース)」の使い方〜
エンジニアがリアルタイム処理を扱う場合、データベース管理システムにはRDBMSよりNoSQLが選択されることが多い。データ構造や機能をシンプルに抑えてハイパフォーマンスを実現するNoSQLデータベースだが、システムによって一長一短があり、プロジェクトに最適なものを選ぶのも一苦労だ。
日本で初めてDMP(※1)を開発し、マーケティングオートメーション「SATORI(サトリ)」の事業責任者を務めるトライアックス株式会社の太田 祐一さんは、SATORI開発に当たって、NoSQLデータ管理システム「Couchbase(カウチベース)」を選択したという。
Aerospike(エアロスパイク)やCassandra(カサンドラ)という他の選択肢がある中でなぜカウチベースを選択したのか、太田さんに話を聞いた。
(※1)WEBサイト上のユーザー行動のログデータなどを一元管理、分析し、広告配信などマーケティング活動の最適化を実現するためのプラットフォーム
マネックスから起業 アドテク領域で日本発のDMPを開発*
マネックス証券のテクノロジー部に新卒で入社し、金融のマーケットデータを分析しお客様に合ったポートフォリオを提案するアプリの研究開発していました。「アメリカの景気は良くなる」とか「中国の景気が良くなる」といったお客様個人の予測を入力すると、予測に合った最適なポートフォリオを出してくれるようなものです。
研究の中で、過去の時系列データの分析を続けていたんですが、途中であんまり意味ないんじゃないかと思ってきたんですね(笑)。というのも、例えばどこかの会社でリストラや債務超過のニュースが出てしまえば、理論関係なく株価は上下するんです。ポートフォリオ理論は、長期的なリスクコントロールにとっては意味があるんですが、「お客様に短期的にお金を儲けてもらうには、過去データ分析によるポートフォリオの提案よりも勘の方が効くなあ」と思いました。
そこで、ニュースが出た瞬間に内容を分析し、マーケットに反映される前に売買を実行できるようなシステムを開発し、ニュースキュレーションメディアも同時に運営しようと考えて独立しました。しばらくサービス開発を続けましたが、あるきっかけでアドテクの会社に入り、日本初となるDMPを開発しました。
▼WEBサイト上のユーザー行動ログを一元管理、分析するDMPの仕組み
その会社のDMP部分を切り出して、オウルデータという会社を作って代表に就任しましたが、こちらは2014年の2月にサイバーエージェントに買収をされました。
DMP・メール・CMSを組み合わせマーケティングの全てを自動化!
買収後、次に何をしようかと考えていたのですが、それまでやってきたDMPをメールの自動配信やCMS(※2)などと繋げ、広告も連動した、ワンストップのマーケティングオートメーションツールを開発すれば、いいものができると思ったんですね。例えば、DMPに蓄積したデータをもとに、CMSを使いHPのコンテンツの出し分けができたら価値がありますよね。
(※2)技術的な知識がなくてもウェブコンテンツを構成するテキストや画像などのデジタルコンテンツを配信できるシステム
データ収集、分析から施策実行までマーケティングのすべてを担い自動化できれば、お客さんが製品・サービスの開発自体に集中できます。そこで、CMSを開発していたトライアックスに参画しSATORIの開発を始めました。
SATORIでは、データベースに蓄積した個人情報にユーザーの行動履歴を紐づけることができます。そしてその行動履歴をもとに、ユーザーの志向性に合った広告やメール、ポップアップ、ウェブコンテンツをリアルタイムで配信できます。
▼ユーザーの行動履歴を元にリアルタイムのマーケティング活動が可能
低価格でハイパフォーマンスを実現するカウチベースを選択
大量のデータを貯めるだけであれば難しくないんですが、その行動履歴を元にして「リアルタイム」にメールや広告配信のアクションを起こすのが難しい部分です。
レスポンス性能とビジネスに合わせたスケールアウトのしやすさが求められるので、データベース管理システムは「メモリにKeyもValueも載せることもでき、かつ拡張性、冗長性が高い」という条件が必須です。弊社のリードエンジニアである池上とも相談し、選択肢にはエアロスパイク、カサンドラ、カウチベース、Amazon DynamoDBが残りました。
エアロスパイクはパフォーマンスが素晴らしいんですが、サポートがつくこともあり、値段が高いです。カサンドラは前にプロジェクトで使ったことがあったのですが、Readのパフォーマンスが出なかったのでやめました。Amazon DynamoDBは当時データ容量に制限があり、また、当時開発言語としていたGoとの相性が良くなかったため、最終的には、サポートを付けなくても利用でき、エアロスパイクに性能的にも劣らないカウチベースを採用しました。
他にMongoDBなども考えとしてはあったんですが、個人的に使っていた時にデータが喪失したことがあったんです。その点、カウチベースは素晴らしく今までデータを喪失したことは1度もありません!
ウェブコンソールが備え付けられているのが便利!
今のところ僕の中で一番いいと感じているのは、ウェブコンソールがしっかりしている点です。どうしてもKVS(※3)はデータの中を見るのが面倒だったりするんですね。以前にカサンドラを使っていたときは、カサンドラCLIに入って色々コマンドを打たないとデータが見れなかったんですが、カウチベースは、ウェブコンソールから入るとリアルタイムにデータの中を見ることができる。また、サーバーノードの追加もIPアドレスを指定して「add server」を押すだけで可能です。
(※3)データの保存・管理手法の一つ。保存したいデータ(value)に対し、対応する標識(key)を設定し、ペアで保存する方式。
▼ウェブコンソール内でリアルタイムにデータを見ることができる
他のNoSQLでもこういった便利ツールは、自分で作ればできるんですが、カウチベースはもともと備え付けられているのが非常にいいです。パフォーマンスに関しては昔カサンドラを使っていた時より20倍ほどになりました。ただ、アーキテクチャを変えているので、何とも言えないんですが。
リバランス時の停止に注意
カウチベースは形成したリングにノードをすぐに追加できるのはいいところです。ただ、コミュニティーバージョンだとノードを追加してリバランスする時にカウチベースが停止してしまうため、その間のデータが落ちてしまうんです。
回避策としては、例えば2個のリングを3個に増やしたい時は、新たに3個のリングを作ってデータを移した上で、2個のリングを消す必要があります。運用的なテクニックですね。コミュニティーバージョンを使っているので、何とも言えないんですが、ここら辺が改善されると嬉しいです!
製品・サービス作りに集中できる会社を増やすための自動化
SATORIを育てていった先には、クライアントがマーケティングを意識せず、とにかく製品やサービスの開発に集中できるようにしていきたいと思っています。「アドテクやマーケティングオートメーションでこんなことができますよ。」とできる話は増えているんですが、運用が回っていないのが現状です。クライアントからしたら「すべて自動でやってくれ」と思うんじゃないでしょうか。
マーケティングがうまい会社ではなく、いい製品やサービスづくりに集中する会社が繁栄するよう、SATORIはマーケティング部分すべてを担っていきたいんです。そのためにもリアルタイム処理を低コストでできるカウチベースは、今後も大いに役立つと思います!
0 件のコメント:
コメントを投稿