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

サーバサイドの技術スタック・アーキテクチャ総ざらい - SmartNews Tech Night in Fukuoka Vol.1

サーバサイドの技術スタック・アーキテクチャ総ざらい - SmartNews Tech Night in Fukuoka Vol.1

Nobutoshi Ogata

May 28, 2019
Tweet

More Decks by Nobutoshi Ogata

Other Decks in Technology

Transcript

  1. Nobutoshi Ogata
    Engineering Manager, Site Reliability Engineering
    SmartNews, Inc.
    サーバサイドの
    技術スタック・アーキテクチャ総ざらい

    View full-size slide

  2. 1. はじめに
    2. 自己紹介
    3. SmartNews とは
    4. SmartNews の技術スタック
    5. ニュースが配信される流れと規模
    6. ニュース配信のアーキテクチャ
    7. おわりに
    Agenda

    View full-size slide

  3. はじめに

    View full-size slide

  4. ● SmartNews のサーバサイドで利用している技術スタック・アーキテクチャに
    ついてざっとご紹介
    ● ニュース選定などのアルゴリズムに関する話はしません
    はじめに

    View full-size slide

  5. 自己紹介

    View full-size slide

  6. 尾形暢俊 (Nobutoshi Ogata)
    ● Engineering Manager, Site Reliability Engineering
    ● 2015 年 5 月に入社し、開発基盤やインフラ周りの整備を担当
    ● 2016 年より SRE チームを立ち上げ、Engineering Manager に
    ● ゲームと車と猫と酒で出来ています
    自己紹介
    @nobu666

    View full-size slide

  7. SmartNews とは

    View full-size slide

  8. SmartNews とは

    View full-size slide

  9. ● スマートフォン・タブレット向けニュースアプリ
    ● 日米 4,000 万以上のダウンロード
    ● 月間利用者数 (MAU) 1,000 万人以上
    ● マスコットキャラクターは地球くん
    SmartNews とは
    http://about.smartnews.com/ja/2019/02/20/20190220/

    View full-size slide

  10. SmartNews の
    技術スタック

    View full-size slide

  11. 本日は、ニュース配信基盤にしぼってお話をします
    SmartNews の技術スタック
    ニュース配信基盤
    広告配信基盤

    View full-size slide

  12. ● 基本的には AWS + Amazon Linux
    ● CDN は Akamai(一部 CloudFront) + WAF
    ● Java 8 → 11
    ○ 一部 Ruby, Golang, Scala, Kotlin
    SmartNews の技術スタック

    View full-size slide

  13. ● Online
    ○ ALB(CLB) + ASG + EC2
    ■ nginx + Spring Boot embedded Tomcat
    ○ ALB + ECS
    ■ nginx + Consul Template
    ○ EKS (検証中)
    ● DMP
    ○ EMR, Airflow, Hive LLAP, Presto
    ○ Chartio, Superset, Jupyter
    SmartNews の技術スタック

    View full-size slide

  14. ● Instance Provisioning
    ○ AMI に共通で必要なものを焼き込み
    ○ インスタンスがタグによって自律的に必要なものを Provisioning
    ○ Code Deploy によりアプリケーションを Deploy
    ● itamae, Terraform, CircleCI, Jenkins, VAddy
    SmartNews の技術スタック

    View full-size slide

  15. ● 監視・通知
    ○ Datadog + PagerDuty
    ○ Runscope
    ○ New Relic
    SmartNews の技術スタック

    View full-size slide

  16. ● PipelineDB
    ○ News 側では内部利用のみ
    ● Hazelcast
    ○ 後述
    ちょっと珍しいかもしれないもの

    View full-size slide

  17. ニュースが配信される
    流れと規模

    View full-size slide

  18. ニュース配信基盤のデータの流れ
    Publishers
    SNS

    View full-size slide

  19. ニュース配信基盤が扱う
    トラフィック・データの規模
    Online 30k+ requests / second
    Push Notification 25M+ users / 5 minutes
    Index 100k+ articles / day
    Log Aggregation 500M+ logs / day

    View full-size slide

  20. ニュース配信基盤が扱う
    トラフィック・データの規模
    CDN(Akamai) 480k+ hits / second
    35G+ bits / second
    120T+ bits / day

    View full-size slide

  21. ニュース配信の
    アーキテクチャ

    View full-size slide

  22. Online のアーキテクチャ
    ● メインのサービスは
    ○ API gateway under L7 LB (ALB)
    ○ search engine
    ○ personalized engine
    ● API gateway では
    ○ 複数のデータソースから非同期に結果を取得
    ○ I/O を極力減らして non-blocking に

    View full-size slide

  23. Online のアーキテクチャ
    ● Auto Scaling Group (ASG) で制御される EC2 群に
    よるサービス
    ○ ASG, Lambda, Simple Notification Service
    (SNS) を組み合わせて scale out を自動化
    ○ scale out が前提なので、scalable なアーキテク
    チャである必要がある

    View full-size slide

  24. Online のアーキテクチャ
    ● search engine は cache layer で守る
    ○ L1: in-memory
    ○ L2: Memcached cache cluster
    ● cache hit rate が重要
    ○ offline 処理で絶えず L1/L2 cache を作成

    View full-size slide

  25. Online のアーキテクチャ
    ● cache が効きづらい personalized engine には、
    in-memory data grid を採用し高速化
    ○ Hazelcast cluster
    ● Application Framework には Reactive Streams
    (Reactor) を採用
    ● 負荷状態に応じて自律的に処理内容を変更

    View full-size slide

  26. おわりに

    View full-size slide

  27. ● プロダクト・開発組織・サービス提供範囲の全てがより成長します
    ○ それに対して scalable なアーキテクチャが必要です
    ○ さらに高速で安定した分析基盤が必要です
    ○ 時差を超えて、より簡単・スムーズに開発できる環境が必要です
    ● もっとたくさんの仲間が必要です、ぜひ一緒にとりくみませんか!
    おわりに

    View full-size slide

  28. We are hiring!
    https://smartnews.workable.com/

    View full-size slide

  29. ご静聴ありがとう
    ございました

    View full-size slide