狠狠撸

狠狠撸Share a Scribd company logo
? Goalist Co.,Ltd. All rights reserved.
5億件以上の求人情報を蓄積する
汎用クローラエンジンのアーキテクチャと運用
株式会社ゴーリスト 鈴木 隆宏
2016/08/21 #crawler_ops
? Goalist Co.,Ltd. All rights reserved.
INDEX
1.自己紹介
2.会社紹介
3.クロール基盤 概要
4.クロール基盤 アーキテクチャ
5.クロール基盤 運用
6.今後の課題
2
? Goalist Co.,Ltd. All rights reserved.
自己紹介
3
? Goalist Co.,Ltd. All rights reserved.
名前
- 鈴木 隆宏(すーざん、すずたか、@_suzutt)
経歴
- 2016年6月にゴーリストに入社
- クローラ保守?運用
- Webサービス開発
- 以前はERPパッケージベンダーでパッケージ開発?保守
4
? Goalist Co.,Ltd. All rights reserved.
会社紹介
5
? Goalist Co.,Ltd. All rights reserved.
社名
株式会社ゴーリスト(Goalist Co.,Ltd)
住所 東京都千代田区神田須田町1‐18 アーバンスクエア神田ビル2階
設立
2011年1月5日
資本金
1,000 万円
役員 代表取締役 CEO 加藤 龍
取締役 CTO 入倉 康輔
取締役 COO 林 慶宗
事業内容 Airbnb?民泊運用データ分析?提供サービス「BnBInsight」
求人マーケットの戦略立案に特化した3C分析サービス「3Chart」
アポイントの獲得支援に特化したテレアポ管理ツール「KeyTalk」
高精度営業リスト生成ツール「Listlus」
求人情報アラートサービス「Reagle」
HRに特化したデータベース&ニュースメディア「HRog」
6
? Goalist Co.,Ltd. All rights reserved.
クロールの目的は?
7
? Goalist Co.,Ltd. All rights reserved.8
? Goalist Co.,Ltd. All rights reserved.
求人データ集計サービス
9
? Goalist Co.,Ltd. All rights reserved.
人材業界向けオウンドメディア
10
? Goalist Co.,Ltd. All rights reserved.
民泊データ分析
11
? Goalist Co.,Ltd. All rights reserved.
導入企業様(一部抜粋)
東京大学
100社を超える人材会社や、事業会社の採用担当者、研究機関にご利用いただいております。
12
? Goalist Co.,Ltd. All rights reserved.
取得サイト数
約150サイト
サービスを支える独自クロール基盤
取得総件数
5億件超
月間取得求人件数
2,000万件
稼働中サーバー台数
160台
マスタDB件数
900万件
最大取得項目数
50項目
13
? Goalist Co.,Ltd. All rights reserved.14
サービスを支える独自クロール基盤
? Goalist Co.,Ltd. All rights reserved.
ここから本題
15
? Goalist Co.,Ltd. All rights reserved.
クロール基盤 概要
16
? Goalist Co.,Ltd. All rights reserved.
クロール基盤開発の主要件
17
? Goalist Co.,Ltd. All rights reserved.
18
? Goalist Co.,Ltd. All rights reserved.
few people
19
? Goalist Co.,Ltd. All rights reserved.
クロール基盤開発の主要件
1. 最小限の開発?運用工数で多くの求人媒体に対応すること
2. エンジニア以外のメンバーでも運用可能であること
20
? Goalist Co.,Ltd. All rights reserved.
HOW?
21
? Goalist Co.,Ltd. All rights reserved.
サイトごとに異なるクロール?スクレイプ処理のルールを
設定により吸収する方式を採用
22
? Goalist Co.,Ltd. All rights reserved.
1つのエンジン(=ソースコード)
23
? Goalist Co.,Ltd. All rights reserved.
媒体ごとに設定ファイル
24
? Goalist Co.,Ltd. All rights reserved.
設定ファイルとEC2インスタンスの用意のみで
様々な求人サイトへ対応可能
EC2 instance
config files
25
? Goalist Co.,Ltd. All rights reserved.
プログラミング不要
エンジニアではないメンバーでも取得が可能
26
? Goalist Co.,Ltd. All rights reserved.
クロール基盤 アーキテクチャ
27
? Goalist Co.,Ltd. All rights reserved.
EC2 instance contents
jar
scraped
files
Amazon S3
?
?
?
start
Amazon
RDS
job results
config files
28
scheduler
? Goalist Co.,Ltd. All rights reserved.
EC2 instance contents
jar
???
scraped
files
Amazon S3
?
?
?
scheduler
start
Amazon
RDS
job results
config files
29
? Goalist Co.,Ltd. All rights reserved.
Amazon S3
?
?
?
Amazon
Redshift
30
format & deliver
? Goalist Co.,Ltd. All rights reserved.
言語 Java(JSoup/WebDriver)
運用規模 150サイト/160EC2インスタンス
S3容量 約8TB
AWS運用コスト 約20万円/月
運用工数 約20h/週
31
? Goalist Co.,Ltd. All rights reserved.
AWSを徹底利用
AWS
Lambda Amazon EC2
Amazon
S3
Amazon
CloudFront
Amazon
DynamoDB
Amazon
Redshift
Amazon API
Gateway
Amazon
RDS
32
? Goalist Co.,Ltd. All rights reserved.
クロール基盤 運用
33
? Goalist Co.,Ltd. All rights reserved.
クロール設定ファイルについて
34
? Goalist Co.,Ltd. All rights reserved.
「検索結果ページ」と「詳細ページ」からなる
サイトのクロールに特化
35
? Goalist Co.,Ltd. All rights reserved.36
検索結果ページ 詳細ページ
? Goalist Co.,Ltd. All rights reserved.
設定する内容
1.ページングルール
2.詳細ページのURL取得ルール
37
? Goalist Co.,Ltd. All rights reserved.
ページングルール
38
https://www.google.co.jp/#q=goalist&page=1 https://www.google.co.jp/#q=goalist&page=2
1ページ目 2ページ目
※URLは架空です。
? Goalist Co.,Ltd. All rights reserved.
ページングルール
39
300 件 (0.30 秒)
#resultStats
1ページあたり3件の
詳細ページURL
? Goalist Co.,Ltd. All rights reserved.
詳細ページのURL取得ルール
40
div.g > div:nth-child(1) > h3:nth-child(1)
> a:nth-child(1)
? Goalist Co.,Ltd. All rights reserved.
nextPagePreStr=&page=
nextPagePostStr=
searchResultCountSelector=#resultStats
searchResultCountPreStr=
searchResultCountPostStr=件
searchResultCountByPage=3
detailPageUrlSelector=div.g >div:nth-child(1) >
h3:nth-child(1) > a:nth-child(1)
41
ページングルール
詳細ページのURLルー
ル
設定ファイル例
? Goalist Co.,Ltd. All rights reserved.
サイト改変があった場合、設定ファイルのみ修正すればOK
42
? Goalist Co.,Ltd. All rights reserved.
非エンジニアでも運用可能
43
? Goalist Co.,Ltd. All rights reserved.
スクレイプについても同様 (`?ω?? )???
44
? Goalist Co.,Ltd. All rights reserved.
運用のポイント
45
? Goalist Co.,Ltd. All rights reserved.
運用コストの最小化
インスタンス起動と同時にクロール開始
取得が終わると自動で停止
46
? Goalist Co.,Ltd. All rights reserved.
サイト改変に素早く対応
ジョブ実行結果をChatWorkに随時通知
Amazon EC2
47
? Goalist Co.,Ltd. All rights reserved.
2ヶ月間、運用してみた感想
48
? Goalist Co.,Ltd. All rights reserved.
ノンプラグラミングでクロールできるため、
サイト改変対応が楽
49
◎
? Goalist Co.,Ltd. All rights reserved.
ある程度のWeb知識があれば、2,3週間くらいで、
ほぼ一人で運用できるようになる
50
◎
? Goalist Co.,Ltd. All rights reserved.
サイトによっては設定のみで
スクレイプするのは辛い
(繰り返し処理、条件分岐の設定も追加したい)
51
△
? Goalist Co.,Ltd. All rights reserved.
設定ファイル変更のたびに
インスタンスを起動するのが少し面倒
52
△
? Goalist Co.,Ltd. All rights reserved.
今後の課題
53
? Goalist Co.,Ltd. All rights reserved.
汎用化
データの高精度化
54
? Goalist Co.,Ltd. All rights reserved.
インフラ構成の汎用化
55
? Goalist Co.,Ltd. All rights reserved.
管理画面の追加
56
? Goalist Co.,Ltd. All rights reserved.
動的ページのクロール汎用化
57
? Goalist Co.,Ltd. All rights reserved.
より汎用的なサイト構造に対応するクローラエンジンへ
58
? Goalist Co.,Ltd. All rights reserved.
文字列処理(自然言語処理)の精度向上、機械学習の採用
59
? Goalist Co.,Ltd. All rights reserved.
次期バージョンのクローラ開発へ
より汎用的で、誰もが簡単に利用できる
クローラを作りたい...
60
? Goalist Co.,Ltd. All rights reserved.
新領域のビックデータサービスを
開発してくれるエンジニアを絶賛募集中です!
開発エンジニア絶賛募集中!
61
? Goalist Co.,Ltd. All rights reserved.
Thanks for your attention!
62
Ad

Recommended

Datadog monitoring with HashiCorp
Datadog monitoring with HashiCorp
Masatomo Ito
?
DBMoto v9 新機能
DBMoto v9 新機能
株式会社クライム
?
DBMotoで異種間DBらくらく移行 Auroraも使っちゃうよ! - JAWS-UG Kyoto 第5回勉強会
DBMotoで異種間DBらくらく移行 Auroraも使っちゃうよ! - JAWS-UG Kyoto 第5回勉強会
株式会社クライム
?
搁○厂に学ぶイマドキの惭测厂蚕尝构筑运用
搁○厂に学ぶイマドキの惭测厂蚕尝构筑运用
Terui Masashi
?
クラウド时代だからこそ见直したい?笔贬笔アプリケーションのパフォーマンスチューニング
クラウド时代だからこそ见直したい?笔贬笔アプリケーションのパフォーマンスチューニング
Terui Masashi
?
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
?
教育機関&学生向けAzureプラン比較 2015年11月版
教育機関&学生向けAzureプラン比較 2015年11月版
Aya Tokura
?
础飞蝉导入时にまず考える〇〇のこと
础飞蝉导入时にまず考える〇〇のこと
recotech
?
jaws-ug kansai-special_aurora_20150207
jaws-ug kansai-special_aurora_20150207
Toshiyuki Konparu
?
#reco_tech AWSへ全面移行した今を話ます。
#reco_tech AWSへ全面移行した今を話ます。
recotech
?
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
Terui Masashi
?
Gcpug tokyo february 2016
Gcpug tokyo february 2016
Makoto Uehara
?
础耻谤辞谤补新时代の幕开けと顿测苍补尘辞顿叠の进化
础耻谤辞谤补新时代の幕开けと顿测苍补尘辞顿叠の进化
Classmethod,Inc.
?
#reco_tech Cloud searchでレコチョク検索の実現に向けて
#reco_tech Cloud searchでレコチョク検索の実現に向けて
recotech
?
私はこれで闯厂翱狈をやめました?あるいは础奥厂の设定をコード化するとはどういうことか?
私はこれで闯厂翱狈をやめました?あるいは础奥厂の设定をコード化するとはどういうことか?
Terui Masashi
?
Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行
recotech
?
Zaim 500万ユーザに向けて?Aurora 編?
Zaim 500万ユーザに向けて?Aurora 編?
Wataru Nishimoto
?
ついに解禁!Amazon Aurora徹底検証!
ついに解禁!Amazon Aurora徹底検証!
Terui Masashi
?
Zaim 500万ユーサ?に向けて
Zaim 500万ユーサ?に向けて
Wataru Nishimoto
?
Developers.IO 2017 MongoDB on AWS Advance
Developers.IO 2017 MongoDB on AWS Advance
Shuji Kikuchi
?
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
gree_tech
?
アメーバブログを支えるデータセンターとインフラ技术
アメーバブログを支えるデータセンターとインフラ技术
Hiroki NAKASHIMA
?
20160705 ふたつのAuroraクラスタを同期した話
20160705 ふたつのAuroraクラスタを同期した話
Wataru Nishimoto
?
20170210 jawsug横浜(AWSタグ)
20170210 jawsug横浜(AWSタグ)
Toshihiro Setojima
?
クラウドを活用した システム開発は適材適所
クラウドを活用した システム開発は適材適所
Kimihiko Kitase
?
20170126 広報LT大会 やったもん勝ち PR2017
20170126 広報LT大会 やったもん勝ち PR2017
Gyori Nagafuchi
?
AWS Summit Tokyo 2014_NTTデータセッション(前半:InfrastructureAsCode/ImmutableInfrastruc...
AWS Summit Tokyo 2014_NTTデータセッション(前半:InfrastructureAsCode/ImmutableInfrastruc...
Hinemos
?
Git hubenterpriseを導入してみて
Git hubenterpriseを導入してみて
recotech
?
趣味から始める奥别产スクレイピング
趣味から始める奥别产スクレイピング
treby
?
エンシ?ニアの情报収集
エンシ?ニアの情报収集
Takahiro Suzuki
?

More Related Content

What's hot (20)

jaws-ug kansai-special_aurora_20150207
jaws-ug kansai-special_aurora_20150207
Toshiyuki Konparu
?
#reco_tech AWSへ全面移行した今を話ます。
#reco_tech AWSへ全面移行した今を話ます。
recotech
?
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
Terui Masashi
?
Gcpug tokyo february 2016
Gcpug tokyo february 2016
Makoto Uehara
?
础耻谤辞谤补新时代の幕开けと顿测苍补尘辞顿叠の进化
础耻谤辞谤补新时代の幕开けと顿测苍补尘辞顿叠の进化
Classmethod,Inc.
?
#reco_tech Cloud searchでレコチョク検索の実現に向けて
#reco_tech Cloud searchでレコチョク検索の実現に向けて
recotech
?
私はこれで闯厂翱狈をやめました?あるいは础奥厂の设定をコード化するとはどういうことか?
私はこれで闯厂翱狈をやめました?あるいは础奥厂の设定をコード化するとはどういうことか?
Terui Masashi
?
Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行
recotech
?
Zaim 500万ユーザに向けて?Aurora 編?
Zaim 500万ユーザに向けて?Aurora 編?
Wataru Nishimoto
?
ついに解禁!Amazon Aurora徹底検証!
ついに解禁!Amazon Aurora徹底検証!
Terui Masashi
?
Zaim 500万ユーサ?に向けて
Zaim 500万ユーサ?に向けて
Wataru Nishimoto
?
Developers.IO 2017 MongoDB on AWS Advance
Developers.IO 2017 MongoDB on AWS Advance
Shuji Kikuchi
?
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
gree_tech
?
アメーバブログを支えるデータセンターとインフラ技术
アメーバブログを支えるデータセンターとインフラ技术
Hiroki NAKASHIMA
?
20160705 ふたつのAuroraクラスタを同期した話
20160705 ふたつのAuroraクラスタを同期した話
Wataru Nishimoto
?
20170210 jawsug横浜(AWSタグ)
20170210 jawsug横浜(AWSタグ)
Toshihiro Setojima
?
クラウドを活用した システム開発は適材適所
クラウドを活用した システム開発は適材適所
Kimihiko Kitase
?
20170126 広報LT大会 やったもん勝ち PR2017
20170126 広報LT大会 やったもん勝ち PR2017
Gyori Nagafuchi
?
AWS Summit Tokyo 2014_NTTデータセッション(前半:InfrastructureAsCode/ImmutableInfrastruc...
AWS Summit Tokyo 2014_NTTデータセッション(前半:InfrastructureAsCode/ImmutableInfrastruc...
Hinemos
?
Git hubenterpriseを導入してみて
Git hubenterpriseを導入してみて
recotech
?
jaws-ug kansai-special_aurora_20150207
jaws-ug kansai-special_aurora_20150207
Toshiyuki Konparu
?
#reco_tech AWSへ全面移行した今を話ます。
#reco_tech AWSへ全面移行した今を話ます。
recotech
?
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
[Deep Dive]Infra寄りのDevがお送りするRDS for Aurora徹底検証
Terui Masashi
?
Gcpug tokyo february 2016
Gcpug tokyo february 2016
Makoto Uehara
?
础耻谤辞谤补新时代の幕开けと顿测苍补尘辞顿叠の进化
础耻谤辞谤补新时代の幕开けと顿测苍补尘辞顿叠の进化
Classmethod,Inc.
?
#reco_tech Cloud searchでレコチョク検索の実現に向けて
#reco_tech Cloud searchでレコチョク検索の実現に向けて
recotech
?
私はこれで闯厂翱狈をやめました?あるいは础奥厂の设定をコード化するとはどういうことか?
私はこれで闯厂翱狈をやめました?あるいは础奥厂の设定をコード化するとはどういうことか?
Terui Masashi
?
Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行
recotech
?
Zaim 500万ユーザに向けて?Aurora 編?
Zaim 500万ユーザに向けて?Aurora 編?
Wataru Nishimoto
?
ついに解禁!Amazon Aurora徹底検証!
ついに解禁!Amazon Aurora徹底検証!
Terui Masashi
?
Zaim 500万ユーサ?に向けて
Zaim 500万ユーサ?に向けて
Wataru Nishimoto
?
Developers.IO 2017 MongoDB on AWS Advance
Developers.IO 2017 MongoDB on AWS Advance
Shuji Kikuchi
?
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
gree_tech
?
アメーバブログを支えるデータセンターとインフラ技术
アメーバブログを支えるデータセンターとインフラ技术
Hiroki NAKASHIMA
?
20160705 ふたつのAuroraクラスタを同期した話
20160705 ふたつのAuroraクラスタを同期した話
Wataru Nishimoto
?
20170210 jawsug横浜(AWSタグ)
20170210 jawsug横浜(AWSタグ)
Toshihiro Setojima
?
クラウドを活用した システム開発は適材適所
クラウドを活用した システム開発は適材適所
Kimihiko Kitase
?
20170126 広報LT大会 やったもん勝ち PR2017
20170126 広報LT大会 やったもん勝ち PR2017
Gyori Nagafuchi
?
AWS Summit Tokyo 2014_NTTデータセッション(前半:InfrastructureAsCode/ImmutableInfrastruc...
AWS Summit Tokyo 2014_NTTデータセッション(前半:InfrastructureAsCode/ImmutableInfrastruc...
Hinemos
?
Git hubenterpriseを導入してみて
Git hubenterpriseを導入してみて
recotech
?

Viewers also liked (20)

趣味から始める奥别产スクレイピング
趣味から始める奥别产スクレイピング
treby
?
エンシ?ニアの情报収集
エンシ?ニアの情报収集
Takahiro Suzuki
?
顿辞肠办别谤て?环境构筑したら捗った话
顿辞肠办别谤て?环境构筑したら捗った话
Kent Fujii
?
ニュースパスのクローラーアーキテクチャとマイクロサービス
ニュースパスのクローラーアーキテクチャとマイクロサービス
mosa siru
?
見やすいプレゼン資料の作り方 - リニューアル増量版
見やすいプレゼン資料の作り方 - リニューアル増量版
MOCKS | Yuta Morishige
?
础苍驳耻濒补谤闯厂で业务システム鲍滨部品化
础苍驳耻濒补谤闯厂で业务システム鲍滨部品化
Toshio Ehara
?
「らふらく镑镑」というブログについて
「らふらく镑镑」というブログについて
ariue123
?
【个人アカウントと蹿补肠别产辞辞办ページの违い】
【个人アカウントと蹿补肠别产辞辞办ページの违い】
zubuzubuo
?
人生が変わる人続出!あなたも参加できる滨罢コミュニティ活动
人生が変わる人続出!あなたも参加できる滨罢コミュニティ活动
法林浩之
?
次世代奥别产业务アフ?リケーション
次世代奥别产业务アフ?リケーション
Fumio SAGAWA
?
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
アシアル株式会社
?
厂厂贬力をつけよう
厂厂贬力をつけよう
(^-^) togakushi
?
jQuery Mobileではじめるモバイルサイト/アプリ制作
jQuery Mobileではじめるモバイルサイト/アプリ制作
yoshikawa_t
?
滨迟と幼児教育
滨迟と幼児教育
Tetsuya Ogawa
?
"Estimating Tree-Structured Covariance Matrices via Mixed-Integer Programming"
"Estimating Tree-Structured Covariance Matrices via Mixed-Integer Programming"
Momoko Hayamizu
?
滨迟と幼児教育PPT
滨迟と幼児教育PPT
Tetsuya Ogawa
?
システム监视のアラート大量発生を抑える窜补产产颈虫トリガー「依存関係」机能の绍介
システム监视のアラート大量発生を抑える窜补产产颈虫トリガー「依存関係」机能の绍介
Haruki Yamashita
?
狠狠撸share Japanese
狠狠撸share Japanese
Hidenori Goto
?
マイクロにしすぎた结果がこれだよ!
マイクロにしすぎた结果がこれだよ!
mosa siru
?
プログラマーのためのテスト手法
プログラマーのためのテスト手法
myukidi
?
趣味から始める奥别产スクレイピング
趣味から始める奥别产スクレイピング
treby
?
エンシ?ニアの情报収集
エンシ?ニアの情报収集
Takahiro Suzuki
?
顿辞肠办别谤て?环境构筑したら捗った话
顿辞肠办别谤て?环境构筑したら捗った话
Kent Fujii
?
ニュースパスのクローラーアーキテクチャとマイクロサービス
ニュースパスのクローラーアーキテクチャとマイクロサービス
mosa siru
?
見やすいプレゼン資料の作り方 - リニューアル増量版
見やすいプレゼン資料の作り方 - リニューアル増量版
MOCKS | Yuta Morishige
?
础苍驳耻濒补谤闯厂で业务システム鲍滨部品化
础苍驳耻濒补谤闯厂で业务システム鲍滨部品化
Toshio Ehara
?
「らふらく镑镑」というブログについて
「らふらく镑镑」というブログについて
ariue123
?
【个人アカウントと蹿补肠别产辞辞办ページの违い】
【个人アカウントと蹿补肠别产辞辞办ページの违い】
zubuzubuo
?
人生が変わる人続出!あなたも参加できる滨罢コミュニティ活动
人生が変わる人続出!あなたも参加できる滨罢コミュニティ活动
法林浩之
?
次世代奥别产业务アフ?リケーション
次世代奥别产业务アフ?リケーション
Fumio SAGAWA
?
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
AngularとOnsen UIで作る最高のHTML5ハイブリッドアプリ
アシアル株式会社
?
厂厂贬力をつけよう
厂厂贬力をつけよう
(^-^) togakushi
?
jQuery Mobileではじめるモバイルサイト/アプリ制作
jQuery Mobileではじめるモバイルサイト/アプリ制作
yoshikawa_t
?
"Estimating Tree-Structured Covariance Matrices via Mixed-Integer Programming"
"Estimating Tree-Structured Covariance Matrices via Mixed-Integer Programming"
Momoko Hayamizu
?
滨迟と幼児教育PPT
滨迟と幼児教育PPT
Tetsuya Ogawa
?
システム监视のアラート大量発生を抑える窜补产产颈虫トリガー「依存関係」机能の绍介
システム监视のアラート大量発生を抑える窜补产产颈虫トリガー「依存関係」机能の绍介
Haruki Yamashita
?
狠狠撸share Japanese
狠狠撸share Japanese
Hidenori Goto
?
マイクロにしすぎた结果がこれだよ!
マイクロにしすぎた结果がこれだよ!
mosa siru
?
プログラマーのためのテスト手法
プログラマーのためのテスト手法
myukidi
?
Ad

Similar to 5亿件以上の求人情报を蓄积する汎用クローラエンジンのアーキテクチャと运用 (20)

颁濒辞耻诲贬耻产のロク?ハ?ックアッフ?について
颁濒辞耻诲贬耻产のロク?ハ?ックアッフ?について
MuleSoft Meetup Tokyo
?
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
Amazon Web Services Japan
?
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
yuichi_komatsu
?
[Aws]database migration seminar_20191008
[Aws]database migration seminar_20191008
Toru Kimura
?
Microsoft MVP が語る Azure 移行の勘所
Microsoft MVP が語る Azure 移行の勘所
Tetsuya Odashima
?
厂辫濒耻苍办と各种ツールによる础奥厂の管理
厂辫濒耻苍办と各种ツールによる础奥厂の管理
kinunori
?
GAE + Spannerで目指せ No (Uncomfortable) Ops
GAE + Spannerで目指せ No (Uncomfortable) Ops
Miniascape
?
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要
Amazon Web Services Japan
?
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
理弘 山崎
?
【颁-2】メモリも、僕のキャパシティも溢れっぱなし。。2年目エンジニアが実现した机械学习
【颁-2】メモリも、僕のキャパシティも溢れっぱなし。。2年目エンジニアが実现した机械学习
Developers Summit
?
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
Amazon Web Services Japan
?
[AWS re:invent 2013 Report] AWS New EC2 Instance Types
[AWS re:invent 2013 Report] AWS New EC2 Instance Types
Amazon Web Services Japan
?
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
Daisuke Ikeda
?
オレ流クラウドデザイン
オレ流クラウドデザイン
Atsushi Kojima
?
クラウド骋笔厂(仮)
クラウド骋笔厂(仮)
terurou
?
20151024 Azureデータストア概要
20151024 Azureデータストア概要
Keiji Kamebuchi
?
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
Amazon Web Services Japan
?
はじめてのアマゾンウェブサービス @ JAWS DAYS 2014
はじめてのアマゾンウェブサービス @ JAWS DAYS 2014
Yasuhiro Horiuchi
?
颁濒辞耻诲贬耻产のロク?ハ?ックアッフ?について
颁濒辞耻诲贬耻产のロク?ハ?ックアッフ?について
MuleSoft Meetup Tokyo
?
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
20180613 AWS Black Belt Online Seminar AWS Cloud9 入門
Amazon Web Services Japan
?
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
Amazon Elastic MapReduceやSparkを中心とした社内の分析環境事例とTips
yuichi_komatsu
?
[Aws]database migration seminar_20191008
[Aws]database migration seminar_20191008
Toru Kimura
?
Microsoft MVP が語る Azure 移行の勘所
Microsoft MVP が語る Azure 移行の勘所
Tetsuya Odashima
?
厂辫濒耻苍办と各种ツールによる础奥厂の管理
厂辫濒耻苍办と各种ツールによる础奥厂の管理
kinunori
?
GAE + Spannerで目指せ No (Uncomfortable) Ops
GAE + Spannerで目指せ No (Uncomfortable) Ops
Miniascape
?
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要
20190730 AWS Black Belt Online Seminar Amazon CloudFrontの概要
Amazon Web Services Japan
?
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
Amazon EKS上の開発体験を最大化するプレビュー環境の作り方
理弘 山崎
?
【颁-2】メモリも、僕のキャパシティも溢れっぱなし。。2年目エンジニアが実现した机械学习
【颁-2】メモリも、僕のキャパシティも溢れっぱなし。。2年目エンジニアが実现した机械学习
Developers Summit
?
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
[PGConf.ASIA 2018]Deep Dive on Amazon Aurora with PostgreSQL Compatibility
Amazon Web Services Japan
?
[AWS re:invent 2013 Report] AWS New EC2 Instance Types
[AWS re:invent 2013 Report] AWS New EC2 Instance Types
Amazon Web Services Japan
?
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
JobScheduler ユーザカンファレンス 2016 東京日産コンピュータシステム様 事例紹介
Daisuke Ikeda
?
オレ流クラウドデザイン
オレ流クラウドデザイン
Atsushi Kojima
?
クラウド骋笔厂(仮)
クラウド骋笔厂(仮)
terurou
?
20151024 Azureデータストア概要
20151024 Azureデータストア概要
Keiji Kamebuchi
?
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
20180508 AWS Black Belt Online Seminar AWS Greengrassで実現するエッジコンピューティング
Amazon Web Services Japan
?
はじめてのアマゾンウェブサービス @ JAWS DAYS 2014
はじめてのアマゾンウェブサービス @ JAWS DAYS 2014
Yasuhiro Horiuchi
?
Ad

5亿件以上の求人情报を蓄积する汎用クローラエンジンのアーキテクチャと运用

  • 1. ? Goalist Co.,Ltd. All rights reserved. 5億件以上の求人情報を蓄積する 汎用クローラエンジンのアーキテクチャと運用 株式会社ゴーリスト 鈴木 隆宏 2016/08/21 #crawler_ops
  • 2. ? Goalist Co.,Ltd. All rights reserved. INDEX 1.自己紹介 2.会社紹介 3.クロール基盤 概要 4.クロール基盤 アーキテクチャ 5.クロール基盤 運用 6.今後の課題 2
  • 3. ? Goalist Co.,Ltd. All rights reserved. 自己紹介 3
  • 4. ? Goalist Co.,Ltd. All rights reserved. 名前 - 鈴木 隆宏(すーざん、すずたか、@_suzutt) 経歴 - 2016年6月にゴーリストに入社 - クローラ保守?運用 - Webサービス開発 - 以前はERPパッケージベンダーでパッケージ開発?保守 4
  • 5. ? Goalist Co.,Ltd. All rights reserved. 会社紹介 5
  • 6. ? Goalist Co.,Ltd. All rights reserved. 社名 株式会社ゴーリスト(Goalist Co.,Ltd) 住所 東京都千代田区神田須田町1‐18 アーバンスクエア神田ビル2階 設立 2011年1月5日 資本金 1,000 万円 役員 代表取締役 CEO 加藤 龍 取締役 CTO 入倉 康輔 取締役 COO 林 慶宗 事業内容 Airbnb?民泊運用データ分析?提供サービス「BnBInsight」 求人マーケットの戦略立案に特化した3C分析サービス「3Chart」 アポイントの獲得支援に特化したテレアポ管理ツール「KeyTalk」 高精度営業リスト生成ツール「Listlus」 求人情報アラートサービス「Reagle」 HRに特化したデータベース&ニュースメディア「HRog」 6
  • 7. ? Goalist Co.,Ltd. All rights reserved. クロールの目的は? 7
  • 8. ? Goalist Co.,Ltd. All rights reserved.8
  • 9. ? Goalist Co.,Ltd. All rights reserved. 求人データ集計サービス 9
  • 10. ? Goalist Co.,Ltd. All rights reserved. 人材業界向けオウンドメディア 10
  • 11. ? Goalist Co.,Ltd. All rights reserved. 民泊データ分析 11
  • 12. ? Goalist Co.,Ltd. All rights reserved. 導入企業様(一部抜粋) 東京大学 100社を超える人材会社や、事業会社の採用担当者、研究機関にご利用いただいております。 12
  • 13. ? Goalist Co.,Ltd. All rights reserved. 取得サイト数 約150サイト サービスを支える独自クロール基盤 取得総件数 5億件超 月間取得求人件数 2,000万件 稼働中サーバー台数 160台 マスタDB件数 900万件 最大取得項目数 50項目 13
  • 14. ? Goalist Co.,Ltd. All rights reserved.14 サービスを支える独自クロール基盤
  • 15. ? Goalist Co.,Ltd. All rights reserved. ここから本題 15
  • 16. ? Goalist Co.,Ltd. All rights reserved. クロール基盤 概要 16
  • 17. ? Goalist Co.,Ltd. All rights reserved. クロール基盤開発の主要件 17
  • 18. ? Goalist Co.,Ltd. All rights reserved. 18
  • 19. ? Goalist Co.,Ltd. All rights reserved. few people 19
  • 20. ? Goalist Co.,Ltd. All rights reserved. クロール基盤開発の主要件 1. 最小限の開発?運用工数で多くの求人媒体に対応すること 2. エンジニア以外のメンバーでも運用可能であること 20
  • 21. ? Goalist Co.,Ltd. All rights reserved. HOW? 21
  • 22. ? Goalist Co.,Ltd. All rights reserved. サイトごとに異なるクロール?スクレイプ処理のルールを 設定により吸収する方式を採用 22
  • 23. ? Goalist Co.,Ltd. All rights reserved. 1つのエンジン(=ソースコード) 23
  • 24. ? Goalist Co.,Ltd. All rights reserved. 媒体ごとに設定ファイル 24
  • 25. ? Goalist Co.,Ltd. All rights reserved. 設定ファイルとEC2インスタンスの用意のみで 様々な求人サイトへ対応可能 EC2 instance config files 25
  • 26. ? Goalist Co.,Ltd. All rights reserved. プログラミング不要 エンジニアではないメンバーでも取得が可能 26
  • 27. ? Goalist Co.,Ltd. All rights reserved. クロール基盤 アーキテクチャ 27
  • 28. ? Goalist Co.,Ltd. All rights reserved. EC2 instance contents jar scraped files Amazon S3 ? ? ? start Amazon RDS job results config files 28 scheduler
  • 29. ? Goalist Co.,Ltd. All rights reserved. EC2 instance contents jar ??? scraped files Amazon S3 ? ? ? scheduler start Amazon RDS job results config files 29
  • 30. ? Goalist Co.,Ltd. All rights reserved. Amazon S3 ? ? ? Amazon Redshift 30 format & deliver
  • 31. ? Goalist Co.,Ltd. All rights reserved. 言語 Java(JSoup/WebDriver) 運用規模 150サイト/160EC2インスタンス S3容量 約8TB AWS運用コスト 約20万円/月 運用工数 約20h/週 31
  • 32. ? Goalist Co.,Ltd. All rights reserved. AWSを徹底利用 AWS Lambda Amazon EC2 Amazon S3 Amazon CloudFront Amazon DynamoDB Amazon Redshift Amazon API Gateway Amazon RDS 32
  • 33. ? Goalist Co.,Ltd. All rights reserved. クロール基盤 運用 33
  • 34. ? Goalist Co.,Ltd. All rights reserved. クロール設定ファイルについて 34
  • 35. ? Goalist Co.,Ltd. All rights reserved. 「検索結果ページ」と「詳細ページ」からなる サイトのクロールに特化 35
  • 36. ? Goalist Co.,Ltd. All rights reserved.36 検索結果ページ 詳細ページ
  • 37. ? Goalist Co.,Ltd. All rights reserved. 設定する内容 1.ページングルール 2.詳細ページのURL取得ルール 37
  • 38. ? Goalist Co.,Ltd. All rights reserved. ページングルール 38 https://www.google.co.jp/#q=goalist&page=1 https://www.google.co.jp/#q=goalist&page=2 1ページ目 2ページ目 ※URLは架空です。
  • 39. ? Goalist Co.,Ltd. All rights reserved. ページングルール 39 300 件 (0.30 秒) #resultStats 1ページあたり3件の 詳細ページURL
  • 40. ? Goalist Co.,Ltd. All rights reserved. 詳細ページのURL取得ルール 40 div.g > div:nth-child(1) > h3:nth-child(1) > a:nth-child(1)
  • 41. ? Goalist Co.,Ltd. All rights reserved. nextPagePreStr=&page= nextPagePostStr= searchResultCountSelector=#resultStats searchResultCountPreStr= searchResultCountPostStr=件 searchResultCountByPage=3 detailPageUrlSelector=div.g >div:nth-child(1) > h3:nth-child(1) > a:nth-child(1) 41 ページングルール 詳細ページのURLルー ル 設定ファイル例
  • 42. ? Goalist Co.,Ltd. All rights reserved. サイト改変があった場合、設定ファイルのみ修正すればOK 42
  • 43. ? Goalist Co.,Ltd. All rights reserved. 非エンジニアでも運用可能 43
  • 44. ? Goalist Co.,Ltd. All rights reserved. スクレイプについても同様 (`?ω?? )??? 44
  • 45. ? Goalist Co.,Ltd. All rights reserved. 運用のポイント 45
  • 46. ? Goalist Co.,Ltd. All rights reserved. 運用コストの最小化 インスタンス起動と同時にクロール開始 取得が終わると自動で停止 46
  • 47. ? Goalist Co.,Ltd. All rights reserved. サイト改変に素早く対応 ジョブ実行結果をChatWorkに随時通知 Amazon EC2 47
  • 48. ? Goalist Co.,Ltd. All rights reserved. 2ヶ月間、運用してみた感想 48
  • 49. ? Goalist Co.,Ltd. All rights reserved. ノンプラグラミングでクロールできるため、 サイト改変対応が楽 49 ◎
  • 50. ? Goalist Co.,Ltd. All rights reserved. ある程度のWeb知識があれば、2,3週間くらいで、 ほぼ一人で運用できるようになる 50 ◎
  • 51. ? Goalist Co.,Ltd. All rights reserved. サイトによっては設定のみで スクレイプするのは辛い (繰り返し処理、条件分岐の設定も追加したい) 51 △
  • 52. ? Goalist Co.,Ltd. All rights reserved. 設定ファイル変更のたびに インスタンスを起動するのが少し面倒 52 △
  • 53. ? Goalist Co.,Ltd. All rights reserved. 今後の課題 53
  • 54. ? Goalist Co.,Ltd. All rights reserved. 汎用化 データの高精度化 54
  • 55. ? Goalist Co.,Ltd. All rights reserved. インフラ構成の汎用化 55
  • 56. ? Goalist Co.,Ltd. All rights reserved. 管理画面の追加 56
  • 57. ? Goalist Co.,Ltd. All rights reserved. 動的ページのクロール汎用化 57
  • 58. ? Goalist Co.,Ltd. All rights reserved. より汎用的なサイト構造に対応するクローラエンジンへ 58
  • 59. ? Goalist Co.,Ltd. All rights reserved. 文字列処理(自然言語処理)の精度向上、機械学習の採用 59
  • 60. ? Goalist Co.,Ltd. All rights reserved. 次期バージョンのクローラ開発へ より汎用的で、誰もが簡単に利用できる クローラを作りたい... 60
  • 61. ? Goalist Co.,Ltd. All rights reserved. 新領域のビックデータサービスを 開発してくれるエンジニアを絶賛募集中です! 開発エンジニア絶賛募集中! 61
  • 62. ? Goalist Co.,Ltd. All rights reserved. Thanks for your attention! 62