Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NIKKEI Tech Talk #4 日経電子版のバックエンド開発全般の紹介/nikkei-tech-talk-20230216-1

NIKKEI Tech Talk #4 日経電子版のバックエンド開発全般の紹介/nikkei-tech-talk-20230216-1

Nikkei Tech Talk #4 で発表した際の資料です。日経電子版のバックエンド開発全般の紹介です。
https://nikkei.connpass.com/event/272705/

More Decks by 日本経済新聞社 エンジニア採用事務局

Other Decks in Technology

Transcript

  1. 2023/2/16
    日本経済新聞社 API-Backendチーム 髙安
    日経電子版のバックエンド開発全般の紹介
    ~メディアのバックエンド~
    NIKKEI TECH TALK #4

    View Slide

  2. #nikkei_tech_talk
    アジェンダ
    2
    1. 日経電子版とAPI-Backendチームの概要紹介
    2. 日経電子版のバックエンド開発紹介
    a. 記事をユーザーに届けるまで
    b. アクセス規模と負荷を捌く工夫
    c. 内製開発
    3. まとめ

    View Slide

  3. #nikkei_tech_talk
    自己紹介 
    3
    ● Osamu Takayasu
    ● 2015年中途入社
    ● API-Backendチーム兼技術企画G 所属
    ● 5時おき&在宅勤務で朝活が充実
    ○ 筋トレ・ラン・読書・英語・Podcast

    View Slide

  4. #nikkei_tech_talk
    日経電子版
    4
    ● 有料会員数は約83万ID※1
    、無料会員数は約500万ID
    ● 経済分野のニュースを中心にWebサイト、スマホアプリで配信
    ● AI推薦などのパーソナライズ機能を提供
    ※1 2022/7/1 時点 https://www.nikkei.com/topic/20220715.html  
    ※2 2022/10/1 時点 https://marketing.nikkei.com/media/web/accessdata/

    View Slide

  5. #nikkei_tech_talk
    Client
    システム概要図
    5
    iOS/Android
    iOS/Android
    Web
    ・・・
    CDN BFF API Backends
    API
    Gateway
    Nikkei
    App
    Paper
    Viewer
    BFFs
    ・・・
    Nikkei ID
    Payment
    Search
    Paper
    Image
    ・・・
    CMS
    Message
    (Mail/Line
    /Push)
    Data
    Ads
    ・・・

    View Slide

  6. #nikkei_tech_talk
    電子版事業のチーム構成
    6
    Conversion ARPPU Retention
    職能
    目的
    ・・・
    アプリ
    Web
    Backend
    ・・・
    ◯ ◯ ◯
    ◯ ◯


    View Slide

  7. #nikkei_tech_talk
    API-Backendチームの役割
    7
    ● アプリ〜インフラ、開発〜運用をスコープとして、電子版の
    バックエンドシステムの技術的意思決定、開発速度、サービス
    品質に責任を持つ
    ● 電子版のコンテンツを信頼性高く提供する
    ● PdMや他チームと連携しながら、事業成長につながる提案、開
    発にコミットする

    View Slide

  8. #nikkei_tech_talk
    API-Backendチームメンバー
    8
    + フリーランスの方1名 + SESの方2名
    バックエンド/エンジニア採用/技術組織開発
    テックリード
    API/配信基盤/インフラ基盤の設計、運用
    バックエンド + ML。記事レコメンドなど
    バックエンド + ML。社内報サービス立ち上げなど

    View Slide

  9. #nikkei_tech_talk
    日経電子版のバックエンド開発紹介
    9

    View Slide

  10. #nikkei_tech_talk
    日経電子版のバックエンド開発紹介
    10
    ● 記事をユーザーに届けるまで
    ● アクセス規模と負荷を捌く工夫
    ● 内製開発

    View Slide

  11. #nikkei_tech_talk
    記事をユーザーに届けるまで
    11
    CMS群
    CMS
    編集ツール
    記事格納システム
    parse
    CMSのAPIから取得した
    JSONをS3に保存。メタ
    データの付与、変換処理
    をして”Article”に変換に
    してRDBに保存
    feed
    “Article”をElasticsearch
    用のJSONに変換し、メタ
    データをつけて返却する
    API
    Elasticsearch
    記事
    企業情報
    imgIX(CDN)
    S3
    記事
    メタデータ
    画像
    画像用proxy
    SearchAPI
    SearchAdmin
    APIGW BFF
    同義語辞書
    CDN

    View Slide

  12. #nikkei_tech_talk
    記事データを紹介
    12
    ● 記事データは約400項目
    ○ title, body, display_time, images, …
    ● 電子版の創刊から12年かけて継ぎ足されている
    ○ 「表示する媒体や画面別の表示用データ」
    ○ 「表示する媒体や画面別の記事を選択する検索用データ」
    ○ 「保存可・不可など制御用」など

    View Slide

  13. #nikkei_tech_talk
    記事データに関する課題
    13
    ● 記事データを管理しきれていない
    ● 主な原因
    ○ サーバーサイドで記事データを作るが、クライアント側の
    使われ方を知る機会が少ない
    ○ 電子版Web、アプリ以外に様々なクライアントがいる
    ○ 記事データを作成・編集する関係システムが、
    CMS/API-Backend/BFF と複数ある

    View Slide

  14. #nikkei_tech_talk
    記事データのvalidation
    14
    CMS群
    CMS
    編集ツール
    記事格納システム
    parse
    CMSのAPIから取得した
    JSONをS3に保存。メタ
    データの付与、変換処理
    をして”Article”に変換に
    してRDBに保存
    feed
    “Article”をElasticsearch
    用のJSONに変換し、メタ
    データをつけて返却する
    API
    Elasticsearch
    記事
    企業情報
    SearchAPI
    SearchAdmin
    APIGW BFF
    同義語辞書
    CDN
    ● 赤線の記事データを受け渡す境界でvalidateしたい
    ● validationを実装、整備中
    ○ rest_frameworkやjsonschemaを利用
    ● エラーを検知してslackに通知したり、ログ送信したりしてデー
    タの確認、及び修正対応

    View Slide

  15. #nikkei_tech_talk
    記事を表示する仕組み
    15
    ● どの記事をどこに出すかは重要
    ● 報道機関として、Webメディアとして

    View Slide

  16. #nikkei_tech_talk
    手積みシステム
    16
    ● 電子版トップページは、紙面の1面に相当
    ● 編集局がどの記事をどの並び順で、どの
    ような見出しで出すかをコントロール
    ● 紙と違い1日の中で何回か更新される

    View Slide

  17. #nikkei_tech_talk
    手積みシステム
    17
    ES
    記事
    企業情報
    S3
    記事
    メタデータ
    画像
    SearchAPI APIGW BFF CDN
    CMS群
    CMS
    手積み
    システム
    記事の並び順定義ファイルを取得

    View Slide

  18. #nikkei_tech_talk
    その他の記事表示ロジック
    18
    ● AI推薦
    ○ 協調フィルタリングやランキングなどを用いた記事レコメンド
    ● MyNews
    ○ ユーザーが登録した条件に応じた記事一覧
    ● ユーザー検索
    ○ 同義語辞書、重複記事排除、クエリ変換、企業データ付与
    ● 分類ごと(ex: 経済/マーケット/地域...)の記事一覧表示ロジック

    View Slide

  19. #nikkei_tech_talk
    アクセス規模と負荷を捌く工夫
    19

    View Slide

  20. #nikkei_tech_talk
    アクセス・配信の規模感
    20
    ● 月間2億PV
    ● API基盤へのアクセス: 2,500 req/sec
    ● Push
    ○ 数十万~数百万ユーザー宛
    ○ Push通知直後のアクセス: 数万 req/sec

    View Slide

  21. #nikkei_tech_talk
    負荷を捌く工夫
    21
    ● 稼働インスタンス数: 全体で300台以上
    ○ API基盤は約60台
    ● CDNのキャッシュヒット率は80~90%程度
    ○ JWTを利用したFastlyレイヤーでの権限判定
    ○ 記事更新時のタイムリーなcache purge
    ○ Pushによるspike時は個人別のデータアクセスを減らす

    View Slide

  22. #nikkei_tech_talk
    内製開発
    22

    View Slide

  23. #nikkei_tech_talk
    日経のイメージ
    23
    ● 日経 = エンジニアリング のイメージはまだなさそう
    ● カジュアル面談でお話すると、「こんなに内製開発していると
    は思っていなかった」というお声をいただく
    ● 入社した後でさえ「こんなに内製開発・・(以下略」

    View Slide

  24. #nikkei_tech_talk
    内製開発とは
    24
    ● 開発チームが以下の構成
    ○ チーム全員が社員か、一部が準委任契約の社外メンバー
    ● なぜ/何を/どうやって開発するかを社員が意思決定
    ● エンジニアが事業ドメインを理解し、能動的に動ける
    ● 内製開発ではない例
    ○ 社員のコードレビューなしにソースコードがマージされる
    ○ 請負開発で社員は要件定義のみ。コードは書かない

    View Slide

  25. #nikkei_tech_talk
    日経での内製開発
    25
    ● 日経電子版では内製開発を実施
    ● エンジニアの関わり方
    ○ 企画/調査・データ分析/要件定義/設計/開発/テスト
    ○ 各人のモチベーション・スキル・状況に応じて、上記の全
    部もしくは一部に携わる
    ○ 1on1などでコミュニケーションしながら進める

    View Slide

  26. #nikkei_tech_talk
    まとめ
    26
    ● メディアならでは/日経ならではのサービス開発
    ● 大規模アクセスを捌く/データを活用するサービス開発
    ● 内製開発を実践し、事業ドメインへ積極的にコミット

    View Slide