2024.10.10
将来は卵1パックの価格が2倍に? 多くの日本人が知らない世界の新潮流、「動物福祉」とは
リンクをコピー
記事をブックマーク
司会者:宮﨑さん、発表をありがとうございました。このセッションはインフラ寄りのキーワードも多く、僕はインフラ畑の人間なのでそこを突っ込みたいんですが、ちょっと我慢してGoに焦点を当てた質問をさせていただければなと思います。
宮﨑大芽氏(以下、宮﨑):お願いします。
司会者:まず「計測するとなって、OpenTelemetryを採用した一番の理由は何だったのか?」というのを教えていただければなと。
宮﨑:採用したのは実際は僕ではないのですが、思う部分がちょっとあります。完全に選定した回答ではないんですけど。
もともと僕たちは「GCP」だけじゃなく「AWS」とかも使っています。トレーシングするにあたってAWSやGCPなどを複数で使う場合があります。そう考えた時に、将来的にはトレーシング情報などをきちんと一元管理したい、Grafana Tempoを使って1個にまとめたいなど、考えているので、OpenTelemetryを使ったほうが将来的に実現したいことに直結するだろうと、OpenTelemetryを採用したと思います。
司会者:ほかのサービスとのインテグレーションとかも考慮して。
宮﨑:そうですね、おっしゃるとおりです。
司会者:たぶんほかの選択肢としては、たぶん「Datadog」とか「New Relic」みたいなサービスがあると思いますが、そこらへんも鑑みて。あとはコストの問題とかもたぶんあると思うんですが、そういった点を考えてOpenTelemetryにされたということですかね。ありがとうございます。
司会者:堅い質問の後にちょっとおもしろい質問も来ているので。(質問を見て)「計装」というキーワードが出ていましたが、確かにあんまり聞かないなと思って。
宮﨑:聞かないですよね。
司会者:感じとしてはたぶん、「計る」に、実装の「装」ですよね。
宮﨑:そうです、そうです。おっしゃるとおりです。
司会者:ちょっと僕も今、この質問が来ていて「確かにな」と思って調べてみたら、これは測定の時に使う用語なんですかね?
宮﨑:僕もよくわかって使っては……(笑)。
司会者:なんとなくで使っている(笑)。
宮﨑:OpenTelemetryを導入するにあたって僕も調べて、「計装」という言葉がすごく使われていて、なんかこれはちょっと一般的な言葉なのかなと思って使わせていただきました。
司会者:そうですよね。でも確かに仕事をしていてもなかなか聞かないキーワードですよね。
宮﨑:使わないですよね。
司会者:要は、OpenTelemetryみたいな計測するものを導入する時に使われるキーワードとしてある感じですかね。ありがとうございます。ちょっと雑談みたいな質問になっちゃいましたけど(笑)。
宮﨑:(笑)。
司会者:次はこれもまた一風変わった質問で、技術面というよりは、ちょっとチーム的なお話なんですけど。
先ほどみたいなトレースの導入だと、もちろんいろいろな技術的選択もそうですし、コードも書き換えなきゃいけないと思うんですけど、全体的な導入をチームで進めていくにあたって、どういうふうに進めたのか。結局、「泥臭くみんなでやろうぜ」と言って進めたのか、というのはどういう感じなんですか?
宮﨑:進め方としては、そもそも僕がいたチームが負荷試験をしていました。負荷試験をするにあたって先ほども言ったとおり、ちょっとボトルネックの把握に時間がかかっているというところで、Anthos Service Meshを導入していることもあり、それを使ってトレースを実現したいとなったので。
パブリッククラウドとかインフラを管理しているCloud PlatformチームがABEMAにはあるんですけど、そのチームと、アプリケーション側の実装というかたちでCloud Platformチームが協力して進めるかたちになりました。
進め方としては、それぞれが実際にAnthos Service Meshでトレーシングを有効にしたり、こちら側でトレーシングのアプリケーション側の実装をしたり、それぞれで進めて実現したかたちになりますね。
司会者:そのお話を僕は社内にいて初めて聞いたんですけど、個人的にはすごくいい話だなと思っています。
なんでかというと、まさにDevOpsみたいなものを体現しているなと個人的には思っていて。今回導入されたTelemetryの実際のデータも、たぶんアプリを作る人というよりは、それを見て改善するSREの方々が実際に使うメトリクスなのかなと思うんですけど、そこもきちんとCloud Platformの方々と開発の方々で一丸となって取り組めたということですよね?
宮﨑:そうです、そうです。
司会者:ありがとうございます。すごくいい話だなと思います。そういった感じで取り組んでもらったんですかね。ありがとうございます。
司会者:では次ですが、Goの話題にちゃんと戻って、コンテキストが伝播していない箇所。レガシーのコードですね。僕も経験があって、「あっ、この関数、コンテキストが渡ってないやん」みたいな時があったんですけど(笑)。たぶんコードベースもそんなに小さくはないと思うのですが、どうやって伝播していない箇所を探し出したんですか?
宮﨑:今回、トレーシングを導入するにあたって、トレーシングを導入したいサービスというのがそもそも負荷試験をしている段階でけっこう見えていたんですよ。そのサービスを調査するにあたって、そもそもトレーシングを導入する前に、例えばタイムアウトを設定したいとかそういうことがけっこうあって。そのサービスはコンテキストがそもそも伝播されていないということを、けっこう負荷試験を通して知っていたんですよね。
それもあってコンテキストの伝播がされていないことを知ることができて、対応したかたちになります。負荷試験を経験して知ることができたという感じになりますね。
司会者:それもそれで、やはり実際の開発という感じがしていいですね。なんか単純にgrepとか目grepで探すわけじゃなくて、計測した上で「あぁ、ここが怪しい」となって当たりをつけて探していったみたいな。
宮﨑:そうですね。
司会者:なるほど、ありがとうございます。
司会者:次が、メトリクスの……トレースですね。実際に先ほどのトレースのコードを挟んで、データをバックエンドに送ると思うんですが、たくさん送るとやはりデータ量が増えたり、課金の額が増えていったりすると思います。全件トレースを取って送るのか、もしくはサンプリングをしたりしているのかという質問ですね。
宮﨑:まさに、サンプリングをしています。どれぐらいのレートでサンプリングをしているかはちょっと述べられないのですが、ABEMAなのでリクエスト数もかなり多いというのもあって、できる限り少ないサンプリングレートで計測をしていますね。
司会者:サンプリングとかも、やはりやってみないとわからないところはありますよね。
宮﨑:そうですね、はい。
司会者:そこもけっこうトライアル・アンド・エラーでやって、というところですかね?
宮﨑:いったん決め打ちで入れたかたちになります。
司会者:なるほど、なるほど。ありがとうございます。
司会者:次もトレース情報のお話です。要はネットワークの通信が発生すると思うのですが、そういった処理によってアプリケーションへの負荷になることがあったりは……さすがにそれは大丈夫だったんですかね?
宮﨑:トレーシングを導入する時に、一応それは話題にはなったんですが、導入したのが負荷試験をやっている最中だったというのもありますし、そのトレースを導入した後にさらに負荷を上げて負荷試験をやるということもわかっていたので、実際にトレーシングを導入したことが負荷になったかどうかはちょっとわからないんですけど。負荷試験をするから導入しても問題ないんじゃないかという、問題があったら見えてくるだろうというかたちで導入しました。
司会者:ありがとうございます。
司会者:ちょっとインフラ寄りの質問が多くて答えられなさそうなものも多いんですが、ちょっとこれをお聞きしようかな。
ABEMAとして、いろいろなクラウドプラットフォームや外部のサービスを使っていると思います。OpenTelemetryはOpenという名が付いているとおり、どんなプラットフォームでも使えると思うのですが、実際にベンダーに依存しないもののモチベーション、たぶん技術選定の理由ですかね。ここらへんは、先ほどのインテグレーションとかのお話と一緒ですかね?
宮﨑:そうですね。先ほどもまだ理想の形ではないという話をしたと思いますが、今後、すべてのログとかも集約して、トレースからログを紐付けたりしていきたいなと思っているので、そういうのも踏まえてOpenTelemetry、先ほどのインテグレーションもそうですが……選んでいる感じになりますね。
司会者:ありがとうございます。(質問を見て)そうですね。じゃあ、この質問を拾おうと思います。ちょっとABEMAの全体のお話になっちゃうので、あくまでも宮﨑さんがご存じの範囲で大丈夫なんですが。
宮﨑:わかりました。
司会者:今までのセッションでもABEMAのサービスがいろいろ出てきていたと思うんですけど、基本的にGoで実装されているという認識でよろしいですか?
宮﨑:はい、そうだと思います。僕は中途入社なんですが、僕が入社してから関わったサービスはすべてGoで実装されていました。
司会者:だからこそ、先ほどのトレースとかもチーム一丸で進めて、たぶん言語が違ったらまたトレースのライブラリとかも考えたりしなきゃいけなくて、さらに工数が増えたりすると思うんですけど(笑)。そこは全チームとしてGoを選択しているからこそ、先ほどの施策としても進めやすいし、改修としてもわりと簡単に入れられたみたいな感じですかね。
宮﨑:そうですね。トレーシングをする、先ほどの実装も、内製のライブラリみたいなもので実装されているので、実際Goに、ほかのサービスとかを導入するのは比較的やりやすかったですね。それはやはりGoを全体的に採用しているからだと言えますね。
司会者:なるほど、ありがとうございます。
司会者:(質問を見て)ちょっとこれを拾おうかな。「RedisのOpenTelemetryやOpenTelemetry Mongoでは、トレース情報として何を含めることができるのでしょうか?」と。
宮﨑:まず導入の仕方としては、イニシャライズする時にMongoだったらモニタリングみたいな、初期化の設定をするコードがあって、そこに入れ込みます。見えるものとしては、Mongoだったらまさにクエリのfindだったり、そういうものがトレース情報として出てきます。findした部分の名前とその時間がきちんと出てきます。
Redisもまさに同じようなかたちでsetしたりgetしたものがトレース情報として出てきます。
司会者:じゃあ、実際にそのアプリで、例えばユーザーをgetする処理のキャッシュから引っ張ってきた時に、叩いたgetのトレース情報とかがきちんとパッと出てくるみたいな。
宮﨑:そうです。おっしゃるとおりです。
司会者:それは便利ですね。ありがとうございます。
宮﨑:ライブラリで実装できるので、特に僕らが計装する必要はなくて、もう非常に便利ですね。
司会者:そうですね、確かに。ありがとうございます。
司会者:お答えできなかったらこれは大丈夫なんですが、実装にかかった期間。先ほどのトレースのコードを入れるって、やはり大規模な工事じゃないですか。それは実際、どれぐらいの期間でやったのかはお聞きしても大丈夫ですか?
宮﨑:たぶん、具体的なことを言うのもアレなのかもしれませんが、「今週お願いします」ぐらいです(笑)。
司会者:あ~。これは大丈夫ですか(笑)?
宮﨑:(笑)。わからないですが、それぐらいの……負荷試験をやっていたこともあって、けっこう温度感を高く対応したというのはあります。なので、全部理想の形にするんじゃなくて、やれる分だけでやりましょうという。
司会者:なるほど、ありがとうございます。すみません、ちょっとセンシティブな話題だったかもしれませんが(笑)、ありがとうございます。ちょっとお時間も来ましたので、いくつかまだご質問があるんですが、申し訳ありません。ちょっとここで打ち切らせていただこうと思います。
あらためて宮﨑さん、発表をありがとうございました。
宮﨑:ありがとうございました。
(会場拍手)
関連タグ:
2024.11.13
週3日働いて年収2,000万稼ぐ元印刷屋のおじさん 好きなことだけして楽に稼ぐ3つのパターン
2024.11.11
自分の「本質的な才能」が見つかる一番簡単な質問 他者から「すごい」と思われても意外と気づかないのが才能
2024.11.13
“退職者が出た時の会社の対応”を従業員は見ている 離職防止策の前に見つめ直したい、部下との向き合い方
2024.11.12
自分の人生にプラスに働く「イライラ」は才能 自分の強みや才能につながる“良いイライラ”を見分けるポイント
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.11.11
気づいたら借金、倒産して身ぐるみを剥がされる経営者 起業に「立派な動機」を求められる恐ろしさ
2024.11.11
「退職代行」を使われた管理職の本音と葛藤 メディアで話題、利用者が右肩上がり…企業が置かれている現状とは
2024.11.18
20名の会社でGoogleの採用を真似するのはもったいない 人手不足の時代における「脱能力主義」のヒント
2024.11.12
先週まで元気だったのに、突然辞める「びっくり退職」 退職代行サービスの影響も?上司と部下の“すれ違い”が起きる原因
2024.11.14
よってたかってハイリスクのビジネスモデルに仕立て上げるステークホルダー 「社会的理由」が求められる時代の起業戦略