Blog

エンジニアの行動規範「AdTech Maxims」第2回 ~性能へのシビアな要求に向き合う~


皆さんこんにちは、サイバーエージェント、アドテクスタジオの伊藤(@wildtiger0713)です。

前回、我々が掲げるエンジニアの行動規範「AdTech Maxims」を紹介させて頂きましたが、今回はAdTech Maximsの掲げる4つの価値観、その一つ目のキーワード「性能」について、策定メンバーの一人でもあり、スマートフォン特化型ダイナミックリターゲティング広告サービス「Dynalyst」開発チームのリードエンジニア木村衆平にその想いやこだわり聞きだしましたので、対談の様子をレポートさせて頂きます!(インタビュアー:技術戦略室 鷹雄健)

 

%e5%af%be%e8%ab%872

 

<機能と性能のバランスを考える>

鷹雄:アドテク領域の開発を行う上で「性能」に対してどのように向き合われていますか?

木村:アドテクは求められるスループットやレイテンシーが非常にシビアなので性能にはおのずと向き合わざるを得なくなりますよね。例えばRTBによる広告配信ならば、どんなにいい配信アルゴリズムがあっても一定時間内に処理しきれなければbidすることさえできず配信することができません。効果を高めるためには多くのアルゴリズムを並列で走らせたいですが、普通に処理していたのでは間に合わなくなるので、ただ優れたアルゴリズムというだけでなく性能とのバランス、性能への配慮は常に意識しています。

 

 

<シビアな性能要求に向き合う>

鷹雄:Dynalystのシステムの中で最もシビアに性能と向き合っている機能や場所はどこになりますか?

木村:やはりbidのレイテンシーが重要なのですが、その中でもデータベースアクセス部分ですね。Dynalystでは信頼性、データ量、データアクセス負荷に対する圧倒的なスケーラビリティの高さとグローバル展開を見据え、RedisからDynamoDBにリプレイスしたのですが、DynamoDB単体ではレイテンシーの要求を満たせない。そこでフロントエンドにmemcachedのクラスタを立てて性能要求を満たすように設計しています。

 

 

<満たすべきゴールを決める>

鷹雄:性能へ向き合うことで起こってしまった失敗や、それに対して行った改善などがあれば教えて下さい。

木村:よくあるのはどこまでやるのかを決めずに始めてしまうこと。際限なく速ければ速いほどいいということに陥りやすい。きちんと性能要件を定めた上でそれに対してシビアに向き合うことが大事です。また性能の改善に対する目的や効果を、きちんと仮説ありきで理解した上で開発することが重要であり鉄則だと思います。

 

 

<誰がハッピーになるのかを考える>

鷹雄:性能への要求に向き合う時間や余力がない開発者も中にはいるかと思います。そんな方へ熱いメッセージをお願いします。

木村:目に見える新機能や要求に追われて開発を進めた結果、レイテンシーなどの性能を犠牲にすることはやってしまいがちですが、例えば、広告の表示速度が上がればユーザのストレス軽減につながるし、アプリケーションのビルド時間が短くなればリリース回数を増やすこともできる。性能の改善によって誰がどのようにハッピーになるのかをちゃんと考えることができれば、おのずと性能へのシビアな要求にも向き合えるようになると思います。

 

 

低レイテンシーを求められるDSPサービスならではの性能に向き合う姿勢が伺えました。

次回は2つ目のキーワード「スピードと品質」について、人工知能を活用したチャットプラットフォームサービス「AI Messenger」でプロダクトマネージャーを務める横道稔に話を聞きます!

Author

アバター
atsuki