見出し画像

【受講メモ】「MixLeap Live Study #61 - ヤフー天気・災害を支えるエンジニアリング」に参加しました!

9月8日に開催されたイベント「MixLeap Live Study #61 - ヤフー天気・災害を支えるエンジニアリング」に参加しました。

イベントで話された内容を聞くだけじゃ意味がないので、自分なりにまとめてアウトプットします。

内容は、ヤフー天気・災害のエンジニア4名の方々の、それぞれの取り組みについてのお話や、バックエンド運用から新機能の開発についてのお話でした。

※もともと別のサイトで投稿していましたが、noteにまとめたいので再度投稿します。

1日1億PVを支えるYahoo!天気バックエンド

Yahoo天気サービスについての概要やサービスを支えるプラットフォーム、システム、その課題についての話。

・Yahoo天気サービスについて

・地図を使って情報を視覚的に判断できる領域にこだわって提供している。
・2017年には3,000万ダウンロードを達成し、かなり多くの人に利用してもらっている。
・全国に自社のデータセンターを所有し、災害に対応している。
・openstackを使ってプライベートクラウド環境を構築して、その上でサービスを運営している。

Yahoo天気はシンプルでわかりやすい

他の会社の天気アプリも使ったことがあるんですが、Yahoo天気はシンプルでわかりやすいんですよね。

天気ってわざわざアプリを開いてまで見るようなことはあまりしなくて、ウィジェットを見るだけで今日の天気がわかるのが一番ベスト。

その点Yahoo天気はウィジェットだけでも私の欲しい情報が手に入ります。

このウィジェットだけでわかるシンプルさとわかりやすさを求めるならYahoo天気がおすすめです。

・Yahoo天気システムについて

台風や豪雨時には1日1億PVを超えてくるため、バックエンドとしてしっかりとレスポンスを返せるようなシステム構築をしている。

アーキテクチャはオーソドックスな3層構造となっている。(WEB・API・DATA)

データセンターを東西に分けることで、方系が落ちても硬系で運用できるように設計している。

かなりシンプルな構造であるが、シンプルであるが故に設計もしやすいし、障害対応に速やかに対応できるのが良い。

データセンター東西に分けることでシステムの可用性を向上させます。

特に、基幹システムのようにシステムの停止が事業運営に多大な影響を及ぼす場合、システムの可用性を維持することはとりわけ重要となります。

可用性については以下の記事がわかりやすいです。

・台風19号での事例

・台風19号の際に想定以上のリクエストが発生して画像配信サーバーがダウンした。
・西日本豪雨災害の負荷を想定してサーバー台数を確保していたが、それ以上にリクエストが発生し、ユーバーに最適な情報が届けられなかった。
・今後の課題としては、想定を超えたリクエストに柔軟に対応できるアーキテクチャを移行すること。

台風19号の被害は甚大でしたね。

それが故にサービスへのアクセスもかなり多かったみたいです。

また、人口の多い関東圏での災害だったため、西日本豪雨災害の負荷を超えるリクエスト数になったと考えられます。

その中で、想定の範囲を超えても柔軟に対応するシステムを構築するのが今後の課題です。

・まとめ

・自社プラットフォームがサービス開発に集中できる環境を提供
・アーキテクチャはシンプルに
・コンテンツ特性に応じたキャッシュ戦略
・天気災害サービスは絶対に落とさない


Mapbox移行プロジェクトで担当した初のPM経験について

2年目という若さでありながら、Mapbox移行プロジェクトのPMを担当した話。

・Mapbox移行プロジェクトとは

YOLPのサービス終了に伴ってYahoo天気災害の地図のプラットフォームをmapboxの地図に移行するプロジェクト。
例:雨雲レーダー、大雨警戒レベルマップ、避難所マップ等
pc版やアプリ版等、移行対象が多数ある。

Mapboxについては、以下の記事にも詳しく書いてありました。

世界中で採用されている地図サービスです。

日本でも徐々に利用されるようになってきて、近年注目を浴びています。

世界中で利用されているのにはいくつかの理由がありますが、カスタマイズの簡単さやデータソースの豊富さが影響しているようです。

・プロジェクトの進め方

・メンバーはそれぞれ担当コンテンツをもって開発。
・コミュニケーションはSlackやzoom。
・テレワーク等になっても、元々使っていたツールであるため、特にコミュニケーションで障害になることはなかった。

Web会議ツールとして当たり前になってきたZoomは、Slackと連携させることができます。

一度連携してしまえば、仕事の打ち合わせや連絡などでSlackをやり取りしている際にシームレスにミーティングを始めることが可能になります。

連携方法に関しては以下の記事から。

・PM経験の話

・ベテランの方に向けて若手の自分がやるのが戸惑った。
・苦手なところでも場数を踏んで行くことが大切。
・もっと重要な決定をしている上層部の方々のことを考えると、自分が決めていることはなんてことない。
・場数を踏んで少しずつ慣れていけた。
・Mapboxは外国の企業であるため、コミュニケーションが大変だった。
・YOLPが高機能が故に、mapboxに移行するときにいろいろ工夫が必要であった。

新卒2年目でPMって改めてすごいことですよね。

私が2年目の頃はやっと単独で業務を担当させてもらったくらいで、特に誰かを指導したりすることはありませんでした。

・PMとしての反省点

スケジュール管理は、開発している人がいつ終わるのかとと言うところも大事だが、制作や企画と関連して仕事しているので、次何をするのか、もっとメンバー全員が理解しておけばよかった。

チームとして仕事をする以上、自分の仕事だけでなく、他人の仕事内容も把握した上で進めていかないとうまくチームが機能しません。

個人の能力も大事ですが、その能力が合わさって初めて力を発揮する感じですかね。

・PMとしてできてよかったこと

・エンジニアとして自分の担当していることだけをやるのではなくて、メンバーが困っているときには一緒になって一緒のレベルで悩めることができた。
・自分が担当のコンテンツはなかったが、一緒に悩むことで課題の内容の実感が持てて、報告する際に自分の言葉で説明できるし、自分が理解できているが故に課題を解決できた。

これもチームとして働く上で欠かせないことですよね。

誰かに報告する際は特に、実際に自分が経験してないとうまく言語化できないことが多いので、最終的なゴールを頭に入れて、他人の仕事にも積極的に関わっていく必要があると感じました。

・PMをした感想

・楽な仕事はないが、それにしても本当にとても大変だったなと思った。
・大変だったが、大変の中で自分の最大値が引き上がった感じがしてとても成長できたと言う実感があった。
・PM視点からもメンバー視点からも視野が広がってよかったと思った。

エンジニアとして一番成長が実感できる部分が見えて素敵でした。

自分のできること以上のことを経験して成長していくことが大切ですね。

日本列島の今の揺れを伝える「リアルタイム震度情報」について

・リアムタイム震度とは

・日本列島の揺れをリアルタイムに確認
・今はひっそりしているが、今後はトップページなどのYahooの各サービスとの連携も行っていく予定

・リアルタイム震度の要件

・リアルタイムな情報提供
・高負荷アクセスに耐える
・どなた様にもわかりやすくする

大きな地震が発生した瞬間の秒間アクセスは約2〜3万。
それでもきちんとレスポンスを返すとこが大切です。

Yahooのユーザーは多種多様なので、高機能なものというよりも、誰にでも使えるものを目指す必要があります。

・リアルタイム地震のための工夫

・最速経路で情報入手する
・データ処理を早く
・高機能よりシンプルな機能で速度を優先する
・一つ一つ処理を早くするのももちろんのこと、表現するものを減らす。
・データ量をユーザーに近づくにつれて小さくしていく。

キャッシュによる負荷対応について、解決できたのが新しい技術ではなく、昔からよくある普通の方法だったというそういうことが起きるのがエンジニアリングの面白いところの一つです。

・まとめ

・経路は最短
・処理は最速
・容量は最小
・負荷対策は大切

本当に課題に見合った解決方法かどうか、柔軟に考えられる力が重要な要素です。

防災速報アプリの新機能!「災害マップ」機能の裏側について

・Yahoo防災速報

緊急地震速報や気象系の情報を通知で受け取れる

・災害マップでできること

・状況を投稿
・周辺状況を確認
・異常感知通知

災害マップが生まれた背景は、災害から1人でも多くの人を助けるためという思いからです。

実際に2年前に発生した西日本豪雨の被災地へ、天気災害メンバーが主体に視察に行ってそして現地の被災者や自治体から伺った体験談をもとに考えられています。

被災地はたくさんの災害情報や避難情報というのが当時流れたにもかかわらず、それが被災者の方々の行動に結びつかず、結果逃げ遅れて被害に遭われた方が多くいます。

災害最中にいるユーザーに大して避難情報を支援するために日々開発しています。

・災害マップの裏側

悪質な投稿に対しても、以下のような様々な対策が施されており、クリーンな環境を実現している。

・災害渦中にいるユーザーのみが投稿可能
・機械学習によるNGワード判定
・運営によるチェック体制

異常を察知したら、Geohashを応用して投稿情報を集約・通知の配信を実現している。

Geohash:地図を格子状に分割し、その1区画を短い文字列で表現

・まとめ

災害マップとは

・災害情報×ユーザー投稿でより身の回りの状況を可視化し、避難や供えるための判断材料を定k証する機能
・設計思想やabuse対策により非常にクリーンなユーザー投稿情報を提供
・Geohasの応用により、異常感知通知を実現


最後に

サーバー環境などの規模が凄すぎて、とにかく圧倒されました。

発災時の瞬間的なリクエストがかなり多いので、それに対応するためにサーバー数をかなり確保しているみたいですね。

私はまだアプリを使う側ですが、早く作る側になって誰かの役に立ちたいとつくづく思います。

自分でできる範囲は限られるので、やはり組織に入って実際に経験してみることが本当に大事だと思います。

その際には公務員での災害の経験が活かせたらいいですね。


この記事が気に入ったらサポートをしてみませんか?