MicroAd Developers Blog

マイクロアドのエンジニアブログです。インフラ、開発、分析について発信していきます。

さようならNetezza

 はじめまして、マイクロアドでインフラを統括している元井です。会社がサイバーエージェントから分社化するちょっと前から所属しているのでもう11年、ここで言うのもあれですが正直こんなに長居するとは思っていませんでした。いろんなことがありましたので、ここで小出ししていく予定です。

さて、マイクロアドでは分析者向けデータウェアハウス(以下DWH)としてNetezza(今だとPureDataという製品名ですが導入当時からの親しみを込めてNetezzaと呼びます)を利用していましたが、とうとうこの3月で停止する運びとなりましてシステム開発部全員が一丸となって対応にあたっています。クラウド・オンプレにおいて分散基盤が流行りの昨今、ラックモデルという拡張が容易ではないのもあってこの運びとなりました(とは言え2回の拡張をしました)。

思い起こせばマイクロアドがNetezzaを導入したのは2010年。TwinFin3というモデルでした。2010年当時、広告接触ユーザ数が5000万人くらいで、当然それなりのユーザアクセスログも蓄積されていました。どのくらいアクセスがあったのか記憶がさだかではないですが確か日に3億程度だったかと(今思えばそれでも相当大きなリクエスト数でした)。

この頃から会社としてデータの重要性を認識し、分析者向けの環境として各マスターDB、集計DBからデータを集約したMySQLサーバを運用していました。広告効果の分析や、次期商品(ちなみにこの時の次期商品というのがReal Time Biddingと呼ばれる広告表示の際にオークションが行われるという仕組みの入札機能です)の開発のためにもっと大量のデータを扱いたい!という分析者の要望があがり、テラバイト規模のデータを高速に取り扱えるものとして幾つかのDWHを検証しました。下記の選定基準を軸にサンプルデータを用いて比較しました。

  • データ容量
  • データロードの速さ
  • クエリ性能
  • 運用の容易さ

そして検証を重ねた結果、当時使っていたMySQLサーバの100倍(サーバスペックが低すぎたわけではなかったはず)程度のクエリ性能が出たNetezzaの導入を決定したわけです。f:id:mmotoi0:20180315121726p:plain

とは言え、なんでそんなに速いのかNetezzaよ。内部的に分散処理を行えるように設計されているのと、FPGAを搭載していたからです。例えばWHERE句を使ったクエリであれば、HDDから読み出されたデータは通常メモリ上に展開された後にCPU処理されます。ですがNetezzaではHDDから読み出す際、先にFPGAでフィルタ処理をして条件にマッチしたデータのみをメモリに書き込みます。ディスクから読み出すと同時にフィルタ処理行われているため高速なわけです。他にもマニアックな技術がいろいろあったはずですがうろ覚えなものでここでは割愛します。

Netezzaを導入したタイミングで分析者用のSPSS Clementineのサーバ版であるModeler serverを使うようになって分析処理性能が一気に加速しました。そして、高速になった結果としてデータ処理もデータ容量も増えまくりました。しかし、人間の欲というものは恐ろしく、速いことを当然と捉えるようになると人間をダメにするのにも役立ちました(速いスピードで適当なクエリも処理できてしまうのでクソクエリも増加したとかしないとか)。

そんなこともあってか、あれほど速かったTwinFin3はいつの間にか遅くなり2011年にはTwinFin6を導入しました。名前からわかるとおりTwinFin3の倍のスペックでした。

この頃からReal Time Biddingが主流になったお陰で入札額計算や行動履歴から何に関心を持っているかの自動算出など様々な分析処理を行うようになりました。そのため速さの恩恵をあずかったのはわずかな期間でした。
一部の処理はHadoopに逃がすといった対応をしてなんとか使い続けていたのですが、どうしようもなくなってしまい、2013年に新バージョンであるPureDataを導入しました。2ラックモデルで重さは2トン。いちおうアプライアンスということでラックに機器が搭載された状態での輸送でした。データセンターへの設置の際はラックを立たせた状態のまま移動させなくてはいけなく、このような納品は滅多にないので大人たちがはしゃいでたのを覚えています。
流石に容量、パフォーマンスと申し分なく、良き分析基盤として稼働しておりました(がしかし人間の(ry)。

ちなみに頑なにNetezzaを使っていたのは高速処理の機能で分析者が使っているSPSSとの接続性の良さが大きかったからです。SPSS+NetezzaだとSQLプッシュバックと呼ばれるSQL最適化を効かせる事でパフォーマンスを向上させる素敵な機能があります。通常の分析ツールはDWHのデータを分析環境にダウンロードして処理するので、複雑な処理のパフォーマンスを向上させるためには別途中間テーブルを作るなどのチューニングが必要になります。しかし、SPSS+NetezzaでSQL最適化を効かせるとNetezza上で処理を完結するようになり容易にパフォーマンスが向上させることが可能でした。

そんなNetezzaもスケールアウトが難しいという問題を抱えています。そのためビジネスの要求に合わせて拡大することが難しくなり、冒頭ありましたように3月で利用終了です。

近ごろは大量データを取り扱う基盤は常に変化しており、オンプレでもクラウドでもスケールアウトが容易なプロダクトが増えてきています。ビジネスの要求に合わせて様々な変化に対応出来るインフラにして行きたいですね。

f:id:mmotoi0:20180315123244p:plain

それでは今後ともよろしくお願いします。