Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

はじめに

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

自己紹介

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

SmartNews とは

Slide 8

Slide 8 text

SmartNews とは

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

SmartNews の 技術スタック

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

● 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 の技術スタック

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

おわりに

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

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