Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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

8,482 views

Published on

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

Published in: Technology
  • Be the first to comment

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

×