株式会社VOYAGE GROUPでは、インターネット領域においてアドプラットフォーム事業、ポイントメディア事業、インキュベーション事業を展開しており、市 場環境の変化をチャンスと捉え、既存事業の拡大を追求しつつ、新領域事業 への挑戦を続ける企業です。そのグループ会社である株式会社 Zucks は、スマートフォン向けの広告配信およびスマートフォン向けのアドネットワークサービス などを主たる業務としています。

スマートフォン向けの広告市場は誕生して歴史の浅い業界ですが、スマートフォンの普及に沿って市場規模は年々増加しています。その中でも、Zucks は、日本最大級のスマートフォンに特化したクリック課金型のアドネットワーク 「Zucks Ad Network」サービスとスマートフォンに特化した成果報酬型広告 「Zucks Affiliate」で顧客の要望を叶えた効果的なプロモーションを支援しています。さらに、海外ネットワークとの取り組みを強化するなど、今後のスマートフォンやタブレット端末を含むモバイル市場をさらなる発展へ導く企業です。

またZucksは、アジアにおいて画期的なビジネスモデルやテクノロジーを有し、世界を牽引し得る革新的な有望企業上位100社に贈られる、米国 Red Herring 誌の「2016 Red Herring Asia Top 100」にも選出されています。

Zucksでは、アドテク(アドテクノロジー:広告技術)のサービスを運営するうえで重要となるレスポンスタイムを高速化し、365日24時間稼働、高トラフィックでレイテンシー(遅延)のないサービスを提供し、広告主のプロモーションとその効果の最大化、パブリッシャーの高収益化を目指しています。

Zucksが抱えてきた課題

2013年からサービスを全面的にスタートするにあたり、当時はxymonという オープンソースのツールを使用していましたが、Zucks が志向するオートスケーリングの環境には適さず、手間がかかることから他のツールの使用が検討さ れました。

その際、Zabbix、Nagios なども考慮に入れられましたが、管理がとても複 雑であると判断されました。「当時 Zabbix の解説本を購入しましたが、かなり本が厚く、1日で断念してしまいました」(大谷氏談)

また、監視サービスを提供するサービスと同一のアーキテクチャ上で起動させると、同時にダウンしてしまう恐れがある点が懸念事項となったため、自社でモニタリングシステムをマネージすることは断念し、ど んな時でも安定して動く外部のサービスを積極的に利用したいとの結論に至りました。「ちょうどそのタイ ミングでNew Relicと出会い、設定を試みたところすぐに運用を開始することができ、サービスを利用することになりました。」(大谷氏談)

マルチ開発言語のシステム環境の可視化

Zucksのシステムは、主にAmazon Web Service (AWS)上で運用されています。また広告データ分析のデータ処理基盤、配信の最適化のためにGoogle Cloud Platform (GCP)も利用されています。また、Java, Scala, PHP, Python などの多様なプログラミング言語でアプリケーション開発がなされており、Go (Google が開発したプログラミング言語 ) も利用されています。このような多様性のある開発環境において、新たにアプリケーションを開発する際、New Relic APMの提供する7言語エージェント対応は利便性が非常に 高いと評価されました。Zucksが、ちょうどGoを使い始めるタイミングで、New Relic APMのGoエージェントがリリースされ、とてもいいタイミングだったようです。

ボトルネックの検出・解決によるパフォーマンス向上とコスト削減

2013年サービス開始当時は、Full GC(Garbage Collection)の対応をしなくてはならないことが多く、 New Relic APMのJVM(Java Virtual Machine)Profilerの機能が頻繁に活用されていました。JVMでは、 Full GCの対応が必要であり、終了するまでに時間がかかります。また、それは非常に重い処理であるため、 システムのパフォーマンスに大きな影響を与えてしまいます。

当時はまだアプリケーションのコードに改善の余地が多くあり、JVM Profilerを起動させて、ボトルネックを見つけ、そのコードを書き換えて、デプロイをするという作業が繰り返し行われていました。トランザクションの中で、一つのリクエストに対し、どの処理が重いか特定し修正するサイクルの中でパフォーマンス の向上が図られました。

「パフォーマンスの向上のためには、まず計測せよ」というプラクティスなので、それに則ってNew Relic のコンソールを確認することは、コーディングのボトルネックの特定にかなり寄与しました。

サービス利用開始当初より、10倍以上処理能力は上がりました。

大谷 和紀氏 株式会社 Zucks CTO

またインスタンスをローリングデプロイメントするオートスケーリングの環境ではとりわけ、パフォーマンス が上がると必要なインスタンス数が減るため、直接的なインフラコストの削減につながりました。

アラート機能の活用による問題の早期発見

「New Relic APMでは、アラートのデフォルト設定がある程度入っていてすぐに動かせるので、とりあえず システムを作ってみることができて、利用感が良かったです。それに、基本的なアカウントの管理、ユーザーの管理も非常に使い勝手が良かったです。」(大谷氏談)

リリース時に思いもよらないところからエラーレートが上昇したというアラートが上がってくることもよくありました。その際には一旦リリースを戻し、Error ProfilerやTransaction Traceを活用して問題の原因を確認し、修正。再度リリースをするという対応がなされています。

普段の開発の中で、意思決定の判断材料の一つとして、New RelicのAPMが必須です。これがなければ、パフォーマンスの改善はなかったと思います。

清水 裕亮氏 株式会社 Zucks エンジニア

コミュニケーションの円滑化と開発環境全体の改善へ

他にも、システム内のツールでスクリーンショットやURLの情報を共有することで、チームのコミュニケーション促進にも役立てています。「チケットに残す作業ログにNew Relic APMのスクリーンショットを残すことがよくあります。」(清水氏談)

モニタリングがしっかりしていると万一リリースに問題があった場合に、それを素早く発見して修正を施すことができるため、そもそもステージング環境が不要となっています。リスクのあるリリースがしやすく、 新しいアイディアの商品リリースするサイクルが早くなり、お客様にも喜んでいただけているということです。 広告効果の向上を狙ったリリースも速くできるので、さらに、顧客満足度を向上できています。しっかりとしたモニタリングシステムのおかげで、ビジネスに集中でき、コスト削減やサービスレベルの維持だけで はなく、開発プロセス全体の改善につなげることを重視し、ビジネスを次へのステップへと進めることができるようになりました。(大谷氏談)

コスト削減やサービスレベルの維持でだけではなく、モニタリングシステムを開発プロセス全体の改善につなげることが重要だと思います。

大谷 和紀氏 株式会社 Zucks CTO

今後に期待すること

現在、ローリングデプロイ方式でデプロイしており、CPUの傾向の違いやエラーレートの変化を見ているのだそうです。また、実験的に本番環境にデプロイすることも多く、「アプリケーションのバージョンごとの違いをAPMで単純に表現するのが難しく感じるので、そのあたりが整理されて見れたり、警告が出せたりすると良い」とご意見がありました。

今後、New Relicの製品に期待することとしてはAWS Lambda, Fargateなどサーバーレスなサービス監視を、経験がなくてもわかりやすく気楽に使える機能があればということでした。