SlideShare a Scribd company logo
1 of 17
@ku_suke

第一回このこん応募作品
What is
Social Count ?
ブログ記事などの
ソーシャルアクショ
ン数(はてぶ、
faceboook、
twitter、Google+、
Pocket)を合算する
ことで、エントリに
対するつながりを可
視化するサービス。
人気記事がわかるブ
ログパーツもある。
Overview
 フロントサーバ

パーツ

image

Front server(共用鯖+ストレージ)

 APIサーバ
 集計済みデータの返却

 バッチサーバ

widget

www

Node.js / express

Node.js batch

HandlerSocket
Plugin (NoSQL)

SQL query

MySQL 5.5
(Percona)

 静的コンテンツ・ブログ

 各ソーシャルデータの集計

Web APIs
(Fb/Tw/G+..)

API/Batch server
(VPS)
Service core
 URLを受け取る

↓
 各ソーシャルサービスに
件数を問い合わせる
↓
 合算して保存
↓
返 却 !

URL

SocialCount.info
Why social count?
 技術ブログとアメブロを2つ書いてみて、はてぶと

facebookのLike、Twitterへの広がりが異なることに
気づいた。
 自分が掲載しているソーシャルボタン以外のアク

ション数には意外と気づきにくい。
 ソーシャル上での盛り上がりを可視化することで、

もっと読者と

ことができる。
技術的な話-1
 Node.jsを選んだ理由
 HelloWorldくらいしか経験がなかったから遊んで
見たかった。(express/ejs/async… etc)
 複数の外部APIへの問い合わせを並列にリクエストで

きるから。(直列だと単純に5倍近くかかる)
 API提供を考えていたのでパフォーマンスが

出そうだったから。
技術的な話-2
 MySQL+HandlerSocket pluginにした理由
 MySQLの扱いが楽+SQLパーサを通さない高速動作
 5.6+innoDB memcached pluginにしようとしたとこ

ろ、
namespace利用時の挙動が安定しなかった 。
 HandlerSocketが用意されているPercona 5.5が

楽ちんだった。
 もちろんNode用のnpmもあった。
スケール案-1
 スケールアップさせる。

(コンビニワインコース→ドンペリコース)

データがメモリに載る間はこれで問題なさそう。
スケール案-2
 バッチサーバを分ける
 フロントのreadは負荷が低いので

Node.js

まずはこれでのりきる。

MySQL

Node.js

Node.js
スケール案-3
 フロントも厳しければ分離。
Node.js
MySQL Slave

Node.js

Node.js

MySQL Master
Node.js

Node.js

Node.js

MySQL Slave
Replication
なので簡単
その他
 サポートする技術
 Gitでデプロイ
 Newrelicで監視
 Perconaのツールでメンテ
 台数が増えたらChef化

Node.js
MySQL
ブログパーツ
取得したURLをバッチ
で抽出し、記事のメタ
データを取得しておい
てブログパーツ化。
記事にアイキャッチ画
像がある場合は表示す
るなどブロガーにはう
れしい仕様。
ブログパーツのロードタイミング
 ブログパーツの方式は大きく分けて2つ。Iframe型

か、document.writeなど直接書き込むタイプ。
 Scriptの非同期ロードなど、ブログの表示速度を遅

くしないことが重要。
 今回は動作が安定しているiframe版を採用。

(Twitterとかfacebookもiframeだったので、
マネしとけば大丈夫だろうという考え。)
記事のタイトル・画像抽出
 最初正規表現で頑張ろうとした。
 <title>タグにブログ名が入る問題。

「SocialCountを作った – ku-sukeのブログ」
 <og:image>タグが必ずしも入っていない問題。
 さんざん悩んだ挙句、ReadabilityAPIを利用。
https://www.readability.com/developers/api
サムネイル画像の配信
 そのままだとくそでかいので、いったんストレージ

に保管+nginx+ngx_small_lightで動的縮小配信

nginx +
small_light

元サイト

AmazonS3
互換ストレージ

ConoHa VPS
ぜひ使ってみてね!
http://socialcount.info
おまけ:VPSの移行
せっかくなので、ConoHa契約してみた。
別サービス間とはいえ国内なので、
SSHでポートフォワーディングを張ったうえで、
MySQLのレプリケーションはるだけ!

Node.js

Node.js

MySQL

MySQL
SSH
Tunnel

More Related Content

What's hot (6)

WordPressで制御するこれからのIoT
WordPressで制御するこれからのIoTWordPressで制御するこれからのIoT
WordPressで制御するこれからのIoT
 
MackerelAPI使ってみた
MackerelAPI使ってみたMackerelAPI使ってみた
MackerelAPI使ってみた
 
S3 Event Notifications やってみた
S3 Event Notifications やってみたS3 Event Notifications やってみた
S3 Event Notifications やってみた
 
Infrastructure as code LT AWS + Ansibleのお悩み相談
Infrastructure as code LT AWS + Ansibleのお悩み相談Infrastructure as code LT AWS + Ansibleのお悩み相談
Infrastructure as code LT AWS + Ansibleのお悩み相談
 
5分でできる ebfly
5分でできる ebfly5分でできる ebfly
5分でできる ebfly
 
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
 

Viewers also liked

Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Badoo Development
 
Internet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLInternet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQL
FromDual GmbH
 
Сергей Сверчков и Виталий Руденя. Choosing a NoSQL database
Сергей Сверчков и Виталий Руденя. Choosing a NoSQL databaseСергей Сверчков и Виталий Руденя. Choosing a NoSQL database
Сергей Сверчков и Виталий Руденя. Choosing a NoSQL database
Volha Banadyseva
 

Viewers also liked (7)

Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
Доклад Сергея Аверина на CodeFest-2013. "MySQL+HandlerSocket=NoSQL".
 
HandlerSocket - A NoSQL plugin for MySQL
HandlerSocket - A NoSQL plugin for MySQLHandlerSocket - A NoSQL plugin for MySQL
HandlerSocket - A NoSQL plugin for MySQL
 
Convergence
ConvergenceConvergence
Convergence
 
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглитьТо, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
 
Mysql handle socket
Mysql handle socketMysql handle socket
Mysql handle socket
 
Internet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLInternet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQL
 
Сергей Сверчков и Виталий Руденя. Choosing a NoSQL database
Сергей Сверчков и Виталий Руденя. Choosing a NoSQL databaseСергей Сверчков и Виталий Руденя. Choosing a NoSQL database
Сергей Сверчков и Виталий Руденя. Choosing a NoSQL database
 

Similar to Inside of social count

ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
Akira Inoue
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
Shotaro Suzuki
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Kenta Suzuki
 

Similar to Inside of social count (20)

開発者におくる Power BI を使う時に考えるべきアーキテクチャ ~ データを溜めるのは誰だ? ~
開発者におくる Power BI を使う時に考えるべきアーキテクチャ ~ データを溜めるのは誰だ? ~開発者におくる Power BI を使う時に考えるべきアーキテクチャ ~ データを溜めるのは誰だ? ~
開発者におくる Power BI を使う時に考えるべきアーキテクチャ ~ データを溜めるのは誰だ? ~
 
Data API + AWS = (CMS どうでしょう 札幌編)
Data API + AWS =  (CMS どうでしょう 札幌編)Data API + AWS =  (CMS どうでしょう 札幌編)
Data API + AWS = (CMS どうでしょう 札幌編)
 
Data API 2.0
Data API 2.0Data API 2.0
Data API 2.0
 
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworkerおれおれブログシステムにServiceWorkerを導入してみた #serviceworker
おれおれブログシステムにServiceWorkerを導入してみた #serviceworker
 
Windows Azure ではじめる Windows ストアアプリ開発
Windows Azure ではじめる Windows ストアアプリ開発Windows Azure ではじめる Windows ストアアプリ開発
Windows Azure ではじめる Windows ストアアプリ開発
 
ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説ASP.NET シングル ページ アプリケーション (SPA) 詳説
ASP.NET シングル ページ アプリケーション (SPA) 詳説
 
Windows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWSWindows 開発者のための Dev&Ops on AWS
Windows 開発者のための Dev&Ops on AWS
 
SharePoint Business Connectivity Services を使用した外部アプリケーション連携
SharePoint Business Connectivity Services を使用した外部アプリケーション連携SharePoint Business Connectivity Services を使用した外部アプリケーション連携
SharePoint Business Connectivity Services を使用した外部アプリケーション連携
 
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like databaseオフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
オフラインWebアプリの再到来で今、再び注目されるAPIの本命 ーJavaScript SQL-like database
 
B 2-2今年の夏は azure でキマリ! azure 使いこなしテクニックin ベルサール汐留
B 2-2今年の夏は azure でキマリ! azure 使いこなしテクニックin ベルサール汐留B 2-2今年の夏は azure でキマリ! azure 使いこなしテクニックin ベルサール汐留
B 2-2今年の夏は azure でキマリ! azure 使いこなしテクニックin ベルサール汐留
 
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
未来のwebに欠かせないREST APIをApache Solr + Drupal8で実装しよう@PHPカンファレンス2016 東京
 
AWS SDK for Haskell開発
AWS SDK for Haskell開発AWS SDK for Haskell開発
AWS SDK for Haskell開発
 
HTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろうHTML5でオフラインWebアプリケーションを作ろう
HTML5でオフラインWebアプリケーションを作ろう
 
キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐キャバァーン! サツバツエアアイオー弐〇壱弐
キャバァーン! サツバツエアアイオー弐〇壱弐
 
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips   Prism 4.5 & Kona project 等のご紹介
XAML と C# を使った Windows ストアアプリ(LOB)構築のためのtips Prism 4.5 & Kona project 等のご紹介
 
ADO.NETでつながるクラウドデータ連携
ADO.NETでつながるクラウドデータ連携ADO.NETでつながるクラウドデータ連携
ADO.NETでつながるクラウドデータ連携
 
Workshop1-03
Workshop1-03Workshop1-03
Workshop1-03
 
Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築Jenkinsとhadoopを利用した継続的データ解析環境の構築
Jenkinsとhadoopを利用した継続的データ解析環境の構築
 
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
 
イマドキ!ユースケース別に見るAWS IoT への接続パターン
イマドキ!ユースケース別に見るAWS IoT への接続パターンイマドキ!ユースケース別に見るAWS IoT への接続パターン
イマドキ!ユースケース別に見るAWS IoT への接続パターン
 

More from Yusuke Kawabata (9)

PHPとフロントのイイ関係・動くスタイルガイドをつくろう
PHPとフロントのイイ関係・動くスタイルガイドをつくろうPHPとフロントのイイ関係・動くスタイルガイドをつくろう
PHPとフロントのイイ関係・動くスタイルガイドをつくろう
 
#Devlove 甲子園日本シリーズ ku_suke
#Devlove 甲子園日本シリーズ ku_suke#Devlove 甲子園日本シリーズ ku_suke
#Devlove 甲子園日本シリーズ ku_suke
 
Devlove甲子園西日本大会ku_suke
Devlove甲子園西日本大会ku_sukeDevlove甲子園西日本大会ku_suke
Devlove甲子園西日本大会ku_suke
 
Devlove甲子園西日本大会川畑予告編
Devlove甲子園西日本大会川畑予告編Devlove甲子園西日本大会川畑予告編
Devlove甲子園西日本大会川畑予告編
 
Building your website with team - Frontrend in Osaka
Building your website with team - Frontrend in OsakaBuilding your website with team - Frontrend in Osaka
Building your website with team - Frontrend in Osaka
 
Quercus on gae公開版
Quercus on gae公開版Quercus on gae公開版
Quercus on gae公開版
 
Tsuripon 20111213
Tsuripon 20111213Tsuripon 20111213
Tsuripon 20111213
 
Octoba presen 20111213_public
Octoba presen 20111213_publicOctoba presen 20111213_public
Octoba presen 20111213_public
 
勉強会用掲示物(ゴミ分別)
勉強会用掲示物(ゴミ分別)勉強会用掲示物(ゴミ分別)
勉強会用掲示物(ゴミ分別)
 

Recently uploaded

研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
atsushi061452
 

Recently uploaded (14)

研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアルLoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
LoRaWAN無位置ロープ式水漏れセンサーWL03A 日本語マニュアル
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 

Inside of social count