SmartNews のニュース配信
を支えるサーバ技術
Kazhiro Sera @seratch
SmartNews, Inc.
http://about.smartnews.com/ja/team/
自己紹介
2
SmartNews とは
3
4
5
今日はニキビの日
http://today.smartnews.com/
6
7
SmartNews と AWS
8
https://aws.amazon.com/jp/solutions/case-studies/smartnews/
https://aws.amazon.com/solutions/case-studies/smartnews/ 9
http://www.slideshare.net/smartnews/20160127-
awssmartnews
利用している AWS マネージドサービス
10
http://www.slideshare.net/smartnews/20150415-smartnews-technightrev3
今日話すのは一部です(api、engine)
11
http://www.slideshare.net/smartnews/20150415-smartnews-technightrev3
今日話すのは一部です(api、engine)
12
ニュース配信の主要な構成(最新・一部略)
13
フロントエンドの配信サーバ部分(api)
14
バックエンドでの記事分析(engine)
15
SmartNews と Java
16
再掲:ニュース配信の主要な構成
17
AWS マネージドサービスと話す Java アプリ群
18
Java アプリケーションの実装
・Spring Boot で実装された小規模なアプリケーションを連携させる構成
・フロントエンド側はトラフィックの増減で scale out/in する Web サーバ(ASG の活用)
・engine 側は適...
実装上の工夫など
・Java8 + Lombok(@Data、@Slf4j、@ToString)
・シンプルな Java マルチスレッド処理
・一部で RxJava を使った実装
・Spring Boot + Swagger を使った API ...
一方 itamae を始め DevOps 系は Ruby 中心
21
DevOps は SRE チームとの共同作業
・SRE(Site Reliability Engineering)Team
・itamae-kitchen/itamae for provisioning
・winebarrel/roadwork...
http://developer.smartnews.com/blog/2015/10/01/20151001itamae-autoscaling-codedeploy/23
データサイエンスを
活かすサービス構成
24
バックエンドでの記事分析(engine)
25
http://www.slideshare.net/smartnews/20150415-smartnews-technightrev3
バックエンドでの記事分析(engine)
26
http://www.slideshare.net/smartnews/smart-news-webmining
記事分析基盤の概要(1)
27
http://www.slideshare.net/smartnews/stremspark-streaming-
記事分析基盤の概要(2)
28
http://www.slideshare.net/smartnews/stremspark-streaming-
ログ解析基盤の概要
29
http://www.slideshare.net/smartnews/stremspark-streaming-
記事ランキングのアーキテクチャ
30
GitHub から始まる
開発ワークフロー
31
開発ワークフロー
・GitHub の Pull Request をコードレビュー
・GitHub の PR を自動で JIRA issue と連携
・QA テスト確認した後 master へ merge 〜 CodeDeploy
・Circle...
開発 〜 デプロイ
33
http://developer.smartnews.com/blog/2015/10/01/20151001itamae-autoscaling-codedeploy/
GitHub 〜 CircleCI 〜 CodeDeploy
Circl...
CircleCI Configuration (circle.yml)
http://developer.smartnews.com/blog/2015/10/01/20151001itamae-autoscaling-codedeploy/
...
GitHub Pull Request Template
開発フローの明確化
デプロイに関する暗黙知をなくす
36
運用監視
37
Datadog
Datadog
38
SmartNews と Datadog (2015.02)
https://speakerdeck.com/takus/smartnews-to-datadog
一年以上前の @takus の発表資料が詳しい
今では完全に SmartNews ...
Metrics をつくる
Datadog Agent でデータを送るようにしたら
UI からメトリクスを可視化するだけ
40
Dashboard をつくる
41
Monitor をつくる
通知先は Slack や
PagerDuty を指定
42
Slack 連携
43
New Relic
フロントエンドの Web サーバだけでなく
engine 側のオフラインバッチ処理も
Non-Web transaction として trace する
44
PagerDuty
45
緊急時に電話・SMS がくるよう設定
46
PagerDuty Incidents
Triggered > 担当 Engineer が Acknowledge して対応 > Resolved
47
SmartNews Ads
48
http://developer.smartnews.com/blog/2016/01/15/smartnews-technight-vol5/49
http://developer.smartnews.com/blog/2016/01/15/smartnews-technight-vol5/50
これからの
SmartNews
51
52
SmartNews を進化させるエンジニアを募集中です
・まだまだ道半ば、世界中の人たちに使ってもらうために
・小さなチーム、大きな仕事(外部サービスの活用、適材適所な技術選択)
・SmartNews というサービスに愛着がある
・世界展開する...
Upcoming SlideShare
Loading in …5
×

SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc

252 views
37 views

Published on

SmartNewsのニュース配信を支えるサーバ技術
@ JJUG CCC 2016 Spring
Speaker by Kazhiro Sera @ SmartNews,Inc.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
252
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

SmartNewsのニュース配信を支えるサーバ技術 / Kazhiro Sera @ SmartNews,Inc. #jjug_ccc

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

×