smartnewsのニュース配信を支えるサーバ技術 / kazhiro sera @ smartnews,inc. #jjug_ccc
TRANSCRIPT
![Page 1: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/1.jpg)
SmartNews のニュース配信を支えるサーバ技術
Kazhiro Sera @seratchSmartNews, Inc.
![Page 2: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/2.jpg)
http://about.smartnews.com/ja/team/
自己紹介
2
![Page 3: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/3.jpg)
SmartNews とは
3
![Page 4: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/4.jpg)
4
![Page 5: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/5.jpg)
5
![Page 7: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/7.jpg)
7
![Page 8: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/8.jpg)
SmartNews と AWS
8
![Page 9: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/9.jpg)
https://aws.amazon.com/jp/solutions/case-studies/smartnews/https://aws.amazon.com/solutions/case-studies/smartnews/ 9
![Page 10: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/10.jpg)
http://www.slideshare.net/smartnews/20160127-awssmartnews
利用している AWS マネージドサービス
10
![Page 11: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/11.jpg)
http://www.slideshare.net/smartnews/20150415-smartnews-technightrev3
今日話すのは一部です(api、engine)
11
![Page 12: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/12.jpg)
http://www.slideshare.net/smartnews/20150415-smartnews-technightrev3
今日話すのは一部です(api、engine)
12
![Page 13: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/13.jpg)
ニュース配信の主要な構成(最新・一部略)
13
![Page 14: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/14.jpg)
フロントエンドの配信サーバ部分(api)
14
![Page 15: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/15.jpg)
バックエンドでの記事分析(engine)
15
![Page 16: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/16.jpg)
SmartNews と Java
16
![Page 17: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/17.jpg)
再掲:ニュース配信の主要な構成
17
![Page 18: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/18.jpg)
AWS マネージドサービスと話す Java アプリ群
18
![Page 19: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/19.jpg)
Java アプリケーションの実装
・Spring Boot で実装された小規模なアプリケーションを連携させる構成
・フロントエンド側はトラフィックの増減で scale out/in する Web サーバ(ASG の活用)
・engine 側は適切な粒度に分割された Java アプリケーション群
・処理結果を Java SDK で AWS マネージドサービスと連携するのが主な責務(engine 内のサービス間は主に Kinesis ストリームを介して連携)
・処理結果を S3、DynamoDB などに適宜書き出す
19
![Page 20: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/20.jpg)
実装上の工夫など
・Java8 + Lombok(@Data、@Slf4j、@ToString)
・シンプルな Java マルチスレッド処理
・一部で RxJava を使った実装
・Spring Boot + Swagger を使った API 仕様の公開
・Apache Spark の活用は Scala で実装するのが主流
・最近 Kotlin で書いているアプリケーションも
20
![Page 21: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/21.jpg)
一方 itamae を始め DevOps 系は Ruby 中心
21
![Page 22: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/22.jpg)
DevOps は SRE チームとの共同作業
・SRE(Site Reliability Engineering)Team
・itamae-kitchen/itamae for provisioning
・winebarrel/roadworker for Route 53 management
・fluent/fluentd for log aggregation
http://dev.classmethod.jp/study_meeting/classmethod-smartnews-awsnight/22
![Page 23: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/23.jpg)
http://developer.smartnews.com/blog/2015/10/01/20151001itamae-autoscaling-codedeploy/23
![Page 24: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/24.jpg)
データサイエンスを活かすサービス構成
24
![Page 25: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/25.jpg)
バックエンドでの記事分析(engine)
25
![Page 26: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/26.jpg)
http://www.slideshare.net/smartnews/20150415-smartnews-technightrev3
バックエンドでの記事分析(engine)
26
![Page 27: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/27.jpg)
http://www.slideshare.net/smartnews/smart-news-webmining
記事分析基盤の概要(1)
27
![Page 28: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/28.jpg)
http://www.slideshare.net/smartnews/stremspark-streaming-kinesisofflinehive
記事分析基盤の概要(2)
28
![Page 29: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/29.jpg)
http://www.slideshare.net/smartnews/stremspark-streaming-kinesisofflinehive
ログ解析基盤の概要
29
![Page 30: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/30.jpg)
http://www.slideshare.net/smartnews/stremspark-streaming-kinesisofflinehive
記事ランキングのアーキテクチャ
30
![Page 31: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/31.jpg)
GitHub から始まる開発ワークフロー
31
![Page 32: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/32.jpg)
開発ワークフロー
・GitHub の Pull Request をコードレビュー
・GitHub の PR を自動で JIRA issue と連携
・QA テスト確認した後 master へ merge 〜 CodeDeploy
・CircleCI ジョブがテスト実行だけでなく、ビルド成果物を S3 にアップロード、
CodeDeploy ジョブを kick するところまでやる
・itamae レシピ、Routefile も GitHub 上でレビューしてから反映
・さらに NewRelic、Datadog、Slack、PagerDuty の活用
32
![Page 33: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/33.jpg)
開発 〜 デプロイ
33
![Page 34: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/34.jpg)
http://developer.smartnews.com/blog/2015/10/01/20151001itamae-autoscaling-codedeploy/
GitHub 〜 CircleCI 〜 CodeDeploy
CircleCI でのビルドでS3 に置かれたリリースバイナリをCodeDeploy でEC2 インスタンス側から取得して切り替え
34
![Page 35: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/35.jpg)
CircleCI Configuration (circle.yml)
http://developer.smartnews.com/blog/2015/10/01/20151001itamae-autoscaling-codedeploy/
プロジェクト毎の差分がある場合はcircle.yml で調整することもある
35
![Page 36: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/36.jpg)
GitHub Pull Request Template
開発フローの明確化デプロイに関する暗黙知をなくす
36
![Page 37: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/37.jpg)
運用監視
37
![Page 38: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/38.jpg)
Datadog
Datadog
38
![Page 39: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/39.jpg)
SmartNews と Datadog (2015.02)
https://speakerdeck.com/takus/smartnews-to-datadog
一年以上前の @takus の発表資料が詳しい今では完全に SmartNews のインフラになっています
39
![Page 40: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/40.jpg)
Metrics をつくる
Datadog Agent でデータを送るようにしたらUI からメトリクスを可視化するだけ
40
![Page 41: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/41.jpg)
Dashboard をつくる
41
![Page 42: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/42.jpg)
Monitor をつくる
通知先は Slack やPagerDuty を指定
42
![Page 43: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/43.jpg)
Slack 連携
43
![Page 44: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/44.jpg)
New Relic
フロントエンドの Web サーバだけでなくengine 側のオフラインバッチ処理もNon-Web transaction として trace する
44
![Page 45: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/45.jpg)
PagerDuty
45
![Page 46: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/46.jpg)
緊急時に電話・SMS がくるよう設定
46
![Page 47: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/47.jpg)
PagerDuty Incidents
Triggered > 担当 Engineer が Acknowledge して対応 > Resolved
47
![Page 48: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/48.jpg)
SmartNews Ads
48
![Page 49: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/49.jpg)
http://developer.smartnews.com/blog/2016/01/15/smartnews-technight-vol5/49
![Page 50: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/50.jpg)
http://developer.smartnews.com/blog/2016/01/15/smartnews-technight-vol5/50
![Page 51: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/51.jpg)
これからのSmartNews
51
![Page 52: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/52.jpg)
52
![Page 53: SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc](https://reader033.vdocuments.mx/reader033/viewer/2022051300/587eec4d1a28ab17388b7003/html5/thumbnails/53.jpg)
SmartNews を進化させるエンジニアを募集中です
・まだまだ道半ば、世界中の人たちに使ってもらうために
・小さなチーム、大きな仕事(外部サービスの活用、適材適所な技術選択)
・SmartNews というサービスに愛着がある
・世界展開するサービスを自ら実現したい
・得意な Java / JVM で思う存分サービス開発をしたい
・データサイエンスでサービスに貢献したい
・興味のある方はぜひ懇親会でお話させてください
53