Inter BEE 2023 参加レポート & Media-JAWSを開催しました #interbee #mediajaws

こんにちは、TVerの加我です。
こちらは TVer Advent Calendar 2023 の4日目の記事です。

先日Inter BEE 2023に併せてMedia-JAWSを開催しましたのでそちらのレポートになります。

昨年のレポートはこちら。

techblog.tver.co.jp

Inter BEE 2023

今年は11/15 - 11/17にかけて幕張メッセで開催されました。Inter BEE自体の説明については昨年のレポートをご覧ください。

会場

昨年は予備知識というか業界知識がゼロの状態で参加したので展示を見ても何が何やらという状態でしたが、今年は多少なりとも知識があったので展示機材を見て「それが何であるか」程度は理解できました。とはいえ、放送に関する技術要素を体系的に学んだわけではないので「名前だけは聞いたことがある」程度のレベルのままですが・・・。

実際に納品されたというサブ (デジタルミキシングコンソール)

いつもお世話になっているNew Relic様のブース

ちょっと気になった在京放送局システム会社アライアンス

在京放送局システム会社アライアンスについて補足しておきますと、放送関連のシステムなどで各局が協力できる領域についてはみんなで協力してDX推進を行い、そのうえでコンテンツで勝負しようというのがコンセプトの団体とのことです。

現在の放送局システム会社にはいくつかの共通して抱えている課題があります。人的リソースからITインフラに至るまで、広範囲の課題をスピード感を持って解決するには限界があります。この背景から、各社との協調領域を定義し、協力体制を構築する試みを開始しました。その第一歩として『在京放送局システム会社アライアンス』をスタートし、新機軸と最適化軸の両輪で放送業界のDX推進を目指します。

newscast.jp

セッション (1)

AWS様のブースにてブライトコーブ様との対談形式のセッションがあり、弊社から2名が登壇いたしました。

対談セッション

ブライトコーブ様との対談形式セッション

11/15と11/17はモバイルアプリとWebアプリケーションのディレクターを務める岡田 銀平が担当し、11/16はAndroidTV・FireTVといったコネクテッドTV (CTV) のディレクターを務める若林 紘大が担当しました。

ディレクターの岡田 銀平

ディレクターの若林 紘大

セッションでは「導入前の課題とブライトコーブを選んだ理由」「ブライトコーブ導入後の放送局との連携に関する変化」などについて対談が行われました。お二人ともお疲れ様でした!

セッション (2)

11/15に民放技術報告会 企画セッションにて「CTV上の諸技術に関する研究と考察」というセッションを聴講しました。

技術的な側面からコネクテッドTVを分析し、ユーザー体験など将来的にどうあるべきなのかといった話が勉強になりました。セッションでは米国FASTや、英国Freeviewなどを参考にさせて頂いたとのことです。
残念ながらこちらのセッションについてはアーカイブ配信は行われていませんが、主な内容は「放送技術誌 (兼六館出版) 11月号」にまとめられています。

www.inter-bee.com

まいとうさんによるCTVの技術に関する研究と考察

CTVデバイスの視聴時間割合は増えているとの調査結果

放送についてはARIB等の標準規格があるが、CTVのアプリの機能については各ベンダーの仕様に基づくサービスが展開されている

セッション (3)

11/17にNew Relic様の出展者セミナー 企画セッションにて「TBS IDの構築によるサービス統合とグループ全体のシナジー: VISION2030に向けた内製化への挑戦」というセッションを聴講しました。

TBS様がTBS IDを開発・運用するにあたってNew Relicをどのように導入したのか、オブザーバビリティがどのように内製化に寄与したのかをお話頂きました。最後にQ&Aにて質問させていただいたのですが、丁寧に回答いただきありがとうございました。

www.inter-bee.com

Media-JAWS #14

昨年に引き続き今年もInter BEE 2023に併せてMedia-JAWSを開催しました。思えば昨年11月に開催されたMedia-JAWSから運営に携わることになりあっという間の1年でした。

media-jaws.doorkeeper.jp

昨年はAWS様のプライベートセミナーとして会議室を使わせていただいたのですが、今年は自分たちで会場を探すことになり海浜幕張付近の貸し会議室を検討することになりました。いくつか候補を挙げた中から「キャパシティと予算感が適当で、かつ会場と同じビルの居酒屋で懇親会ができる」という理由でイオンコンパス幕張会議室を利用させていただきました。

www.aeoncompass-kaigishitsu.com

今回の開催ではTVerで会場スポンサーをさせていただいたのと、バックエンドエンジニアの伊藤がJAWS-UGでの初登壇を成し遂げました。登壇の詳細については後日こちらのブログにて共有して貰える予定です。

伊藤については4月のAWS Summit Tokyo 2023に参加したときにJAWS-UG周りの人と話して良い刺激を受けたようで、今回の登壇について相談した際に快く引き受けてくれました。非常に嬉しく思います。

会場スポンサーをさせていただきました

TVerバックエンドエンジニアの伊藤

そして、今回のInter BEE + Media-JAWSに併せてAWSのIVS (Amazon Interactive Video Service) のチームが来日し登壇していただけることになりました。運営メンバーの1人としてこの場を借りてお礼申し上げます。

過去にオンラインで開催されたJAWS-UGのイベントにてAmazon IVSを利用していること、JAWS-UGの中でもメディア系企業の登壇が多いMedia-JAWSAmazon IVSとの親和性が高いとの理由からコラボレーションに至りました。ステッカーやTシャツ、靴下など大量のノベルティを持参していただきイベントを盛り上げてくれました。改めてありがとうございました!

IVSステッカー

IVS Tシャツ

IVSチーム

IVチームのHaoさんとToddさん

Amazon IVSリアルタイムストリーミングのデモ

今回のMedia-JAWSでは北海道文化放送様と静岡放送様に初登壇していただけました。

北海道文化放送の杉本さんとは今年の夏季休暇で札幌に帰省したときに知り合ったのですが、先日11月4日に札幌で開催された AWSカーニバル でお会いした際に「Inter BEE参加されますか?Media-JAWS興味ありませんか?もしよければ登壇いかがですか?」といった若干強引な流れでお誘いしまして登壇していただけました。

北海道文化放送の杉本さん

杉本さんの登壇内容は個人的にとても魅力的だと感じていまして「弊社ではまだFAXを使っています」からの「FAXで送られてきた原稿をFAXをOCRで文字起こししてAmazon Bedrockで原稿を作成し、手直ししたものをPollyで音声化してYouTubeでAI自動音声ニュースとして配信してます」というレガシーとモダンの温度差にやられそうになりました。杉本さんは純粋なエンジニアではなく、しかもAWS歴は2年とのことで強い衝撃を受けました。

speakerdeck.com

静岡放送様ではコミュニケーション改善のためのサービス開発をされている話や、放送局とVTuberがコラボして地元の盛り上げに貢献していたりテレビ局のオープニング映像にも起用しているという面白い話がありました。後者は直接的な技術的の話ではありませんが、放送局が手掛けるビジネスの一環ということで興味深く聞かせていただきました。

静岡放送 高橋さん

静岡放送 牧野さん

www.screens-lab.jp

www.youtube.com

ちなみに静岡放送様はコールサイン (テレビ) が JOVR-DTV ということもあってVTuberっぽい響きであることに局所的な盛り上がりがありました。放送業界2年目の私はすぐに反応できずまだまだ未熟であることを実感しました。

懇親会にはなんと40名前後の方が参加してくれまして、登壇内容についての話やら次回のMedia-JAWS開催地の話などで盛り上がりました。来年の開催については既にいくつか候補がありまして、今年に引き続き来年も精力的に活動していく予定ですのでご期待ください。

まとめ

今年もInter BEEは大盛況で、そこに併せて開催したMedia-JAWSも多くの方に参加していただけました。

昨年は業界に知り合いがおらず肩身の狭さと若干の居心地の悪さを感じたものですが、Media-JAWSを通じて放送業界の方々と知り合えたおかげで今年のInter BEEでは多くの人と交流することができました。引き続きメディア業界の盛り上げと技術発信に貢献するため頑張っていく所存です。

#ISUCON13 に パカパカアルパカとして参加して22位でフィニッシュでした!(86,322点)

こんにちは!

こちらは TVer Advent Calendar 2023 の2日目の記事です。

TVerのサービスバックエンドのリードエンジニアをやっております内海です🐶!

今年も昨年同様、チーム:パカパカアルパカとして出場してきました。

isucon.net

22位 86,322 パカパカアルパカ

いえーい🎉

やったこと

担当範囲

基本、私はいつもアプリケーションレイヤーばかりみています。

toritori0318氏がインフラをメインに担当。 teraken氏がツール周りと遊撃担当。

開始直後

  • AWS上のリソース構築
  • レギュレーション、マニュアルの読み合わせ

リソース構築完了後

  • 初回ベンチ実行
  • 各リソースの負荷状況確認
  • マニュアルからトピックの抜き出し

このタイミングではまだやれることが少ないポジションなので、マニュアルから課題になりそうなトピックを抜き出してまとめていました。

また負荷状況はどうみてもMySQLボトルネックになっていることを確認。

どうせ分散していかなきゃいけないことは明白だったため、一旦1台でいけるところまでチューニングをしてから負荷状況に合わせてサーバーを割り当てる作戦でいくことにしました。

icon対応

マニュアルと読んでいると If-None-Match ヘッダーに対しての記載が丁寧だったので、まず深追いせずに

  • MySQLにデータ保持をしているiconを静的ファイル化
  • hash値をredisで保持
  • If-None-Match ヘッダーがある場合304を返すように変更

スコア下がる 🤔

PowerDNS

DNS周りの運用は経験がなかったので、問題をみた瞬間にすっぱり切り捨てていた課題だったのですがTTLが0になっていることに気づいて対応をいれました

ここでお昼前5,000弱

モデレートAPIのN+1解消

これでもかってくらいN+1だらけだったので、どこから手をつけるか悩んでましたが

配信品質が上がると視聴者数があがるというマニュアル記載があったため、ブロッカーになりそうなモデレートAPIから着手しました

themeの廃止

ユーザーのダークモード設定が別テーブルで毎回呼ばれていたためusersテーブルに移行し、UserModelで保持できるようにしました

ここでやっと6,801。どのメンバーの対応も微増ではありつつも、着実にスコアは伸びていきました。

作戦会議

そろそろいろんな箇所の課題が見えてきたので一旦ホワイトボードに現在の構成などを書きながら、それぞれの気づきと方向性の共有を行いました

一旦昼過ぎのこのタイミングでは

  • Nginxでiconをちゃんと返すようにする
  • DNSサーバーとAppサーバーはわけたい

という方針になりました

iconをNginxでキャッシュするように変更

toritori0818氏がNginxでキャッシュできるように対応してくれて 8,796 点

まだここでも1サーバーしか使ってない状況です。

そろそろ分散して課題の深掘りにフェーズ移行していこうと言う話になりました。

MySQLサーバー

2台目のサーバーをMySQL専用サーバーに変更しました

このときは

BenchTarget: Server1
Server1: PowerDNS / App(Go) / redis / Nginx
Server2: MySQL
Server3: 

という状況になりました。

ここでスコアが伸びて 18,181 🎉

ここからはN+1を潰しつつ、それぞれの負荷状況を見て、分散構成を考えていました。

結果的に

サーバー
BenchTarget: Server1
Server1: PowerDNS / App1(Go) / Nginx
Server2: MySQL
Server3: App2(Go) 

アプリケーション
App1: icon / dns系APIのみ
App2: その他

という構成でわけました。

Server1にPowerDNSが居たので、できるだけ触らなくていいようユーザー登録APIをServer1:App1で受け付けることにしましたw

また、それだけだと少しApp1が余るので、比較的CPU負荷の少ないiconAPIもApp1に同居させました。

構成を変えてスコアは 27,702 🎉

最後の追い込み

  • 出来うるN+1を解消していく
  • iconのBinaryをそのままMySQLに書き込んでいたのをやめる
  • iconAPIでApp(Go)までたどり着いた場合、原則的にicon未設定者と断定してfallbackImageを即レスするように

などなどやっていると、めきめきとスコアがあがっていきました💪

午前中にやっていた細々したものが開花してきた感があって、アドレナリンでちゃう感じでした!

感想

ISUCONに出場すると毎年思うのですが、

  • 瞬間的な取捨選択の嗅覚
  • わからない状況でも前にコケる練習
  • Webエンジニアとして足りていない部分の再確認

というなかなか普段の業務では獲得し辛いスキルが磨かれるなぁ。と感じています。

日々の業務でもきっと活きてくるスキルだと思いますので、是非ISUCONに参加してみてはいかがでしょう。

来年(まだあるかわからないですが)、対戦出来ること楽しみにしております 😘

運営のみなさん、参加者のみなさん本当にありがとうございました。今年も最高でした!!!!

ISUCON13の問題や、ベンチマーカーの実装は

github.com

こちらで公開してくださっています

後日談

再起動テスト終わって、提出スコア出すためのベンチしてたんですが…

なぁんかベストスコアでないんだよなぁ。と思ってました。

終わってからリポジトリみてみると、マージされてないPullRequestが残ってました😇(ログの出力消したりするくらいのやつ

みなさんも、ちゃんとPRがMergeされてるかは確認しましょう😇

「TVer Advent Calendar 2023」開催のお知らせ

こんにちは、TVerの加我です。

昨年に引き続き今年もTVer Advent Calendarを開催します!
こちらはTVer Advent Calendar 2023 の1日目の記事となります。

qiita.com

昨年のはこちら。

qiita.com

今年のアドベントカレンダーに向けて

現在のTVerは下記のような組織体制となっております。

全体の組織図

speakerdeck.com

その中でサービスの開発に携わっている部門 ≒ 開発組織は主に下記が挙げられます。

  • TVerの開発・運用を担っているサービスプロダクト本部
  • TVer広告プラットフォームの開発・運用を担っている広告事業本部

昨年は現サービスプロダクト本部のエンジニアがメインでアドベントカレンダーの執筆に取り組んでいたのですが、なにしろTVerの開発組織が発足し動き出した年だったので執筆者が少なく、どのような記事を出そうかみんなで頭をひねったりもしました。

しかし今年の開発組織は昨年に比べて約2倍の人数になり、TVer広告プラットフォームの開発・運用に関わる広告事業本部にもエンジニアが増えてきているのでバラエティ豊かな記事が出てきそうな気配があります。

ということで

初日は私がアドベントカレンダー開会の儀を執り行わせていただきました。

明日はバックエンドエンジニアである内海が先日開催されたISUCON13について話してくれますのでお楽しみに!

JAWS Festa 2023参加レポート #jawsug #jawsfesta #jawsfesta2023

こんにちは、TVerの加我です。
先日10/7に福岡で開催されたJAWS Festa 2023 in Kyushuに企業サポーター兼当日スタッフとして参加してきました。コミュニティというキーワードに着目しつつ写真多めでレポートしていきます。

アンバサダーである広告事業本部の安部がJAWS Festa 2023の応援ブログと現地参加レポートを投稿してくれていますので先にご紹介します。

techblog.tver.co.jp

techblog.tver.co.jp

JAWS Festaについて

JAWS-UGには大きな年次イベントが2つありまして、それがJAWS DAYSとJAWS Festaです。JAWS DAYSは都内近郊で行われるイベントに対してJAWS Festaは地方開催かつ毎年別の都市で開催されるという特徴があります。

今年のJAWS Festaは4月のAWS Summit Tokyoの時点で九州での開催が決まり、具体的には福岡にある福岡工業大学での開催となりました。会場は非常に綺麗で学食も利用することができ、学生気分を少し取り戻しつつ気持ちよくイベントに参加することが出来ました。改めて会場を提供して頂いた福岡工業大学の皆さま、そしてイベントを成功に導いた運営スタッフの皆さまお疲れ様でした。

jft2023.jaws-ug.jp

前夜祭

JAWS Festaは前日から始まっていると言っても過言ではありません。
いつもお世話になっているNew Relic様や、JAWS-UGの知人と一緒にコミュニティについて話しつつ福岡名物の料理で前夜祭を楽しみました。炊き餃子も呼子イカの姿造りも美味しかったです。

福岡は新鮮なイカが美味しいんですよね

当日

会場の受付にて企業サポーターと個人サポーターの受付をしてイベントがスタートです。今回久しぶりに会う方も多くおり「いよいよJAWS Festa 2023が始まるぞ!」という気持ちの高まりを感じました。当日は撮影スタッフをするかとても迷ったのですが、せっかくの地方開催のイベントなのでイベントを楽しみたいと考え、一般参加かつ野良カメラマンとして参加させていただきました。

サポーターブース付近でのスタッフ打ち合わせの様子

サポーターブースでは新しいTVerのラバーコースターを配布しました

オープニング

オープニングはC棟地下ホールで開催されたのですが、どこに座っても前が見やすい階段教室形式でした。どうやら2018年にリニューアルされたようです。

www.kotobuki-seating.co.jp

C棟地下ホール

私はフロアの中段ど真ん中に位置取りつつオープニングを待機している一方、ステージでは運営スタッフである清家さんと北川さんが会場の諸注意をしつつ笑いを交えて会場を温めてくれていました。

オープニングアクトで会場を温めてくれるお二人

会場でのアンケートによるとJAWS-UGやJAWS Festaへの参加が初めてという方が多かったため、そういう人たちがイベントに参加しやすいように会場を温めるといった細かな気配り・気遣いを感じられました。ホスピタリティですね。特に初めて参加する人にとっては「JAWS-UG / JAWS Festaってどんな雰囲気なんだろう。学会やセミナーみたいなお硬い感じなのかな?」と思う人は多少なりともいるはずです。それに対して「JAWS Festaは硬い雰囲気じゃなくてみんなで盛り上げていく・盛り上がっていくイベントだから楽しんでいってね!」という運営からのメッセージがあると参加者がリラックスできるので良いですね。

ということでオープニングでは実行委員長の阿部さんの挨拶から始まります。JAWS Festa 2023にかける思いや今回の協賛(企業サポーター、個人サポーター、アプリケーション提供、会場提供)の紹介がありました。

実行委員長の阿部さん

JAWS Festa 2023には多くの企業が協賛しています

JAWS Festa 2023には多くの個人サポーターも協賛しています

ここから私が参加した一部のセッションの振り返りをしていきます。

地方コミュニティの存在意義とは?

オープニングが終わり、同じ会場ですぐにパネルディスカッションが始まります。パネルディスカッションは大体イベントの最後に配置されることが経験上多かったため、パネルディスカッションから始まるイベントはなかなか斬新です。

「地方コミュニティの存在意義とは?」をテーマとして、AWS Users Group – Japan (JAWS-UG) の立花さん、Japan Azure User Group (JAZUG) の松村さん、Japan Google Cloud User Group for Enterprise (Jagu'e'r) の家壽田さんがそれぞれのコミュニティのあり方や地方でコミュニティをやる意味などについてディスカッションしていました。モデレーターはAWS Community Builderの鈴木さんが担当していました。

異なるコミュニティに所属する3名によるパネルディスカッション

私としてはJAWS-UGのコミュニティイベントの最初のセッションで競合関係ともいえるJAZUGやJagu'e'rの方とパネルディスカッションを行うというのに驚きました。てっきりJAWS-UGに参加している地元の著名なエンジニアの方が基調講演を担当するものだと思っていたのですが、別のセッションではPHPコミュニティ・Javaコミュニティ・Swiftコミュニティなどの方も登壇しており「今年のJAWS FestaはJAWS-UGだけじゃない、九州全体のコミュニティを巻き込んで盛り上げていく」という強い意志と熱量を感じました。

JAWS FESTA版!グループ対抗 AWS ウルトラクイズ

今回の個人的目玉セッションであるAWSウルトラクイズです。私は回答者ではなく賑やかし(一般参加者)として参加しました。

過去に開催されたAWS Summit Tokyoではメインセッション終了後にJAWS-UGのイベントが開催されていました。そのイベント内で行われていたAWSに関するクイズ大会がAWSウルトラクイズです。出題者はAWSに関するディープな問題を出題し、正解者だけが残り、最終的に勝ち残った人が豪華景品 (re:Inventのカンファレンスパスなど) をゲットできるというアツいイベントとなっております。

dev.classmethod.jp

今回は個人戦ではなく、4組に分けられたチームがメンバーをローテしつつクイズに回答するという団体戦です。メンバーによってはフロントエンドが得意・バックエンドが得意・ネットワークレイヤーが得意など個人差があるため、結果が読めないところも盛り上がりポイントです。

ルール説明

印象に残った問題がこちらです。

2014年に発表されたAWSのサービスは下記のどれか
1. AWS Lambda
2. Amazon Aurora
3. AWS Config
4. 上記全て

私としてはAWS LambdaとAmazon Auroraは同じ時期、AWS Configはもう少し後だった印象があったのですが、正解は「4. 上記全て」でした。無念。

www.publickey1.jp

www.publickey1.jp

aws.amazon.com

また、利用者が多いと思われる「ELB」の正式名称についてのクイズがありましたが、なんと公式ドキュメントも混乱しているという話があり、後日正式名称で修正・更新されていました。

みなさまおわかりでしょうか

福岡のコミュニティから世界への挑戦までの軌跡 〜ある学生だったエンジニアの話〜

HAKATA.swiftというiOS関連のコミュニティに所属している秋 勇紀さんによるセッションです。福岡のコミュニティに所属している秋さんがコミュニティを通じたつながりや経験、学びを活かしてどのようにしてグローバルな登壇や技術書の執筆に至ったのかを話してくれました。

秋さんは「コミュニティに参加して人とのつながりができたおかげで色々な挑戦を行うことができた」と話しており、自分もJAWS-UGというコミュニティのおかげで人生が変わったうちの一人なので、コミュニティの価値にまだ気づけていない人たちに気づきを与えてあげられるよう精力的に活動していきたいと決意を新たにすることができました。

コミュニティによるつながり

クロージング

すべてのセッションが終わり、オープニングが行われたC棟地下ホールに戻りクロージングと集合写真の撮影が行われました。

コールアンドレスポンスを行う実行委員長

撮影スタッフのみなさま。お疲れ様です。

そして来年2024年の3月2日(土)にJAWS DAYS 2024がオフライン会場にて開催されることを実行委員長である早川さんのビデオレターにて発表されました!
TVerもスポンサーや登壇などでイベントの盛り上げを手伝いたいと思っており情報のアップデートを楽しみにしております。

実行委員長によるJAWS DAYS 2024開催のお知らせ

代理としてSecurity-JAWS運営の吉江さんから説明がありました

まとめ

今年のJAWS FestaはJAWS-UGだけではなく複数のコミュニティを集めたイベントとなり、まさにFestaの名前に相応しい盛り上がりでした。コミュニティ同士のディスカッションがあったり、コミュニティの歴史を振り返ってみたり、地方におけるコミュニティの存在意義やあり方を考えたりと、コミュニティ運営に携わる者の1人として多くの学びを得ることができました。

私はMedia-JAWSの運営に携わっており、イベントの開催や登壇のために色々な地域に行くことが増えました。その地域でイベントを開催するためにはどういった登壇者を集めたらよいのか、継続して開催するにはどうしたらよいのか、コミュニティを支援するにはどういう仕組みが必要なのかといった悩みがあったのですが、コミュニティの活動が活発な福岡に着目することで多くの気づきを得ることができました。

改めて実行委員長の阿部さん、運営スタッフのみなさま、サポーターのみなさま、参加者のみなさま、本当にお疲れ様でした。企業サポーターとして支援できたことを嬉しく思います。

JAWS Festa 2023 に参加しました!

こんにちは。
アドテク領域のエンジニアをしています安部です。

10月7日に開催されたJAWS Festa 2023に参加してきました。

 

jft2023.jaws-ug.jp

 

JAWS Festa 2023には企業サポーターとして参加しました。

参加の意気込みについてはこちらを御覧ください。

techblog.tver.co.jp

 

当日の会場の様子

会場の福岡工業大学。駅直結でアクセスがとてもよかったです。

企業サポーターブースではラバーコースターを置いていました。

他の企業のアンバサダーさんたちとたくさんお話できて楽しかったです!

ノベルティも個性があって見ているだけでも楽しかったです。

 

オープニングでは実行委員長の熱い開会宣言がありました。

その後に続いたディスカッショントークでも地方のコミュニティのあり方、コミュニティへのかかわり方について熱いディスカッションが行われていました。

スタートの時の大喝采でホールが揺れました。

参加したセッション

福岡市のスタートアップ支援について

福岡市の成長戦略、DXの推進、政令市の強みを生かしたスタートアップ支援についてのお話でした。
fgn.(Fukuoka growth Next)という創業前→成長期→事業拡大期を一気通貫でサポートする仕組みとEngineer Cafeの紹介がありました。
Engineer Cafeにはコワーキングスペースもあるようなので、今度行ってみようと思います。

ECSの CI/CD改善と標準化の取り組み

speakerdeck.com

はてなブログのEC2からECSの移行時に発覚したCI/CDの問題を改善、社内で標準化するプロセスについてのお話でした。
最近よくCI/CDを触っているのでとても勉強になり、業務に反映できそうなお話でした。

 

クロージング

2024/3/2 に池袋サンシャインシティにてJAWS DAYS 2024が行われることが発表されました!

さいごに

たくさんの方と交流できてとても楽しかったです。

行きの電車で隣に座っていた方が実は企業サポーターの方だったり、地元企業の方と福岡トークできたり、懇親会でエンジニアカフェについて色々聞けたり、とても充実した1日を過ごすことができました。

お話した方によく聞かれたことが「広告事業本部ってどんなことしているのですか?」ということでした。

これからもっと広告事業本部についても広めていくことが大事だなと改めて思いました。

アドテク領域についてはこちらでお話しているので、ぜひ見てください!

note.com

おまけ

昼食に学食を利用させていただきました。

がっつり系でとても美味しくて安くてこれを毎日食べられる学生さんは羨ましいです。

学生に戻った気分を味わえました。

おすすめのチキン南蛮ライス。最高でした!

 

TVerはJAWS Festa 2023に企業サポーターとして協賛します! #jawsfesta #jawsfesta2023 #jawsug

こんにちは、TVerの加我です。

遂にJAWS Festa 2023が今週末の10/7(土)に開催となります👏
TVerでは企業サポーターとして協賛しておりまして、自社のノベルティを持参・配布する予定です。ぜひお手にとっていただけると私たちが喜びます。前回作成したものから微妙にリファインしておりますので、お気づきの方はこっそり教えてください。

企業サポーターの一覧ページはこちら。 jft2023.jaws-ug.jp

現地には広告事業本部でアドテク周りの開発を行っているアンバサダーの安部と、サービスプロダクト本部でSREとしてTVerを幅広く見ている私の2名が参加予定ですので、気軽にお声がけください。ぜひAWSJAWSの話題で盛り上がりましょう!

広告事業本部 安部

サービスプロダクト本部 加我

また、アンバサダーである安部が先日投稿したJAWS Festa 2023への応援ブログも併せてご覧ください。 techblog.tver.co.jp

それでは当日現地でお会いできることを楽しみにしております!

DatastreamによるTVer ID会員情報の分析環境改善

TVerでデータシステムなど担当しております黒瀬です。

この記事では、弊社のサービスとして運用しているTVer ID の会員情報を保持するDB(以下、会員DB)のデータの集計にかかる時間を短縮した施策についてご紹介します。

サマリ

DatastreamとPolicy Tagを利用することで、プライバシー保護を考慮しつつBigQueryで会員DBを高速で集計できるようにしました。

背景

TVerでは、GKEでセルフホストしているRedashを利用してデータ集計や分析を行っています。

また、弊社では分析用のデータはBigQueryに集約する方針のため、基本的にはRedashでの集計はBigQueryのSQL構文でクエリを作成しています。

このRedashでクエリを実行するタスクの一つとして、弊社が提供しているTVer IDの会員の動向を集計・分析するというものがあります。

TVer IDの会員DBは、Amazon RDSで構築したMySQLでホストしており、RedashからはEC2で作成した踏み台経由でアクセスしていました。

また、Redashからは個人情報を含むフィールドをマスクするためのviewにクエリを実行することで、プライバシーも考慮した仕組みとしていました。

従来の構成

課題

この従来の構成では下記の課題がありました。

  • Redashで作成するクエリは大部分がBigQueryのSQLであるにも関わらず、会員DBはMySQLSQL構文でクエリを作成する必要があり、仕様の差異に留意する必要があったり突合しにくいといったことから、運用がしにくい問題がありました。
  • これは会員DBのスペック上の制約でもありますが、従来の構成では会員DBに対して実行したクエリのレスポンスに数時間かかっていました。結果、集計担当者がRedashで実行したクエリの様子を見に行く必要があったりRedashのワーカーを長時間占有するなど、分析が滞る原因となっていました。
  • 稀に調査などでフィールドをマスクしていないデータを見る必要がある際は、Redash経由ではなく踏み台などから直接クエリを実行しなければなりませんでした。

そこで、これまで利用していたRedashの上で、高速かつセキュアにデータを集計するための仕組みについて検討しました。

方針

上記の課題を解決するため、次のような方針で進めることにしました。

  • BigQueryにデータを同期することで、MySQLでクエリを書かなくていいようにしつつ、サーバレスのクエリ実行環境であるBigQueryによるレスポンス改善を目指しました。
  • フィールドをBigQuery側で隠蔽することで、分析の要件に合わせてフィールドへのアクセス権やマスキングをBigQueryで制御できることを目指しました。

ここからは、これらを実現するための詳細についてご紹介いたします。

アプローチと効果

DatastreamでMySQLからBigQueryにデータを同期する

DatastreamはGoogle Cloudで手軽にデータ変更キャプチャ(CDC; Change Data Capture)によるデータ同期ができるサービスです。今回はこのサービスを利用してMySQLのデータを都度BigQueryに同期することで、BigQueryで会員DBのデータを分析できるようにしました。

cloud.google.com

導入も非常に簡単で、今回はMySQLでbinlogを設定し、踏み台の認証情報をDatastreamで指定するだけでBigQueryにデータを同期できるようになりました。

この施策により、BigQueryのSQLで会員DBのデータを分析できるようになり、またこれまで数時間かかっていたクエリも、MySQLクラスタのスペックによらず、十数秒で結果が返ってくるようになりました。

新しい構成

BigQueryに同期したテーブルのフィールドにPolicy Tagを付与する

Policy TagはBigQueryのフィールド単位で権限やマスキング方法の制御ができる機能です。

cloud.google.com

このPolicy Tagが関係するロールとしてはMasked ReaderとFine-Grained Readerの2つがあります。Policy Tagが付与されているフィールドを含むテーブルへのクエリは、クエリを実行したアカウントがどのロールが付与されているかによって次のように結果が変わります。

  • Masked Readerが付与されているアカウントが実行した場合: Policy Tagが付与されているフィールドがマスキングされて結果が返ってくる
  • Fine-Grained Readerが付与されているアカウントが実行した場合: Policy Tagが付与されているフィールドがマスキングされずに結果が返ってくる
  • いずれのロールも付与されていないアカウントが実行した場合: クエリは権限エラーになる

今回は、氏名やメールアドレスといった会員DBに記録されている個人情報ごとに、マスク方法を適切に設定したPolicy Tagを作成し、該当するフィールドへ付与しました。

そして、Redashでクエリを実行するためのサービスアカウントとしては想定する用途によって2つを用意しました。

  • 通常の分析ではマスキングされたデータを利用するため、Masked Readerが付与されているアカウントを利用
  • 調査などでマスキングされていないデータを利用する場合は、Fine-Grained Readerが付与されているアカウントを利用

この施策により、BigQueryに閉じた設定でプライバシーを考慮したアクセス権限の制御ができるようになりました。

まとめ

今回、Datastreamの導入によって会員DBのデータの分析にかかる時間を効率化することができました。また、Policy Tagによってプライバシー保護もロールによる制御へ簡潔化することができました。

一方で、Datastreamによるデータ同期ではコストも相応にかかってくるため、今後はこのコストを抑える施策について検討していきたいと思います。

TVerではエンジニアを募集しています

今回ご紹介したデータシステム以外にもバックエンドやフロントエンドなど多彩なフィールドでエンジニアを募集しています!ご興味ある方はぜひ以下の採用サイトからご連絡ください!

recruit.tver.co.jp